| author | |
| committer | |
| log | 798207ec80c0e0092eb85325921c7656fe4c268d |
| tree | a4a23aaba8897e035b2e1aa719043832ea0a92c9 |
| parent | ea32a7d2bc395b268e7e5be4fccb3cdb91233e78 |
| parent | ab05766674b88dc7715d27f7d590d6832ee005ca |
109 files changed, 4205 insertions(+), 702 deletions(-)
.gitattributes+11-9| ... | ... | @@ -1,9 +1,11 @@ |
| 1 | *.zig text eol=lf | |
| 2 | *.txt text eol=lf | |
| 3 | langref.html.in text eol=lf | |
| 4 | ||
| 5 | deps/* linguist-vendored | |
| 6 | lib/include/* linguist-vendored | |
| 7 | lib/libc/* linguist-vendored | |
| 8 | lib/libcxx/* linguist-vendored | |
| 9 | lib/libunwind/* linguist-vendored | |
| 1 | *.zig text eol=lf | |
| 2 | *.txt text eol=lf | |
| 3 | langref.html.in text eol=lf | |
| 4 | deps/SoftFloat-3e/*.txt text eol=crlf | |
| 5 | ||
| 6 | deps/* linguist-vendored | |
| 7 | lib/include/* linguist-vendored | |
| 8 | lib/libc/* linguist-vendored | |
| 9 | lib/libcxx/* linguist-vendored | |
| 10 | lib/libcxxabi/* linguist-vendored | |
| 11 | lib/libunwind/* linguist-vendored |
CMakeLists.txt+4-8| ... | ... | @@ -303,9 +303,10 @@ set(LIBC_FILES_DEST "${ZIG_LIB_DIR}/libc") |
| 303 | 303 | set(LIBUNWIND_FILES_DEST "${ZIG_LIB_DIR}/libunwind") |
| 304 | 304 | set(LIBCXX_FILES_DEST "${ZIG_LIB_DIR}/libcxx") |
| 305 | 305 | set(ZIG_STD_DEST "${ZIG_LIB_DIR}/std") |
| 306 | set(ZIG_CONFIG_H_OUT "${CMAKE_BINARY_DIR}/config.h") | |
| 306 | 307 | configure_file ( |
| 307 | 308 | "${CMAKE_SOURCE_DIR}/src/config.h.in" |
| 308 | "${CMAKE_BINARY_DIR}/config.h" | |
| 309 | "${ZIG_CONFIG_H_OUT}" | |
| 309 | 310 | ) |
| 310 | 311 | |
| 311 | 312 | include_directories( |
| ... | ... | @@ -364,7 +365,7 @@ if(ZIG_STATIC) |
| 364 | 365 | endif() |
| 365 | 366 | else() |
| 366 | 367 | if(MINGW) |
| 367 | set(EXE_LDFLAGS "${EXE_LDFLAGS} -lz3") | |
| 368 | set(EXE_LDFLAGS "${EXE_LDFLAGS}") | |
| 368 | 369 | endif() |
| 369 | 370 | endif() |
| 370 | 371 | |
| ... | ... | @@ -428,11 +429,6 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") |
| 428 | 429 | else() |
| 429 | 430 | set(LIBSTAGE2_RELEASE_ARG --release-fast --strip) |
| 430 | 431 | endif() |
| 431 | if(WIN32) | |
| 432 | set(LIBSTAGE2_WINDOWS_ARGS "-lntdll") | |
| 433 | else() | |
| 434 | set(LIBSTAGE2_WINDOWS_ARGS "") | |
| 435 | endif() | |
| 436 | 432 | |
| 437 | 433 | set(BUILD_LIBSTAGE2_ARGS "build-lib" |
| 438 | 434 | "src-self-hosted/stage2.zig" |
| ... | ... | @@ -446,7 +442,6 @@ set(BUILD_LIBSTAGE2_ARGS "build-lib" |
| 446 | 442 | --bundle-compiler-rt |
| 447 | 443 | -fPIC |
| 448 | 444 | -lc |
| 449 | ${LIBSTAGE2_WINDOWS_ARGS} | |
| 450 | 445 | ) |
| 451 | 446 | |
| 452 | 447 | if("${ZIG_TARGET_TRIPLE}" STREQUAL "native") |
| ... | ... | @@ -485,6 +480,7 @@ set(ZIG_INSTALL_ARGS "build" |
| 485 | 480 | --override-lib-dir "${CMAKE_SOURCE_DIR}/lib" |
| 486 | 481 | "-Dlib-files-only" |
| 487 | 482 | --prefix "${CMAKE_INSTALL_PREFIX}" |
| 483 | "-Dconfig_h=${ZIG_CONFIG_H_OUT}" | |
| 488 | 484 | install |
| 489 | 485 | ) |
| 490 | 486 |
build.zig+105-39| ... | ... | @@ -34,23 +34,14 @@ pub fn build(b: *Builder) !void { |
| 34 | 34 | |
| 35 | 35 | const test_step = b.step("test", "Run all the tests"); |
| 36 | 36 | |
| 37 | // find the stage0 build artifacts because we're going to re-use config.h and zig_cpp library | |
| 38 | const build_info = try b.exec(&[_][]const u8{ | |
| 39 | b.zig_exe, | |
| 40 | "BUILD_INFO", | |
| 41 | }); | |
| 42 | var index: usize = 0; | |
| 43 | var ctx = Context{ | |
| 44 | .cmake_binary_dir = nextValue(&index, build_info), | |
| 45 | .cxx_compiler = nextValue(&index, build_info), | |
| 46 | .llvm_config_exe = nextValue(&index, build_info), | |
| 47 | .lld_include_dir = nextValue(&index, build_info), | |
| 48 | .lld_libraries = nextValue(&index, build_info), | |
| 49 | .clang_libraries = nextValue(&index, build_info), | |
| 50 | .dia_guids_lib = nextValue(&index, build_info), | |
| 51 | .llvm = undefined, | |
| 52 | }; | |
| 53 | ctx.llvm = try findLLVM(b, ctx.llvm_config_exe); | |
| 37 | const config_h_text = if (b.option( | |
| 38 | []const u8, | |
| 39 | "config_h", | |
| 40 | "Path to the generated config.h", | |
| 41 | )) |config_h_path| | |
| 42 | try std.fs.cwd().readFileAlloc(b.allocator, toNativePathSep(b, config_h_path), max_config_h_bytes) | |
| 43 | else | |
| 44 | try findAndReadConfigH(b); | |
| 54 | 45 | |
| 55 | 46 | var test_stage2 = b.addTest("src-self-hosted/test.zig"); |
| 56 | 47 | test_stage2.setBuildMode(builtin.Mode.Debug); |
| ... | ... | @@ -61,9 +52,6 @@ pub fn build(b: *Builder) !void { |
| 61 | 52 | var exe = b.addExecutable("zig", "src-self-hosted/main.zig"); |
| 62 | 53 | exe.setBuildMode(mode); |
| 63 | 54 | |
| 64 | try configureStage2(b, test_stage2, ctx); | |
| 65 | try configureStage2(b, exe, ctx); | |
| 66 | ||
| 67 | 55 | const skip_release = b.option(bool, "skip-release", "Main test suite skips release builds") orelse false; |
| 68 | 56 | const skip_release_small = b.option(bool, "skip-release-small", "Main test suite skips release-small builds") orelse skip_release; |
| 69 | 57 | const skip_release_fast = b.option(bool, "skip-release-fast", "Main test suite skips release-fast builds") orelse skip_release; |
| ... | ... | @@ -77,6 +65,12 @@ pub fn build(b: *Builder) !void { |
| 77 | 65 | |
| 78 | 66 | const only_install_lib_files = b.option(bool, "lib-files-only", "Only install library files") orelse false; |
| 79 | 67 | if (!only_install_lib_files and !skip_self_hosted) { |
| 68 | var ctx = parseConfigH(b, config_h_text); | |
| 69 | ctx.llvm = try findLLVM(b, ctx.llvm_config_exe); | |
| 70 | ||
| 71 | try configureStage2(b, test_stage2, ctx); | |
| 72 | try configureStage2(b, exe, ctx); | |
| 73 | ||
| 80 | 74 | b.default_step.dependOn(&exe.step); |
| 81 | 75 | exe.install(); |
| 82 | 76 | } |
| ... | ... | @@ -262,25 +256,6 @@ fn findLLVM(b: *Builder, llvm_config_exe: []const u8) !LibraryDep { |
| 262 | 256 | return result; |
| 263 | 257 | } |
| 264 | 258 | |
| 265 | fn nextValue(index: *usize, build_info: []const u8) []const u8 { | |
| 266 | const start = index.*; | |
| 267 | while (true) : (index.* += 1) { | |
| 268 | switch (build_info[index.*]) { | |
| 269 | '\n' => { | |
| 270 | const result = build_info[start..index.*]; | |
| 271 | index.* += 1; | |
| 272 | return result; | |
| 273 | }, | |
| 274 | '\r' => { | |
| 275 | const result = build_info[start..index.*]; | |
| 276 | index.* += 2; | |
| 277 | return result; | |
| 278 | }, | |
| 279 | else => continue, | |
| 280 | } | |
| 281 | } | |
| 282 | } | |
| 283 | ||
| 284 | 259 | fn configureStage2(b: *Builder, exe: var, ctx: Context) !void { |
| 285 | 260 | exe.addIncludeDir("src"); |
| 286 | 261 | exe.addIncludeDir(ctx.cmake_binary_dir); |
| ... | ... | @@ -376,3 +351,94 @@ const Context = struct { |
| 376 | 351 | dia_guids_lib: []const u8, |
| 377 | 352 | llvm: LibraryDep, |
| 378 | 353 | }; |
| 354 | ||
| 355 | const max_config_h_bytes = 1 * 1024 * 1024; | |
| 356 | ||
| 357 | fn findAndReadConfigH(b: *Builder) ![]const u8 { | |
| 358 | var check_dir = fs.path.dirname(b.zig_exe).?; | |
| 359 | while (true) { | |
| 360 | var dir = try fs.cwd().openDir(check_dir, .{}); | |
| 361 | defer dir.close(); | |
| 362 | ||
| 363 | const config_h_text = dir.readFileAlloc(b.allocator, "config.h", max_config_h_bytes) catch |err| switch (err) { | |
| 364 | error.FileNotFound => { | |
| 365 | const new_check_dir = fs.path.dirname(check_dir); | |
| 366 | if (new_check_dir == null or mem.eql(u8, new_check_dir.?, check_dir)) { | |
| 367 | std.debug.warn("Unable to find config.h file relative to Zig executable.\n", .{}); | |
| 368 | std.debug.warn("`zig build` must be run using a Zig executable within the source tree.\n", .{}); | |
| 369 | std.process.exit(1); | |
| 370 | } | |
| 371 | check_dir = new_check_dir.?; | |
| 372 | continue; | |
| 373 | }, | |
| 374 | else => |e| return e, | |
| 375 | }; | |
| 376 | return config_h_text; | |
| 377 | } else unreachable; // TODO should not need `else unreachable`. | |
| 378 | } | |
| 379 | ||
| 380 | fn parseConfigH(b: *Builder, config_h_text: []const u8) Context { | |
| 381 | var ctx: Context = .{ | |
| 382 | .cmake_binary_dir = undefined, | |
| 383 | .cxx_compiler = undefined, | |
| 384 | .llvm_config_exe = undefined, | |
| 385 | .lld_include_dir = undefined, | |
| 386 | .lld_libraries = undefined, | |
| 387 | .clang_libraries = undefined, | |
| 388 | .dia_guids_lib = undefined, | |
| 389 | .llvm = undefined, | |
| 390 | }; | |
| 391 | ||
| 392 | const mappings = [_]struct { prefix: []const u8, field: []const u8 }{ | |
| 393 | .{ | |
| 394 | .prefix = "#define ZIG_CMAKE_BINARY_DIR ", | |
| 395 | .field = "cmake_binary_dir", | |
| 396 | }, | |
| 397 | .{ | |
| 398 | .prefix = "#define ZIG_CXX_COMPILER ", | |
| 399 | .field = "cxx_compiler", | |
| 400 | }, | |
| 401 | .{ | |
| 402 | .prefix = "#define ZIG_LLD_INCLUDE_PATH ", | |
| 403 | .field = "lld_include_dir", | |
| 404 | }, | |
| 405 | .{ | |
| 406 | .prefix = "#define ZIG_LLD_LIBRARIES ", | |
| 407 | .field = "lld_libraries", | |
| 408 | }, | |
| 409 | .{ | |
| 410 | .prefix = "#define ZIG_CLANG_LIBRARIES ", | |
| 411 | .field = "clang_libraries", | |
| 412 | }, | |
| 413 | .{ | |
| 414 | .prefix = "#define ZIG_LLVM_CONFIG_EXE ", | |
| 415 | .field = "llvm_config_exe", | |
| 416 | }, | |
| 417 | .{ | |
| 418 | .prefix = "#define ZIG_DIA_GUIDS_LIB ", | |
| 419 | .field = "dia_guids_lib", | |
| 420 | }, | |
| 421 | }; | |
| 422 | ||
| 423 | var lines_it = mem.tokenize(config_h_text, "\r\n"); | |
| 424 | while (lines_it.next()) |line| { | |
| 425 | inline for (mappings) |mapping| { | |
| 426 | if (mem.startsWith(u8, line, mapping.prefix)) { | |
| 427 | var it = mem.split(line, "\""); | |
| 428 | _ = it.next().?; // skip the stuff before the quote | |
| 429 | const quoted = it.next().?; // the stuff inside the quote | |
| 430 | @field(ctx, mapping.field) = toNativePathSep(b, quoted); | |
| 431 | } | |
| 432 | } | |
| 433 | } | |
| 434 | return ctx; | |
| 435 | } | |
| 436 | ||
| 437 | fn toNativePathSep(b: *Builder, s: []const u8) []u8 { | |
| 438 | const duplicated = mem.dupe(b.allocator, u8, s) catch unreachable; | |
| 439 | for (duplicated) |*byte| switch (byte.*) { | |
| 440 | '/' => byte.* = fs.path.sep, | |
| 441 | else => {}, | |
| 442 | }; | |
| 443 | return duplicated; | |
| 444 | } |
cmake/Findllvm.cmake+1-4| ... | ... | @@ -144,9 +144,7 @@ else() |
| 144 | 144 | /mingw64/lib |
| 145 | 145 | /c/msys64/mingw64/lib |
| 146 | 146 | c:\\msys64\\mingw64\\lib) |
| 147 | if(LLVM_${_prettylibname_}_LIB) | |
| 148 | set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_${_prettylibname_}_LIB}) | |
| 149 | endif() | |
| 147 | set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_${_prettylibname_}_LIB}) | |
| 150 | 148 | endmacro(FIND_AND_ADD_LLVM_LIB) |
| 151 | 149 | |
| 152 | 150 | # This list can be re-generated with `llvm-config --libfiles` and then |
| ... | ... | @@ -154,7 +152,6 @@ else() |
| 154 | 152 | # `llvm-config` here because we are cross compiling. |
| 155 | 153 | FIND_AND_ADD_LLVM_LIB(LLVMXRay) |
| 156 | 154 | FIND_AND_ADD_LLVM_LIB(LLVMWindowsManifest) |
| 157 | FIND_AND_ADD_LLVM_LIB(LLVMTableGen) | |
| 158 | 155 | FIND_AND_ADD_LLVM_LIB(LLVMSymbolize) |
| 159 | 156 | FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoPDB) |
| 160 | 157 | FIND_AND_ADD_LLVM_LIB(LLVMOrcJIT) |
lib/libc/glibc/abi.txt+90| ... | ... | @@ -1856,6 +1856,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu |
| 1856 | 1856 | 29 |
| 1857 | 1857 | 29 |
| 1858 | 1858 | 29 |
| 1859 | 29 | |
| 1859 | 1860 | 37 |
| 1860 | 1861 | 37 |
| 1861 | 1862 | 37 |
| ... | ... | @@ -2422,6 +2423,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu |
| 2422 | 2423 | 29 |
| 2423 | 2424 | 29 |
| 2424 | 2425 | 29 |
| 2426 | 29 | |
| 2427 | 29 | |
| 2428 | 29 | |
| 2429 | 29 | |
| 2425 | 2430 | 37 |
| 2426 | 2431 | 37 |
| 2427 | 2432 | 37 |
| ... | ... | @@ -2625,6 +2630,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu |
| 2625 | 2630 | 29 |
| 2626 | 2631 | 29 |
| 2627 | 2632 | 29 |
| 2633 | 29 | |
| 2628 | 2634 | |
| 2629 | 2635 | |
| 2630 | 2636 | |
| ... | ... | @@ -5572,6 +5578,7 @@ s390x-linux-gnu |
| 5572 | 5578 | 5 |
| 5573 | 5579 | 5 |
| 5574 | 5580 | 5 |
| 5581 | 5 | |
| 5575 | 5582 | 5 16 |
| 5576 | 5583 | 5 |
| 5577 | 5584 | 5 |
| ... | ... | @@ -6151,7 +6158,11 @@ s390x-linux-gnu |
| 6151 | 6158 | 37 |
| 6152 | 6159 | 37 |
| 6153 | 6160 | 37 |
| 6161 | 5 | |
| 6162 | 5 | |
| 6154 | 6163 | 5 16 |
| 6164 | 5 | |
| 6165 | 5 | |
| 6155 | 6166 | 31 5 |
| 6156 | 6167 | 5 |
| 6157 | 6168 | 5 |
| ... | ... | @@ -6361,6 +6372,7 @@ s390x-linux-gnu |
| 6361 | 6372 | 5 |
| 6362 | 6373 | 5 |
| 6363 | 6374 | 5 |
| 6375 | 5 | |
| 6364 | 6376 | |
| 6365 | 6377 | |
| 6366 | 6378 | |
| ... | ... | @@ -9328,6 +9340,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf |
| 9328 | 9340 | 16 |
| 9329 | 9341 | 16 |
| 9330 | 9342 | 16 |
| 9343 | 16 | |
| 9331 | 9344 | |
| 9332 | 9345 | 37 |
| 9333 | 9346 | 37 |
| ... | ... | @@ -9894,6 +9907,10 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf |
| 9894 | 9907 | 16 |
| 9895 | 9908 | 16 |
| 9896 | 9909 | 16 |
| 9910 | 16 | |
| 9911 | 16 | |
| 9912 | 16 | |
| 9913 | 16 | |
| 9897 | 9914 | |
| 9898 | 9915 | 37 |
| 9899 | 9916 | 37 |
| ... | ... | @@ -10108,6 +10125,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf |
| 10108 | 10125 | 16 |
| 10109 | 10126 | 16 |
| 10110 | 10127 | 16 |
| 10128 | 16 | |
| 10111 | 10129 | 21 |
| 10112 | 10130 | 16 |
| 10113 | 10131 | 37 |
| ... | ... | @@ -13044,6 +13062,7 @@ sparc-linux-gnu sparcel-linux-gnu |
| 13044 | 13062 | 0 5 |
| 13045 | 13063 | 0 |
| 13046 | 13064 | 0 |
| 13065 | 0 | |
| 13047 | 13066 | 0 16 |
| 13048 | 13067 | 0 |
| 13049 | 13068 | 0 |
| ... | ... | @@ -13623,10 +13642,14 @@ sparc-linux-gnu sparcel-linux-gnu |
| 13623 | 13642 | 37 |
| 13624 | 13643 | 37 |
| 13625 | 13644 | 37 |
| 13645 | 0 | |
| 13646 | 0 | |
| 13626 | 13647 | 0 16 |
| 13627 | 13648 | 0 |
| 13628 | 13649 | 0 |
| 13629 | 13650 | 0 |
| 13651 | 0 | |
| 13652 | 0 | |
| 13630 | 13653 | 12 |
| 13631 | 13654 | 1 |
| 13632 | 13655 | 1 |
| ... | ... | @@ -13833,6 +13856,7 @@ sparc-linux-gnu sparcel-linux-gnu |
| 13833 | 13856 | 0 |
| 13834 | 13857 | 0 |
| 13835 | 13858 | 0 |
| 13859 | 0 | |
| 13836 | 13860 | |
| 13837 | 13861 | |
| 13838 | 13862 | |
| ... | ... | @@ -16779,6 +16803,7 @@ sparcv9-linux-gnu |
| 16779 | 16803 | 5 |
| 16780 | 16804 | 5 |
| 16781 | 16805 | 5 |
| 16806 | 0 | |
| 16782 | 16807 | 5 |
| 16783 | 16808 | 5 |
| 16784 | 16809 | 5 |
| ... | ... | @@ -17359,7 +17384,11 @@ sparcv9-linux-gnu |
| 17359 | 17384 | 37 |
| 17360 | 17385 | 37 |
| 17361 | 17386 | 37 |
| 17387 | 0 | |
| 17388 | 0 | |
| 17362 | 17389 | 5 |
| 17390 | 0 | |
| 17391 | 0 | |
| 17363 | 17392 | 5 |
| 17364 | 17393 | 5 |
| 17365 | 17394 | 5 |
| ... | ... | @@ -17565,6 +17594,7 @@ sparcv9-linux-gnu |
| 17565 | 17594 | 16 |
| 17566 | 17595 | 5 |
| 17567 | 17596 | 5 |
| 17597 | 0 | |
| 17568 | 17598 | 5 |
| 17569 | 17599 | 5 |
| 17570 | 17600 | 5 |
| ... | ... | @@ -20520,6 +20550,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64 |
| 20520 | 20550 | 0 |
| 20521 | 20551 | 0 |
| 20522 | 20552 | 0 |
| 20553 | 0 | |
| 20523 | 20554 | 5 |
| 20524 | 20555 | 5 |
| 20525 | 20556 | 5 |
| ... | ... | @@ -21099,6 +21130,10 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64 |
| 21099 | 21130 | 0 |
| 21100 | 21131 | 0 |
| 21101 | 21132 | 0 |
| 21133 | 0 | |
| 21134 | 0 | |
| 21135 | 0 | |
| 21136 | 0 | |
| 21102 | 21137 | 12 |
| 21103 | 21138 | 5 |
| 21104 | 21139 | 5 |
| ... | ... | @@ -21305,6 +21340,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64 |
| 21305 | 21340 | 0 |
| 21306 | 21341 | 0 |
| 21307 | 21342 | 0 |
| 21343 | 0 | |
| 21308 | 21344 | |
| 21309 | 21345 | |
| 21310 | 21346 | |
| ... | ... | @@ -24256,6 +24292,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32 |
| 24256 | 24292 | 0 |
| 24257 | 24293 | 0 |
| 24258 | 24294 | 0 |
| 24295 | 0 | |
| 24259 | 24296 | 5 |
| 24260 | 24297 | 5 |
| 24261 | 24298 | 5 |
| ... | ... | @@ -24835,6 +24872,10 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32 |
| 24835 | 24872 | 0 |
| 24836 | 24873 | 0 |
| 24837 | 24874 | 0 |
| 24875 | 0 | |
| 24876 | 0 | |
| 24877 | 0 | |
| 24878 | 0 | |
| 24838 | 24879 | 12 |
| 24839 | 24880 | 5 |
| 24840 | 24881 | 5 |
| ... | ... | @@ -25041,6 +25082,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32 |
| 25041 | 25082 | 0 |
| 25042 | 25083 | 0 |
| 25043 | 25084 | 0 |
| 25085 | 0 | |
| 25044 | 25086 | |
| 25045 | 25087 | |
| 25046 | 25088 | |
| ... | ... | @@ -27992,6 +28034,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf |
| 27992 | 28034 | 0 |
| 27993 | 28035 | 0 |
| 27994 | 28036 | 0 |
| 28037 | 0 | |
| 27995 | 28038 | 5 |
| 27996 | 28039 | 5 |
| 27997 | 28040 | 5 |
| ... | ... | @@ -28567,6 +28610,10 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf |
| 28567 | 28610 | 37 |
| 28568 | 28611 | 37 |
| 28569 | 28612 | |
| 28613 | 0 | |
| 28614 | 0 | |
| 28615 | 0 | |
| 28616 | 0 | |
| 28570 | 28617 | 0 |
| 28571 | 28618 | 0 |
| 28572 | 28619 | 0 |
| ... | ... | @@ -28777,6 +28824,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf |
| 28777 | 28824 | 0 |
| 28778 | 28825 | 0 |
| 28779 | 28826 | 0 |
| 28827 | 0 | |
| 28780 | 28828 | |
| 28781 | 28829 | |
| 28782 | 28830 | |
| ... | ... | @@ -31728,6 +31776,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi |
| 31728 | 31776 | 0 |
| 31729 | 31777 | 0 |
| 31730 | 31778 | 0 |
| 31779 | 0 | |
| 31731 | 31780 | 5 |
| 31732 | 31781 | 5 |
| 31733 | 31782 | 5 |
| ... | ... | @@ -32303,6 +32352,10 @@ mipsel-linux-gnueabi mips-linux-gnueabi |
| 32303 | 32352 | 37 |
| 32304 | 32353 | 37 |
| 32305 | 32354 | |
| 32355 | 0 | |
| 32356 | 0 | |
| 32357 | 0 | |
| 32358 | 0 | |
| 32306 | 32359 | 0 |
| 32307 | 32360 | 0 |
| 32308 | 32361 | 0 |
| ... | ... | @@ -32513,6 +32566,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi |
| 32513 | 32566 | 0 |
| 32514 | 32567 | 0 |
| 32515 | 32568 | 0 |
| 32569 | 0 | |
| 32516 | 32570 | |
| 32517 | 32571 | |
| 32518 | 32572 | |
| ... | ... | @@ -35473,6 +35527,7 @@ x86_64-linux-gnu |
| 35473 | 35527 | 10 |
| 35474 | 35528 | 10 |
| 35475 | 35529 | 10 |
| 35530 | 10 | |
| 35476 | 35531 | 12 |
| 35477 | 35532 | 12 |
| 35478 | 35533 | 12 |
| ... | ... | @@ -36043,6 +36098,10 @@ x86_64-linux-gnu |
| 36043 | 36098 | 10 |
| 36044 | 36099 | 10 |
| 36045 | 36100 | 10 |
| 36101 | 10 | |
| 36102 | 10 | |
| 36103 | 10 | |
| 36104 | 10 | |
| 36046 | 36105 | 12 |
| 36047 | 36106 | 10 |
| 36048 | 36107 | 10 |
| ... | ... | @@ -36249,6 +36308,7 @@ x86_64-linux-gnu |
| 36249 | 36308 | 10 |
| 36250 | 36309 | 10 |
| 36251 | 36310 | 10 |
| 36311 | 10 | |
| 36252 | 36312 | |
| 36253 | 36313 | |
| 36254 | 36314 | |
| ... | ... | @@ -39216,6 +39276,7 @@ x86_64-linux-gnux32 |
| 39216 | 39276 | 28 |
| 39217 | 39277 | 28 |
| 39218 | 39278 | 28 |
| 39279 | 28 | |
| 39219 | 39280 | 36 |
| 39220 | 39281 | 37 |
| 39221 | 39282 | 37 |
| ... | ... | @@ -39782,6 +39843,10 @@ x86_64-linux-gnux32 |
| 39782 | 39843 | 28 |
| 39783 | 39844 | 28 |
| 39784 | 39845 | 28 |
| 39846 | 28 | |
| 39847 | 28 | |
| 39848 | 28 | |
| 39849 | 28 | |
| 39785 | 39850 | 36 |
| 39786 | 39851 | 37 |
| 39787 | 39852 | 37 |
| ... | ... | @@ -39985,6 +40050,7 @@ x86_64-linux-gnux32 |
| 39985 | 40050 | 28 |
| 39986 | 40051 | 28 |
| 39987 | 40052 | 28 |
| 40053 | 28 | |
| 39988 | 40054 | |
| 39989 | 40055 | |
| 39990 | 40056 | |
| ... | ... | @@ -42936,6 +43002,7 @@ i386-linux-gnu |
| 42936 | 43002 | 0 |
| 42937 | 43003 | 0 |
| 42938 | 43004 | 0 |
| 43005 | 0 | |
| 42939 | 43006 | 1 |
| 42940 | 43007 | 5 |
| 42941 | 43008 | 5 |
| ... | ... | @@ -43515,6 +43582,10 @@ i386-linux-gnu |
| 43515 | 43582 | 0 |
| 43516 | 43583 | 0 |
| 43517 | 43584 | 0 |
| 43585 | 0 | |
| 43586 | 0 | |
| 43587 | 0 | |
| 43588 | 0 | |
| 43518 | 43589 | 12 |
| 43519 | 43590 | 1 |
| 43520 | 43591 | 1 |
| ... | ... | @@ -43721,6 +43792,7 @@ i386-linux-gnu |
| 43721 | 43792 | 0 |
| 43722 | 43793 | 0 |
| 43723 | 43794 | 0 |
| 43795 | 0 | |
| 43724 | 43796 | |
| 43725 | 43797 | |
| 43726 | 43798 | |
| ... | ... | @@ -46688,6 +46760,7 @@ powerpc64le-linux-gnu |
| 46688 | 46760 | 29 |
| 46689 | 46761 | 29 |
| 46690 | 46762 | 29 |
| 46763 | 29 | |
| 46691 | 46764 | 36 |
| 46692 | 46765 | 37 |
| 46693 | 46766 | 37 |
| ... | ... | @@ -47254,6 +47327,10 @@ powerpc64le-linux-gnu |
| 47254 | 47327 | 29 |
| 47255 | 47328 | 29 |
| 47256 | 47329 | 29 |
| 47330 | 29 | |
| 47331 | 29 | |
| 47332 | 29 | |
| 47333 | 29 | |
| 47257 | 47334 | 36 |
| 47258 | 47335 | 37 |
| 47259 | 47336 | 37 |
| ... | ... | @@ -47457,6 +47534,7 @@ powerpc64le-linux-gnu |
| 47457 | 47534 | 29 |
| 47458 | 47535 | 29 |
| 47459 | 47536 | 29 |
| 47537 | 29 | |
| 47460 | 47538 | |
| 47461 | 47539 | |
| 47462 | 47540 | |
| ... | ... | @@ -50404,6 +50482,7 @@ powerpc64-linux-gnu |
| 50404 | 50482 | 12 |
| 50405 | 50483 | 12 |
| 50406 | 50484 | 12 |
| 50485 | 12 | |
| 50407 | 50486 | 12 16 |
| 50408 | 50487 | 12 |
| 50409 | 50488 | 12 |
| ... | ... | @@ -50983,7 +51062,11 @@ powerpc64-linux-gnu |
| 50983 | 51062 | 37 |
| 50984 | 51063 | 37 |
| 50985 | 51064 | |
| 51065 | 12 | |
| 51066 | 12 | |
| 50986 | 51067 | 12 16 |
| 51068 | 12 | |
| 51069 | 12 | |
| 50987 | 51070 | 12 15 |
| 50988 | 51071 | 12 |
| 50989 | 51072 | 12 |
| ... | ... | @@ -51193,6 +51276,7 @@ powerpc64-linux-gnu |
| 51193 | 51276 | 12 |
| 51194 | 51277 | 12 |
| 51195 | 51278 | 12 |
| 51279 | 12 | |
| 51196 | 51280 | |
| 51197 | 51281 | |
| 51198 | 51282 | |
| ... | ... | @@ -54140,6 +54224,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf |
| 54140 | 54224 | 0 5 |
| 54141 | 54225 | 0 |
| 54142 | 54226 | 0 |
| 54227 | 0 | |
| 54143 | 54228 | 0 16 |
| 54144 | 54229 | 0 |
| 54145 | 54230 | 0 |
| ... | ... | @@ -54719,7 +54804,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf |
| 54719 | 54804 | 37 |
| 54720 | 54805 | 37 |
| 54721 | 54806 | |
| 54807 | 0 | |
| 54808 | 0 | |
| 54722 | 54809 | 0 16 |
| 54810 | 0 | |
| 54811 | 0 | |
| 54723 | 54812 | 0 15 |
| 54724 | 54813 | 0 |
| 54725 | 54814 | 0 |
| ... | ... | @@ -54929,6 +55018,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf |
| 54929 | 55018 | 0 |
| 54930 | 55019 | 0 |
| 54931 | 55020 | 0 |
| 55021 | 0 | |
| 54932 | 55022 | |
| 54933 | 55023 | |
| 54934 | 55024 |
lib/libc/glibc/fns.txt+6| ... | ... | @@ -1834,6 +1834,7 @@ fopen c |
| 1834 | 1834 | fopen64 c |
| 1835 | 1835 | fopencookie c |
| 1836 | 1836 | fork c |
| 1837 | forkpty util | |
| 1837 | 1838 | fpathconf c |
| 1838 | 1839 | fprintf c |
| 1839 | 1840 | fputc c |
| ... | ... | @@ -2414,7 +2415,11 @@ logf32 m |
| 2414 | 2415 | logf32x m |
| 2415 | 2416 | logf64 m |
| 2416 | 2417 | logf64x m |
| 2418 | login util | |
| 2419 | login_tty util | |
| 2417 | 2420 | logl m |
| 2421 | logout util | |
| 2422 | logwtmp util | |
| 2418 | 2423 | longjmp c |
| 2419 | 2424 | lrand48 c |
| 2420 | 2425 | lrand48_r c |
| ... | ... | @@ -2620,6 +2625,7 @@ openat c |
| 2620 | 2625 | openat64 c |
| 2621 | 2626 | opendir c |
| 2622 | 2627 | openlog c |
| 2628 | openpty util | |
| 2623 | 2629 | optarg c |
| 2624 | 2630 | opterr c |
| 2625 | 2631 | optind c |
lib/libc/mingw/lib32/version.def created+16| ... | ... | @@ -0,0 +1,16 @@ |
| 1 | LIBRARY "VERSION.dll" | |
| 2 | EXPORTS | |
| 3 | GetFileVersionInfoA@16 | |
| 4 | GetFileVersionInfoSizeA@8 | |
| 5 | GetFileVersionInfoSizeW@8 | |
| 6 | GetFileVersionInfoW@16 | |
| 7 | VerFindFileA@32 | |
| 8 | VerFindFileW@32 | |
| 9 | VerInstallFileA@32 | |
| 10 | VerInstallFileW@32 | |
| 11 | VerLanguageNameA@12 | |
| 12 | VerLanguageNameW@12 | |
| 13 | VerQueryValueA@16 | |
| 14 | VerQueryValueIndexA@24 | |
| 15 | VerQueryValueIndexW@24 | |
| 16 | VerQueryValueW@16 |
lib/libc/mingw/libsrc/ativscp-uuid.c created+16| ... | ... | @@ -0,0 +1,16 @@ |
| 1 | /* ativscp-uuid.c */ | |
| 2 | /* Generate GUIDs for ActiveScript interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | /* All CLSIDs defined in this file were extracted from | |
| 8 | * HKEY_CLASSES_ROOT\CLSID\ */ | |
| 9 | ||
| 10 | #define INITGUID | |
| 11 | #include <basetyps.h> | |
| 12 | DEFINE_GUID(IID_IActiveScript,0xbb1a2ae1,0xa4f9,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); | |
| 13 | DEFINE_GUID(IID_IActiveScriptError,0xeae1ba61,0xa4ed,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); | |
| 14 | DEFINE_GUID(IID_IActiveScriptParse,0xbb1a2ae2,0xa4f9,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); | |
| 15 | DEFINE_GUID(IID_IActiveScriptSite,0xdb01a1e3,0xa42b,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); | |
| 16 | DEFINE_GUID(IID_IActiveScriptSiteWindow,0xd10f6761,0x83e9,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); |
lib/libc/mingw/libsrc/atsmedia-uuid.c created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | /* from atsmedia.h */ | |
| 2 | ||
| 3 | #define INITGUID | |
| 4 | #include <basetyps.h> | |
| 5 | ||
| 6 | DEFINE_GUID(BDANETWORKTYPE_ATSC, 0x71985F51, 0x1CA1, 0x11D3, 0x9C, 0xC8, 0x0, 0xC0, 0x4F, 0x79, 0x71, 0xE0); | |
| 7 |
lib/libc/mingw/libsrc/bth-uuid.c created+84| ... | ... | @@ -0,0 +1,84 @@ |
| 1 | #define INITGUID | |
| 2 | #include <basetyps.h> | |
| 3 | ||
| 4 | DEFINE_GUID(GUID_BTHPORT_DEVICE_INTERFACE,0x0850302A,0xB344,0x4fda,0x9B,0xE9,0x90,0x57,0x6B,0x8D,0x46,0xF0); | |
| 5 | DEFINE_GUID(GUID_BLUETOOTH_RADIO_IN_RANGE,0xEA3B5B82,0x26EE,0x450E,0xB0,0xD8,0xD2,0x6F,0xE3,0x0A,0x38,0x69); | |
| 6 | DEFINE_GUID(GUID_BLUETOOTH_RADIO_OUT_OF_RANGE,0xE28867C9,0xC2AA,0x4CED,0xB9,0x69,0x45,0x70,0x86,0x60,0x37,0xC4); | |
| 7 | DEFINE_GUID(GUID_BLUETOOTH_PIN_REQUEST,0xBD198B7C,0x24AB,0x4B9A,0x8C,0x0D,0xA8,0xEA,0x83,0x49,0xAA,0x16); | |
| 8 | DEFINE_GUID(GUID_BLUETOOTH_L2CAP_EVENT,0x7EAE4030,0xB709,0x4AA8,0xAC,0x55,0xE9,0x53,0x82,0x9C,0x9D,0xAA); | |
| 9 | DEFINE_GUID(GUID_BLUETOOTH_HCI_EVENT,0xFC240062,0x1541,0x49BE,0xB4,0x63,0x84,0xC4,0xDC,0xD7,0xBF,0x7F); | |
| 10 | DEFINE_GUID(BLUETOOTH_BASE_UUID,0x00000000,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 11 | DEFINE_GUID(SDP_PROTOCOL_UUID,0x00000001,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 12 | DEFINE_GUID(UDP_PROTOCOL_UUID,0x00000002,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 13 | DEFINE_GUID(RFCOMM_PROTOCOL_UUID,0x00000003,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 14 | DEFINE_GUID(TCP_PROTOCOL_UUID,0x00000004,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 15 | DEFINE_GUID(TCSBIN_PROTOCOL_UUID,0x00000005,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 16 | DEFINE_GUID(TCSAT_PROTOCOL_UUID,0x00000006,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 17 | DEFINE_GUID(OBEX_PROTOCOL_UUID,0x00000008,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 18 | DEFINE_GUID(IP_PROTOCOL_UUID,0x00000009,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 19 | DEFINE_GUID(FTP_PROTOCOL_UUID,0x0000000A,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 20 | DEFINE_GUID(HTTP_PROTOCOL_UUID,0x0000000C,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 21 | DEFINE_GUID(WSP_PROTOCOL_UUID,0x0000000E,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 22 | DEFINE_GUID(BNEP_PROTOCOL_UUID,0x0000000F,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 23 | DEFINE_GUID(UPNP_PROTOCOL_UUID,0x00000010,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 24 | DEFINE_GUID(HCCC_PROTOCOL_UUID,0x00000012,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 25 | DEFINE_GUID(HCDC_PROTOCOL_UUID,0x00000014,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 26 | DEFINE_GUID(HN_PROTOCOL_UUID,0x00000016,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 27 | DEFINE_GUID(AVCTP_PROTOCOL_UUID,0x00000017,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 28 | DEFINE_GUID(AVDTP_PROTOCOL_UUID,0x00000019,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 29 | DEFINE_GUID(CMPT_PROTOCOL_UUID,0x0000001B,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 30 | DEFINE_GUID(UDI_C_PLANE_PROTOCOL_UUID,0x0000001D,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 31 | DEFINE_GUID(L2CAP_PROTOCOL_UUID,0x00000100,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 32 | ||
| 33 | DEFINE_GUID(ServiceDiscoveryServerServiceClassID_UUID,0x00001000,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 34 | DEFINE_GUID(BrowseGroupDescriptorServiceClassID_UUID,0x00001001,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 35 | DEFINE_GUID(PublicBrowseGroupServiceClass_UUID,0x00001002,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 36 | DEFINE_GUID(SerialPortServiceClass_UUID,0x00001101,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 37 | DEFINE_GUID(LANAccessUsingPPPServiceClass_UUID,0x00001102,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 38 | DEFINE_GUID(DialupNetworkingServiceClass_UUID,0x00001103,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 39 | DEFINE_GUID(IrMCSyncServiceClass_UUID,0x00001104,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 40 | DEFINE_GUID(OBEXObjectPushServiceClass_UUID,0x00001105,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 41 | DEFINE_GUID(OBEXFileTransferServiceClass_UUID,0x00001106,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 42 | DEFINE_GUID(IrMCSyncCommandServiceClass_UUID,0x00001107,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 43 | DEFINE_GUID(HeadsetServiceClass_UUID,0x00001108,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 44 | DEFINE_GUID(CordlessTelephonyServiceClass_UUID,0x00001109,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 45 | DEFINE_GUID(AudioSourceServiceClass_UUID,0x0000110A,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 46 | DEFINE_GUID(AudioSinkServiceClass_UUID,0x0000110B,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 47 | DEFINE_GUID(AVRemoteControlTargetServiceClass_UUID,0x0000110C,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 48 | DEFINE_GUID(AdvancedAudioDistributionServiceClass_UUID,0x0000110D,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 49 | DEFINE_GUID(AVRemoteControlServiceClass_UUID,0x0000110E,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 50 | DEFINE_GUID(VideoConferencingServiceClass_UUID,0x0000110F,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 51 | DEFINE_GUID(IntercomServiceClass_UUID,0x00001110,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 52 | DEFINE_GUID(FaxServiceClass_UUID,0x00001111,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 53 | DEFINE_GUID(HeadsetAudioGatewayServiceClass_UUID,0x00001112,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 54 | DEFINE_GUID(WAPServiceClass_UUID,0x00001113,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 55 | DEFINE_GUID(WAPClientServiceClass_UUID,0x00001114,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 56 | DEFINE_GUID(PANUServiceClass_UUID,0x00001115,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 57 | DEFINE_GUID(NAPServiceClass_UUID,0x00001116,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 58 | DEFINE_GUID(GNServiceClass_UUID,0x00001117,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 59 | DEFINE_GUID(DirectPrintingServiceClass_UUID,0x00001118,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 60 | DEFINE_GUID(ReferencePrintingServiceClass_UUID,0x00001119,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 61 | DEFINE_GUID(ImagingServiceClass_UUID,0x0000111A,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 62 | DEFINE_GUID(ImagingResponderServiceClass_UUID,0x0000111B,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 63 | DEFINE_GUID(ImagingAutomaticArchiveServiceClass_UUID,0x0000111C,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 64 | DEFINE_GUID(ImagingReferenceObjectsServiceClass_UUID,0x0000111D,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 65 | DEFINE_GUID(HandsfreeServiceClass_UUID,0x0000111E,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 66 | DEFINE_GUID(HandsfreeAudioGatewayServiceClass_UUID,0x0000111F,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 67 | DEFINE_GUID(DirectPrintingReferenceObjectsServiceClass_UUID,0x00001120,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 68 | DEFINE_GUID(ReflectedUIServiceClass_UUID,0x00001121,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 69 | DEFINE_GUID(BasicPringingServiceClass_UUID,0x00001122,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 70 | DEFINE_GUID(PrintingStatusServiceClass_UUID,0x00001123,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 71 | DEFINE_GUID(HumanInterfaceDeviceServiceClass_UUID,0x00001124,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 72 | DEFINE_GUID(HardcopyCableReplacementServiceClass_UUID,0x00001125,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 73 | DEFINE_GUID(HCRPrintServiceClass_UUID,0x00001126,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 74 | DEFINE_GUID(HCRScanServiceClass_UUID,0x00001127,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 75 | DEFINE_GUID(CommonISDNAccessServiceClass_UUID,0x00001128,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 76 | DEFINE_GUID(VideoConferencingGWServiceClass_UUID,0x00001129,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 77 | DEFINE_GUID(UDIMTServiceClass_UUID,0x0000112A,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 78 | DEFINE_GUID(UDITAServiceClass_UUID,0x0000112B,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 79 | DEFINE_GUID(AudioVideoServiceClass_UUID,0x0000112C,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 80 | DEFINE_GUID(PnPInformationServiceClass_UUID,0x00001200,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 81 | DEFINE_GUID(GenericNetworkingServiceClass_UUID,0x00001201,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 82 | DEFINE_GUID(GenericFileTransferServiceClass_UUID,0x00001202,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 83 | DEFINE_GUID(GenericAudioServiceClass_UUID,0x00001203,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); | |
| 84 | DEFINE_GUID(GenericTelephonyServiceClass_UUID,0x00001204,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5F,0x9B,0x34,0xFB); |
lib/libc/mingw/libsrc/cguid-uuid.c created+19| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | /* cguid-uuid.c */ | |
| 2 | /* Generate GUIDs for CGUID interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | /* All CLSIDs defined in this file were extracted from | |
| 8 | * HKEY_CLASSES_ROOT\CLSID\ */ | |
| 9 | ||
| 10 | #define INITGUID | |
| 11 | #include <basetyps.h> | |
| 12 | DEFINE_OLEGUID(IID_IRpcChannel,0x4,0,0); | |
| 13 | DEFINE_OLEGUID(IID_IRpcStub,0x5,0,0); | |
| 14 | DEFINE_OLEGUID(IID_IRpcProxy,0x7,0,0); | |
| 15 | DEFINE_OLEGUID(IID_IPSFactory,0x9,0,0); | |
| 16 | // Picture (Device Independant Bitmap) CLSID | |
| 17 | DEFINE_OLEGUID(CLSID_StaticDib,0x316,0,0); | |
| 18 | // Picture (Metafile) CLSID | |
| 19 | DEFINE_OLEGUID(CLSID_StaticMetafile,0x315,0,0); |
lib/libc/mingw/libsrc/comcat-uuid.c created+30| ... | ... | @@ -0,0 +1,30 @@ |
| 1 | /* comcat-uuid.c */ | |
| 2 | /* Generate GUIDs for COMCAT interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | /* All CLSIDs defined in this file were extracted from | |
| 8 | * HKEY_CLASSES_ROOT\CLSID\ */ | |
| 9 | ||
| 10 | #define INITGUID | |
| 11 | #include <basetyps.h> | |
| 12 | DEFINE_OLEGUID(IID_IEnumGUID,0x2e000,0,0); | |
| 13 | DEFINE_OLEGUID(IID_ICatInformation,0x2e013,0,0); | |
| 14 | DEFINE_OLEGUID(IID_ICatRegister,0x2e012,0,0); | |
| 15 | DEFINE_OLEGUID(IID_IEnumCATEGORYINFO,0x2e011,0,0); | |
| 16 | // Component Catagories Manager CLSID | |
| 17 | DEFINE_OLEGUID(CLSID_StdComponentCategoriesMgr,0x2e005,0,0); | |
| 18 | // Implemented Categories under Outlook Express MsgTable Object CLSID | |
| 19 | DEFINE_GUID(CATID_Insertable,0x40fc6ed3,0x2438,0x11cf,0xa3,0xdb,0x8,0,0x36,0xf1,0x25,0x2); | |
| 20 | DEFINE_GUID(CATID_Control,0x40fc6ed4,0x2438,0x11cf,0xa3,0xdb,0x8,0,0x36,0xf1,0x25,0x2); | |
| 21 | // Implemented Categories under Microsoft PowerPoint Slide CLSID | |
| 22 | DEFINE_GUID(CATID_DocObject,0x40fc6ed8,0x2438,0x11cf,0xa3,0xdb,0x8,0,0x36,0xf1,0x25,0x2); | |
| 23 | // Implemented Categories under Microsoft Toolbar Control CLSID | |
| 24 | DEFINE_GUID(CATID_Programmable,0x40fc6ed5,0x2438,0x11cf,0xa3,0xdb,0x8,0,0x36,0xf1,0x25,0x2); | |
| 25 | // Implemented Categories under SSCommand Control CLSID | |
| 26 | DEFINE_GUID(CATID_Printable,0x40fc6ed9,0x2438,0x11cf,0xa3,0xdb,0x8,0,0x36,0xf1,0x25,0x2); | |
| 27 | DEFINE_GUID(CATID_PersistsToStorage,0xde86a52,0x2baa,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 28 | DEFINE_GUID(CATID_PersistsToPropertyBag,0xde86a57,0x2baa,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 29 | DEFINE_GUID(CATID_PersistsToStream,0xde86a54,0x2baa,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 30 | DEFINE_GUID(CATID_PersistsToStreamInit,0xde86a53,0x2baa,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); |
lib/libc/mingw/libsrc/devguid.c created+61| ... | ... | @@ -0,0 +1,61 @@ |
| 1 | /* | |
| 2 | Generate GUIDs for device classes for PnP and SetupAPI | |
| 3 | ||
| 4 | This file was generated by extracting the UUIDs from the registry at | |
| 5 | \\SYSTEM\\CurrentControlSet\\Control\\Class and pairing them with | |
| 6 | the class name in the registry value "Class" with GUID_DEVCLASS_ prepended | |
| 7 | */ | |
| 8 | ||
| 9 | #define INITGUID | |
| 10 | #include <basetyps.h> | |
| 11 | DEFINE_GUID(GUID_DEVCLASS_WCEUSBS, 0x25DBCE51, 0x6C8F, 0x4A72, 0x8A, 0x6D, 0xB5, 0x4C, 0x2B, 0x4F, 0xC8, 0x35); | |
| 12 | DEFINE_GUID(GUID_DEVCLASS_USB, 0x36FC9E60, 0xC465, 0x11CF, 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00); | |
| 13 | DEFINE_GUID(GUID_DEVCLASS_PNPPRINTERS, 0x4658EE7E, 0xF050, 0x11D1, 0xB6, 0xBD, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7); | |
| 14 | DEFINE_GUID(GUID_DEVCLASS_DOT4, 0x48721B56, 0x6795, 0x11D2, 0xB1, 0xA8, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2); | |
| 15 | DEFINE_GUID(GUID_DEVCLASS_DOT4PRINT, 0x49CE6AC8, 0x6F86, 0x11D2, 0xB1, 0xE5, 0x00, 0x80, 0xC7, 0x2E, 0x74, 0xA2); | |
| 16 | DEFINE_GUID(GUID_DEVCLASS_CDROM, 0x4D36E965, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 17 | DEFINE_GUID(GUID_DEVCLASS_COMPUTER, 0x4D36E966, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 18 | DEFINE_GUID(GUID_DEVCLASS_DISKDRIVE, 0x4D36E967, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 19 | DEFINE_GUID(GUID_DEVCLASS_DISPLAY, 0x4D36E968, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 20 | DEFINE_GUID(GUID_DEVCLASS_FDC, 0x4D36E969, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 21 | DEFINE_GUID(GUID_DEVCLASS_HDC, 0x4D36E96A, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 22 | DEFINE_GUID(GUID_DEVCLASS_KEYBOARD, 0x4D36E96B, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 23 | DEFINE_GUID(GUID_DEVCLASS_MEDIA, 0x4D36E96C, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 24 | DEFINE_GUID(GUID_DEVCLASS_MODEM, 0x4D36E96D, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 25 | DEFINE_GUID(GUID_DEVCLASS_MONITOR, 0x4D36E96E, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 26 | DEFINE_GUID(GUID_DEVCLASS_MOUSE, 0x4D36E96F, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 27 | DEFINE_GUID(GUID_DEVCLASS_MTD, 0x4D36E970, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 28 | DEFINE_GUID(GUID_DEVCLASS_MULTIFUNCTION, 0x4D36E971, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 29 | DEFINE_GUID(GUID_DEVCLASS_NET, 0x4D36E972, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2b, 0xE1, 0x03, 0x18); | |
| 30 | DEFINE_GUID(GUID_DEVCLASS_NETCLIENT, 0x4D36E973, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 31 | DEFINE_GUID(GUID_DEVCLASS_NETSERVICE, 0x4D36E974, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 32 | DEFINE_GUID(GUID_DEVCLASS_NETTRANS, 0x4D36E975, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 33 | DEFINE_GUID(GUID_DEVCLASS_PCMCIA, 0x4D36E977, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 34 | DEFINE_GUID(GUID_DEVCLASS_PORTS, 0x4D36E978, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 35 | DEFINE_GUID(GUID_DEVCLASS_PRINTER, 0x4D36E979, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 36 | DEFINE_GUID(GUID_DEVCLASS_SCSIADAPTER, 0x4D36E97B, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 37 | DEFINE_GUID(GUID_DEVCLASS_SYSTEM, 0x4D36E97D, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 38 | DEFINE_GUID(GUID_DEVCLASS_UNKNOWN, 0x4D36E97E, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 39 | DEFINE_GUID(GUID_DEVCLASS_FLOPPYDISK, 0x4D36E980, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 40 | DEFINE_GUID(GUID_DEVCLASS_PROCESSOR, 0x50127DC3, 0x0F36, 0x415E, 0xA6, 0xCC, 0x4C, 0xB3, 0xBE, 0x91, 0x0B, 0x65); | |
| 41 | DEFINE_GUID(GUID_DEVCLASS_MULTIPORTSERIAL, 0x50906CB8, 0xBA12, 0x11D1, 0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30); | |
| 42 | DEFINE_GUID(GUID_DEVCLASS_SMARTCARDREADER, 0x50DD5230, 0xBA8A, 0x11D1, 0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30); | |
| 43 | DEFINE_GUID(GUID_DEVCLASS_VOLUMESNAPSHOT, 0x533C5B84, 0xEC70, 0x11D2, 0x95, 0x05, 0x00, 0xC0, 0x4F, 0x79, 0xDE, 0xAF); | |
| 44 | DEFINE_GUID(GUID_DEVCLASS_1394DEBUG, 0x66F250D6, 0x7801, 0x4A64, 0xB1, 0x39, 0xEE, 0xA8, 0x0A, 0x45, 0x0B, 0x24); | |
| 45 | DEFINE_GUID(GUID_DEVCLASS_1394, 0x6BDD1FC1, 0x810F, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F); | |
| 46 | DEFINE_GUID(GUID_DEVCLASS_INFRARED, 0x6BDD1FC5, 0x810F, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F); | |
| 47 | DEFINE_GUID(GUID_DEVCLASS_IMAGE, 0x6BDD1FC6, 0x810F, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F); | |
| 48 | DEFINE_GUID(GUID_DEVCLASS_TAPEDRIVE, 0x6D807884, 0x7D21, 0x11CF, 0x80, 0x1C, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 49 | DEFINE_GUID(GUID_DEVCLASS_VOLUME, 0x71A27CDD, 0x812A, 0x11D0, 0xBE, 0xC7, 0x08, 0x00, 0x2B, 0xE2, 0x09, 0x2F); | |
| 50 | DEFINE_GUID(GUID_DEVCLASS_BATTERY, 0x72631E54, 0x78A4, 0x11D0, 0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A); | |
| 51 | DEFINE_GUID(GUID_DEVCLASS_HIDCLASS, 0x745A17A0, 0x74D3, 0x11D0, 0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA); | |
| 52 | DEFINE_GUID(GUID_DEVCLASS_61883, 0x7EBEFBC0, 0x3200, 0x11D2, 0xB4, 0xC2, 0x00, 0xA0, 0xC9, 0x69, 0x7D, 0x07); | |
| 53 | DEFINE_GUID(GUID_DEVCLASS_LEGACYDRIVER, 0x8ECC055D, 0x047F, 0x11D1, 0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1); | |
| 54 | DEFINE_GUID(GUID_DEVCLASS_SDHOST, 0xA0A588A4, 0xC46F, 0x4B37, 0xB7, 0xEA, 0xC8, 0x2F, 0xE8, 0x98, 0x70, 0xC6); | |
| 55 | DEFINE_GUID(GUID_DEVCLASS_AVC, 0xC06FF265, 0xAE09, 0x48F0, 0x81, 0x2C, 0x16, 0x75, 0x3D, 0x7C, 0xBA, 0x83); | |
| 56 | DEFINE_GUID(GUID_DEVCLASS_ENUM1394, 0xC459DF55, 0xDB08, 0x11D1, 0xB0, 0x09, 0x00, 0xA0, 0xC9, 0x08, 0x1F, 0xF6); | |
| 57 | DEFINE_GUID(GUID_DEVCLASS_MEDIUMCHANGER, 0xCE5939AE, 0xEBDE, 0x11D0, 0xB1, 0x81, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xC4); | |
| 58 | DEFINE_GUID(GUID_DEVCLASS_NTAPM, 0xD45B1C18, 0xC8FA, 0x11D1, 0x9F, 0x77, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30); | |
| 59 | DEFINE_GUID(GUID_DEVCLASS_SBP2, 0xD48179BE, 0xEC20, 0x11D1, 0xB6, 0xB8, 0x00, 0xC0, 0x4F, 0xA3, 0x72, 0xA7); | |
| 60 | DEFINE_GUID(GUID_DEVCLASS_BLUETOOTH, 0xE0CBF06C, 0xCD8B, 0x4647, 0xBB, 0x8A, 0x26, 0x3B, 0x43, 0xF0, 0xF9, 0x74); | |
| 61 | DEFINE_GUID(GUID_DEVCLASS_PROBES, 0xFD02DFAC, 0x6A7C, 0x4391, 0x97, 0xDA, 0xF8, 0x1F, 0xEF, 0x1F, 0xC9, 0xD3); |
lib/libc/mingw/libsrc/docobj-uuid.c created+15| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | /* docobj-uuid.c */ | |
| 2 | /* Generate GUIDs for Document Object interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | #define INITGUID | |
| 8 | #include <basetyps.h> | |
| 9 | DEFINE_GUID(IID_IContinueCallback,0xb722bcca,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70); | |
| 10 | DEFINE_GUID(IID_IEnumOleDocumentViews,0xb722bcc8,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70); | |
| 11 | DEFINE_GUID(IID_IPrint,0xb722bcc9,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70); | |
| 12 | DEFINE_GUID(IID_IOleDocument,0xb722bcc5,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70); | |
| 13 | DEFINE_GUID(IID_IOleDocumentView,0xb722bcc6,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70); | |
| 14 | DEFINE_GUID(IID_IOleDocumentSite,0xb722bcc7,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70); | |
| 15 | DEFINE_GUID(IID_IOleCommandTarget,0xb722bccb,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70); |
lib/libc/mingw/libsrc/dxva-uuid.c created+40| ... | ... | @@ -0,0 +1,40 @@ |
| 1 | /** | |
| 2 | * DISCLAIMER | |
| 3 | * This file has no copyright assigned and is placed in the Public Domain. | |
| 4 | * This file is part of the mingw-w64 runtime package. | |
| 5 | * | |
| 6 | * The mingw-w64 runtime package and its code is distributed in the hope that it | |
| 7 | * will be useful but WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESSED OR | |
| 8 | * IMPLIED ARE HEREBY DISCLAIMED. This includes but is not limited to | |
| 9 | * warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
| 10 | */ | |
| 11 | ||
| 12 | #if defined(__LCC__) || defined(__GNUC__) | |
| 13 | #define INITGUID 1 | |
| 14 | #include <windows.h> | |
| 15 | #else | |
| 16 | #include <basetyps.h> | |
| 17 | #endif | |
| 18 | ||
| 19 | DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02); | |
| 20 | DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02); | |
| 21 | ||
| 22 | DEFINE_GUID(DXVA2_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0,0x4563, 0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66); | |
| 23 | DEFINE_GUID(DXVA2_ModeMPEG2_IDCT, 0xbf22ad00, 0x03ea,0x4690, 0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e); | |
| 24 | DEFINE_GUID(DXVA2_ModeMPEG2_VLD, 0xee27417f, 0x5e28,0x4e65, 0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9); | |
| 25 | DEFINE_GUID(DXVA2_ModeH264_A, 0x1b81be64, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 26 | DEFINE_GUID(DXVA2_ModeH264_B, 0x1b81be65, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 27 | DEFINE_GUID(DXVA2_ModeH264_C, 0x1b81be66, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 28 | DEFINE_GUID(DXVA2_ModeH264_D, 0x1b81be67, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 29 | DEFINE_GUID(DXVA2_ModeH264_E, 0x1b81be68, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 30 | DEFINE_GUID(DXVA2_ModeH264_F, 0x1b81be69, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 31 | DEFINE_GUID(DXVA2_ModeWMV8_A, 0x1b81be80, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 32 | DEFINE_GUID(DXVA2_ModeWMV8_B, 0x1b81be81, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 33 | DEFINE_GUID(DXVA2_ModeWMV9_A, 0x1b81be90, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 34 | DEFINE_GUID(DXVA2_ModeWMV9_B, 0x1b81be91, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 35 | DEFINE_GUID(DXVA2_ModeWMV9_C, 0x1b81be94, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 36 | DEFINE_GUID(DXVA2_ModeVC1_A, 0x1b81beA0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 37 | DEFINE_GUID(DXVA2_ModeVC1_B, 0x1b81beA1, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 38 | DEFINE_GUID(DXVA2_ModeVC1_C, 0x1b81beA2, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 39 | DEFINE_GUID(DXVA2_ModeVC1_D, 0x1b81beA3, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); | |
| 40 | DEFINE_GUID(DXVA_NoEncrypt, 0x1b81bed0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); |
lib/libc/mingw/libsrc/exdisp-uuid.c created+18| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | /* exdisp-uuid.c */ | |
| 2 | /* Generate GUIDs for Object EXDISP interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | /* All CLSIDs defined in this file were extracted from | |
| 8 | * HKEY_CLASSES_ROOT\CLSID\ */ | |
| 9 | ||
| 10 | #define INITGUID | |
| 11 | #include <basetyps.h> | |
| 12 | // Microsoft Web Browser CLSID | |
| 13 | DEFINE_GUID(CLSID_WebBrowser,0x8856f961,0x340a,0x11d0,0xa9,0x6b,0x0,0xc0,0x4f,0xd7,0x5,0xa2); | |
| 14 | DEFINE_GUID(DIID_DWebBrowserEvents,0xeab22ac2,0x30c1,0x11cf,0xa7,0xeb,0x0,0x0,0xc0,0x5b,0xae,0x0b); | |
| 15 | DEFINE_GUID(DIID_DWebBrowserEvents2,0x34a715a0,0x6587,0x11d0,0x92,0x4a,0x0,0x20,0xaf,0xc7,0xac,0x4d); | |
| 16 | DEFINE_GUID(IID_IWebBrowser,0xeab22ac1,0x30c1,0x11cf,0xa7,0xeb,0x0,0x0,0xc0,0x5b,0xae,0x0b); | |
| 17 | DEFINE_GUID(IID_IWebBrowser2,0xd30c1661,0xcdaf,0x11d0,0x8a,0x3e,0x0,0xc0,0x4f,0xc9,0xe2,0x6e); | |
| 18 | DEFINE_GUID(IID_IWebBrowserApp,0x2df05,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x46); |
lib/libc/mingw/libsrc/extras-uuid.c created+42| ... | ... | @@ -0,0 +1,42 @@ |
| 1 | /* extras-uuid.c */ | |
| 2 | /* Generate GUIDs for interfaces not defined in any headers*/ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | /* All CLSIDs defined in this file were extracted from | |
| 8 | * HKEY_CLASSES_ROOT\CLSID\ */ | |
| 9 | ||
| 10 | #define INITGUID | |
| 11 | #include <basetyps.h> | |
| 12 | // Microsoft Web Browser CLSID | |
| 13 | DEFINE_GUID(IID_IClientSiteHandler,0xf4f569d1,0x593b,0x101a,0xb5,0x69,0x8,0,0x2b,0x2d,0xbf,0x7a); | |
| 14 | DEFINE_OLEGUID(IID_IContinue,0x12a,0,0); | |
| 15 | DEFINE_GUID(IID_IHttpNegotiate,0x79eac9d2,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 16 | DEFINE_GUID(IID_IPersistMoniker,0x79eac9c9,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0x0b); | |
| 17 | DEFINE_GUID(IID_IServerHandler,0xf4f569d0,0x593b,0x101a,0xb5,0x69,0x8,0,0x2b,0x2d,0xbf,0x7a); | |
| 18 | DEFINE_GUID(IID_ITargetEmbedding,0x548793c0,0x9e74,0x11cf,0x96,0x55,0,0xa0,0xc9,0x3,0x49,0x23); | |
| 19 | DEFINE_GUID(IID_ITargetFrame,0xd5f78c80,0x5252,0x11cf,0x90,0xfa,0,0xaa,0,0x42,0x10,0x6e); | |
| 20 | DEFINE_OLEGUID(IID_ITypeComp,0x20403,0,0); | |
| 21 | DEFINE_GUID(IID_IUrlHistoryStg,0x3c374a41,0xbae4,0x11cf,0xbf,0x7d,0,0xaa,0,0x69,0x46,0xee); | |
| 22 | DEFINE_GUID(IID_IWinInetHttpInfo,0x79eac9d8,0xbafa,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 23 | DEFINE_GUID(IID_IWinInetInfo,0x79eac9d6,0xbafa,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 24 | DEFINE_OLEGUID(IID_IEnumSTATPROPSETSTG,0x13b,0,0); | |
| 25 | DEFINE_OLEGUID(IID_IEnumSTATPROPSTG,0x139,0,0); | |
| 26 | DEFINE_GUID(IID_IEnumSTATURL,0x3c374a42,0xbae4,0x11cf,0xbf,0x7d,0,0xaa,0,0x69,0x46,0xee); | |
| 27 | // file:, local: Asychronous Pluggable Protocol Handler CLSID | |
| 28 | DEFINE_GUID(CLSID_FileProtocol,0x79eac9e7,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 29 | // ftp: Asychronous Pluggable Protocol Handler CLSID | |
| 30 | DEFINE_GUID(CLSID_FtpProtocol,0x79eac9e3,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 31 | // gopher: Asychronous Pluggable Protocol Handler CLSID | |
| 32 | DEFINE_GUID(CLSID_GopherProtocol,0x79eac9e4,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 33 | // http: Asychronous Pluggable Protocol Handler CLSID | |
| 34 | DEFINE_GUID(CLSID_HttpProtocol,0x79eac9e2,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 35 | // https: Asychronous Pluggable Protocol Handler CLSID | |
| 36 | DEFINE_GUID(CLSID_HttpSProtocol,0x79eac9e5,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 37 | // mk: Asychronous Pluggable Protocol Handler CLSID | |
| 38 | DEFINE_GUID(CLSID_MkProtocol,0x79eac9e6,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 39 | // URLMoniker ProxyStub Factory CLSID | |
| 40 | DEFINE_GUID(CLSID_PSUrlMonProxy,0x79eac9f1,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 41 | // URL Moniker CLSID | |
| 42 | DEFINE_GUID(CLSID_StdURLMoniker,0x79eac9e0,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); |
lib/libc/mingw/libsrc/fwp-uuid.c created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | /* http://msdn.microsoft.com/en-us/library/bb427366%28v=VS.85%29.aspx */ | |
| 2 | #define INITGUID | |
| 3 | #include <basetyps.h> | |
| 4 | ||
| 5 | DEFINE_GUID(FWPM_PROVIDER_IKEEXT,0x10AD9216L,0xCCDE,0x456C,0x8B,0x16,0xE9,0xF0,0x4E,0x60,0xA9,0x0B); | |
| 6 | DEFINE_GUID(FWPM_PROVIDER_IPSEC_DOS_CONFIG,0x3C6C0519L,0xC05C,0x4BB9,0x83,0x38,0x23,0x27,0x81,0x4C,0xE8,0xBF); | |
| 7 | DEFINE_GUID(FWPM_PROVIDER_TCP_CHIMNEY_OFFLOAD,0x896AA19EL,0x9A34,0x4BCB,0xAE,0x79,0xBE,0xB9,0x12,0x7C,0x84,0xB9); |
lib/libc/mingw/libsrc/guid_nul.c created+4| ... | ... | @@ -0,0 +1,4 @@ |
| 1 | #define INITGUID | |
| 2 | #include <basetyps.h> | |
| 3 | ||
| 4 | DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0); |
lib/libc/mingw/libsrc/hlguids-uuid.c created+15| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | /* hlguids-uuid.c */ | |
| 2 | /* Generate GUIDs for HyperLink GUID interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | /* All CLSIDs defined in this file were extracted from | |
| 8 | * HKEY_CLASSES_ROOT\CLSID\ */ | |
| 9 | ||
| 10 | #define INITGUID | |
| 11 | #include <basetyps.h> | |
| 12 | // StdHlink CLSID | |
| 13 | DEFINE_GUID(CLSID_StdHlink,0x79eac9d0,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 14 | // StdHlinkBrowseContext CLSID | |
| 15 | DEFINE_GUID(CLSID_StdHlinkBrowseContext,0x79eac9d1,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); |
lib/libc/mingw/libsrc/hlink-uuid.c created+13| ... | ... | @@ -0,0 +1,13 @@ |
| 1 | /* hlink-uuid.c */ | |
| 2 | /* Generate GUIDs for HyperLink interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | #define INITGUID | |
| 8 | #include <basetyps.h> | |
| 9 | DEFINE_GUID(IID_IHlink,0x79eac9c3,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 10 | DEFINE_GUID(IID_IHlinkBrowseContext,0x79eac9c7,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 11 | DEFINE_GUID(IID_IHlinkFrame,0x79eac9c5,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 12 | DEFINE_GUID(IID_IHlinkSite,0x79eac9c2,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 13 | DEFINE_GUID(IID_IHlinkTarget,0x79eac9c4,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); |
lib/libc/mingw/libsrc/mlang-uuid.c created+13| ... | ... | @@ -0,0 +1,13 @@ |
| 1 | /* mlang-uuid.c */ | |
| 2 | /* Generate GUIDs for Object Multi Language interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | /* All CLSIDs defined in this file were extracted from | |
| 8 | * HKEY_CLASSES_ROOT\CLSID\ */ | |
| 9 | ||
| 10 | #define INITGUID | |
| 11 | #include <basetyps.h> | |
| 12 | // Multi Language Support CLSID | |
| 13 | DEFINE_GUID(CLSID_CMultiLanguage,0x275c23e2,0x3747,0x11d0,0x9f,0xea,0,0xaa,0,0x3f,0x86,0x46); |
lib/libc/mingw/libsrc/msctf-uuid.c created+31| ... | ... | @@ -0,0 +1,31 @@ |
| 1 | /* msctf-uuid.c */ | |
| 2 | /* Generate GUIDs for Text Services interfaces */ | |
| 3 | ||
| 4 | #include <windows.h> | |
| 5 | #include <oaidl.h> | |
| 6 | #include <comcat.h> | |
| 7 | #include <textstor.h> | |
| 8 | ||
| 9 | #include <initguid.h> | |
| 10 | #include <msctf.h> | |
| 11 | ||
| 12 | DEFINE_GUID(CLSID_TF_ThreadMgr,0x529a9e6b,0x6587,0x4f23,0xab,0x9e,0x9c,0x7d,0x68,0x3e,0x3c,0x50); | |
| 13 | DEFINE_GUID(CLSID_TF_InputProcessorProfiles,0x33c53a50,0xf456,0x4884,0xb0,0x49,0x85,0xfd,0x64,0x3e,0xcf,0xed); | |
| 14 | DEFINE_GUID(CLSID_TF_CategoryMgr,0xA4B544A1,0x438D,0x4B41,0x93,0x25,0x86,0x95,0x23,0xE2,0xD6,0xC7); | |
| 15 | DEFINE_GUID(CLSID_TF_LangBarMgr,0xebb08c45,0x6c4a,0x4fdc,0xae,0x53,0x4e,0xb8,0xc4,0xc7,0xdb,0x8e); | |
| 16 | DEFINE_GUID(CLSID_TF_DisplayAttributeMgr,0x3ce74de4,0x53d3,0x4d74,0x8b,0x83,0x43,0x1b,0x38,0x28,0xba,0x53); | |
| 17 | ||
| 18 | DEFINE_GUID(GUID_TFCAT_TIP_KEYBOARD,0x34745c63,0xb2f0,0x4784,0x8b,0x67,0x5e,0x12,0xc8,0x70,0x1a,0x31); | |
| 19 | DEFINE_GUID(GUID_TFCAT_TIP_SPEECH,0xB5A73CD1,0x8355,0x426B,0xA1,0x61,0x25,0x98,0x08,0xF2,0x6B,0x14); | |
| 20 | DEFINE_GUID(GUID_TFCAT_TIP_HANDWRITING,0x246ecb87,0xc2f2,0x4abe,0x90,0x5b,0xc8,0xb3,0x8a,0xdd,0x2c,0x43); | |
| 21 | DEFINE_GUID(GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER,0x046B8C80,0x1647,0x40F7,0x9B,0x21,0xB9,0x3B,0x81,0xAA,0xBC,0x1B); | |
| 22 | DEFINE_GUID(GUID_COMPARTMENT_KEYBOARD_DISABLED,0x71a5b253,0x1951,0x466b,0x9f,0xbc,0x9c,0x88,0x08,0xfa,0x84,0xf2); | |
| 23 | DEFINE_GUID(GUID_COMPARTMENT_KEYBOARD_OPENCLOSE,0x58273aad,0x01bb,0x4164,0x95,0xc6,0x75,0x5b,0xa0,0xb5,0x16,0x2d); | |
| 24 | DEFINE_GUID(GUID_COMPARTMENT_HANDWRITING_OPENCLOSE,0xf9ae2c6b,0x1866,0x4361,0xaf,0x72,0x7a,0xa3,0x09,0x48,0x89,0x0e); | |
| 25 | DEFINE_GUID(GUID_COMPARTMENT_SPEECH_DISABLED,0x56c5c607,0x0703,0x4e59,0x8e,0x52,0xcb,0xc8,0x4e,0x8b,0xbe,0x35); | |
| 26 | DEFINE_GUID(GUID_COMPARTMENT_SPEECH_OPENCLOSE,0x544d6a63,0xe2e8,0x4752,0xbb,0xd1,0x00,0x09,0x60,0xbc,0xa0,0x83); | |
| 27 | DEFINE_GUID(GUID_COMPARTMENT_SPEECH_GLOBALSTATE,0x2a54fe8e,0x0d08,0x460c,0xa7,0x5d,0x87,0x03,0x5f,0xf4,0x36,0xc5); | |
| 28 | DEFINE_GUID(GUID_COMPARTMENT_PERSISTMENUENABLED,0x575f3783,0x70c8,0x47c8,0xae,0x5d,0x91,0xa0,0x1a,0x1f,0x75,0x92); | |
| 29 | DEFINE_GUID(GUID_COMPARTMENT_EMPTYCONTEXT,0xd7487dbf,0x804e,0x41c5,0x89,0x4d,0xad,0x96,0xfd,0x4e,0xea,0x13); | |
| 30 | DEFINE_GUID(GUID_COMPARTMENT_TIPUISTATUS,0x148ca3ec,0x0366,0x401c,0x8d,0x75,0xed,0x97,0x8d,0x85,0xfb,0xc9); | |
| 31 |
lib/libc/mingw/libsrc/mshtmhst-uuid.c created+3| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | #define INITGUID | |
| 2 | #include <basetyps.h> | |
| 3 | DEFINE_GUID(IID_IDocHostUIHandler,0xbd3f23c0,0xd43e,0x11cf,0x89,0x3b,0x00,0xaa,0x00,0xbd,0xce,0x1a); |
lib/libc/mingw/libsrc/mshtml-uuid.c created+147| ... | ... | @@ -0,0 +1,147 @@ |
| 1 | /* mshtml-uuid.c */ | |
| 2 | /* Generate GUIDs for MSHTML interfaces */ | |
| 3 | ||
| 4 | #define INITGUID | |
| 5 | #include <basetyps.h> | |
| 6 | DEFINE_GUID(IID_IHTMLDocument,0x626fc520,0xa41e,0x11cf,0xa7,0x31,0x0,0xa0,0xc9,0x8,0x26,0x37); | |
| 7 | DEFINE_GUID(IID_IHTMLDocument2,0x332c4425,0x26cb,0x11d0,0xb4,0x83,0x0,0xc0,0x4f,0xd9,0x1,0x19); | |
| 8 | DEFINE_GUID(IID_IHTMLElement,0x3050f1ff,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0xb); | |
| 9 | DEFINE_GUID(IID_IHTMLSelectionObject,0x3050f25a,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0xb); | |
| 10 | DEFINE_GUID(IID_IHTMLTxtRange,0x3050f220,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 11 | DEFINE_GUID(IID_IHTMLImgElement,0x3050f240,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 12 | DEFINE_GUID(IID_IHTMLBodyElement,0x3050f1d8,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 13 | DEFINE_GUID(IID_IHTMLFontElement,0x3050f1d9,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 14 | DEFINE_GUID(IID_IHTMLAnchorElement,0x3050f1da,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 15 | DEFINE_GUID(IID_IHTMLUListElement,0x3050f1dd,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 16 | DEFINE_GUID(IID_IHTMLOListElement,0x3050f1de,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 17 | DEFINE_GUID(IID_IHTMLLIElement,0x3050f1e0,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 18 | DEFINE_GUID(IID_IHTMLBRElement,0x3050f1f0,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 19 | DEFINE_GUID(IID_IHTMLDListElement,0x3050f1f1,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 20 | DEFINE_GUID(IID_IHTMLDDElement,0x3050f1f2,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 21 | DEFINE_GUID(IID_IHTMLDTElement,0x3050f1f3,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 22 | DEFINE_GUID(IID_IHTMLHRElement,0x3050f1f4,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 23 | DEFINE_GUID(IID_IHTMLParaElement,0x3050f1f5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 24 | DEFINE_GUID(IID_IHTMLHeaderElement,0x3050f1f6,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 25 | DEFINE_GUID(IID_IHTMLFormElement,0x3050f1f7,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 26 | DEFINE_GUID(IID_IHTMLDivElement,0x3050f200,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 27 | DEFINE_GUID(IID_IHTMLBaseFontElement,0x3050f202,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 28 | DEFINE_GUID(IID_IHTMLMetaElement,0x3050f203,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 29 | DEFINE_GUID(IID_IHTMLBaseElement,0x3050f204,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 30 | DEFINE_GUID(IID_IHTMLLinkElement,0x3050f205,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 31 | DEFINE_GUID(IID_IHTMLIsIndexElement,0x3050f206,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 32 | DEFINE_GUID(IID_IHTMLNextIdElement,0x3050f207,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 33 | DEFINE_GUID(IID_IHTMLBlockElement,0x3050f208,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 34 | DEFINE_GUID(IID_IHTMLUnknownElement,0x3050f209,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 35 | DEFINE_GUID(IID_IHTMLPhraseElement,0x3050f20a,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 36 | DEFINE_GUID(IID_IHTMLCommentElement,0x3050f20c,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 37 | DEFINE_GUID(IID_IHTMLListElement,0x3050f20e,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 38 | DEFINE_GUID(IID_IHTMLOptionElement,0x3050f211,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 39 | DEFINE_GUID(IID_IHTMLDivPosition,0x3050f212,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 40 | DEFINE_GUID(IID_IHTMLDialog,0x3050f216,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 41 | DEFINE_GUID(IID_IHTMLTextElement,0x3050f218,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 42 | DEFINE_GUID(IID_IHTMLTable,0x3050f21e,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 43 | DEFINE_GUID(IID_IHTMLElementCollection,0x3050f21f,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 44 | DEFINE_GUID(IID_IHTMLTextContainer,0x3050f230,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 45 | DEFINE_GUID(IID_IHTMLTableCol,0x3050f23a,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 46 | DEFINE_GUID(IID_IHTMLTableSection,0x3050f23b,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 47 | DEFINE_GUID(IID_IHTMLTableRow,0x3050f23c,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 48 | DEFINE_GUID(IID_IHTMLTableCell,0x3050f23d,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 49 | DEFINE_GUID(IID_IHTMLSelectElement,0x3050f244,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 50 | DEFINE_GUID(IID_IHTMLObjectElement,0x3050f24f,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 51 | DEFINE_GUID(IID_IHTMLStyle,0x3050f25e,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 52 | DEFINE_GUID(IID_IHTMLEmbedElement,0x3050f25f,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 53 | DEFINE_GUID(IID_IHTMLAreaElement,0x3050f265,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 54 | DEFINE_GUID(IID_IHTMLMapElement,0x3050f266,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 55 | DEFINE_GUID(IID_IHTMLScriptElement,0x3050f28b,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 56 | DEFINE_GUID(IID_IHTMLControlRange,0x3050f29c,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 57 | DEFINE_GUID(IID_IHTMLInputHiddenElement,0x3050f2a4,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 58 | DEFINE_GUID(IID_IHTMLInputTextElement,0x3050f2a6,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 59 | DEFINE_GUID(IID_IHTMLTextAreaElement,0x3050f2aa,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 60 | DEFINE_GUID(IID_IHTMLInputFileElement,0x3050f2ad,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 61 | DEFINE_GUID(IID_IHTMLInputButtonElement,0x3050f2b2,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 62 | DEFINE_GUID(IID_IHTMLMarqueeElement,0x3050f2b5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 63 | DEFINE_GUID(IID_IHTMLButtonElement,0x3050f2bb,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 64 | DEFINE_GUID(IID_IHTMLOptionButtonElement,0x3050f2bc,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 65 | DEFINE_GUID(IID_IHTMLInputImage,0x3050f2c2,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 66 | DEFINE_GUID(IID_IHTMLStyleSheet,0x3050f2e3,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 67 | DEFINE_GUID(IID_IHTMLStyleSheetRulesCollection,0x3050f2e5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 68 | DEFINE_GUID(IID_IHTMLTableCaption,0x3050f2eb,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 69 | DEFINE_GUID(IID_IHTMLFrameBase,0x3050f311,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 70 | DEFINE_GUID(IID_IHTMLFrameElement,0x3050f313,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 71 | DEFINE_GUID(IID_IHTMLIFrameElement,0x3050f315,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 72 | DEFINE_GUID(IID_IHTMLFrameSetElement,0x3050f319,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 73 | DEFINE_GUID(IID_IHTMLTitleElement,0x3050f322,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 74 | DEFINE_GUID(IID_IHTMLLabelElement,0x3050f32a,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 75 | DEFINE_GUID(IID_IHTMLEventObj,0x3050f32d,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 76 | DEFINE_GUID(IID_IHTMLStyleSheetRule,0x3050f357,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 77 | DEFINE_GUID(IID_IHTMLScreen,0x3050f35c,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 78 | DEFINE_GUID(IID_IHTMLBGsound,0x3050f369,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 79 | DEFINE_GUID(IID_IHTMLStyleElement,0x3050f375,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 80 | DEFINE_GUID(IID_IHTMLFontNamesCollection,0x3050f376,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 81 | DEFINE_GUID(IID_IHTMLFontSizesCollection,0x3050f377,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 82 | DEFINE_GUID(IID_IHTMLOptionsHolder,0x3050f378,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 83 | DEFINE_GUID(IID_IHTMLStyleSheetsCollection,0x3050f37e,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 84 | DEFINE_GUID(IID_IHTMLAreasCollection,0x3050f383,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 85 | DEFINE_GUID(IID_IHTMLNoShowElement,0x3050f38a,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 86 | DEFINE_GUID(IID_IHTMLOptionElementFactory,0x3050f38c,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 87 | DEFINE_GUID(IID_IHTMLImageElementFactory,0x3050f38e,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 88 | DEFINE_GUID(IID_IHTMLRuleStyle,0x3050f3cf,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 89 | DEFINE_GUID(IID_IHTMLStyleFontFace,0x3050f3d5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 90 | DEFINE_GUID(IID_IHTMLCurrentStyle,0x3050f3db,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 91 | DEFINE_GUID(IID_IHTMLSpanFlow,0x3050f3e5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 92 | DEFINE_GUID(IID_IHTMLFieldSetElement,0x3050f3e7,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 93 | DEFINE_GUID(IID_IHTMLLegendElement,0x3050f3ea,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 94 | DEFINE_GUID(IID_IHTMLFiltersCollection,0x3050f3ee,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 95 | DEFINE_GUID(IID_IHTMLDatabinding,0x3050f3f2,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 96 | DEFINE_GUID(IID_IHTMLSpanElement,0x3050f3f3,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 97 | DEFINE_GUID(IID_IHTMLMimeTypesCollection,0x3050f3fc,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 98 | DEFINE_GUID(IID_IHTMLPluginsCollection,0x3050f3fd,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 99 | DEFINE_GUID(IID_IHTMLOpsProfile,0x3050f401,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 100 | DEFINE_GUID(IID_IHTMLTextRangeMetrics,0x3050f40b,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 101 | DEFINE_GUID(IID_IHTMLTableRowMetrics,0x3050f413,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 102 | DEFINE_GUID(IID_IHTMLElement2,0x3050f434,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 103 | DEFINE_GUID(IID_IHTMLDocument3,0x3050f485,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 104 | DEFINE_GUID(IID_IHTMLEventObj2,0x3050f48b,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 105 | DEFINE_GUID(IID_IHTMLUserDataOM,0x3050f48f,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 106 | DEFINE_GUID(IID_IHTMLTableRow2,0x3050f4a1,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 107 | DEFINE_GUID(IID_IHTMLStyle2,0x3050f4a2,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 108 | DEFINE_GUID(IID_IHTMLRect,0x3050f4a3,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 109 | DEFINE_GUID(IID_IHTMLRectCollection,0x3050f4a4,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 110 | DEFINE_GUID(IID_IHTMLTextRangeMetrics2,0x3050f4a6,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 111 | DEFINE_GUID(IID_IHTMLRuleStyle2,0x3050f4ac,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 112 | DEFINE_GUID(IID_IHTMLTable2,0x3050f4ad,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 113 | DEFINE_GUID(IID_IHTMLWindow3,0x3050f4ae,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 114 | DEFINE_GUID(IID_IHTMLDOMAttribute,0x3050f4b0,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 115 | DEFINE_GUID(IID_IHTMLDOMTextNode,0x3050f4b1,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 116 | DEFINE_GUID(IID_IHTMLDataTransfer,0x3050f4b3,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 117 | DEFINE_GUID(IID_IHTMLGenericElement,0x3050f4b7,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 118 | DEFINE_GUID(IID_IHTMLPersistDataOM,0x3050f4c0,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 119 | DEFINE_GUID(IID_IHTMLAttributeCollection,0x3050f4c3,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 120 | DEFINE_GUID(IID_IHTMLPersistData,0x3050f4c5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 121 | DEFINE_GUID(IID_IHTMLObjectElement2,0x3050f4cd,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 122 | DEFINE_GUID(IID_IHTMLBookmarkCollection,0x3050f4ce,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 123 | DEFINE_GUID(IID_IHTMLUniqueName,0x3050f4d0,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 124 | DEFINE_GUID(IID_IHTMLLinkElement2,0x3050f4e5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 125 | DEFINE_GUID(IID_IHTMLIFrameElement2,0x3050f4e6,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 126 | DEFINE_GUID(IID_IHTMLControlElement,0x3050f4e9,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 127 | DEFINE_GUID(IID_IHTMLFormElement2,0x3050f4f6,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 128 | DEFINE_GUID(IID_IHTMLDOMChildrenCollection,0x3050f5ab,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 129 | DEFINE_GUID(IID_IHTMLBodyElement2,0x3050f5c5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 130 | DEFINE_GUID(IID_IHTMLFrameSetElement2,0x3050f5c6,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 131 | DEFINE_GUID(IID_IHTMLTableSection2,0x3050f5c7,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 132 | DEFINE_GUID(IID_IHTMLAppBehavior2,0x3050f5c9,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 133 | DEFINE_GUID(IID_IHTMLAppBehavior,0x3050f5ca,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 134 | DEFINE_GUID(IID_IHTMLInputElement,0x3050f5d2,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 135 | DEFINE_GUID(IID_IHTMLDOMNode,0x3050f5da,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 136 | DEFINE_GUID(IID_IHTMLDialog2,0x3050f5e0,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 137 | DEFINE_GUID(IID_IHTMLUrnCollection,0x3050f5e2,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 138 | DEFINE_GUID(IID_IHTMLModelessInit,0x3050f5e4,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 139 | DEFINE_GUID(IID_IHTMLDocumentFragment,0x3050f5e5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 140 | DEFINE_GUID(IID_IHTMLAreasCollection2,0x3050f5ec,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 141 | DEFINE_GUID(IID_IHTMLSelectElement2,0x3050f5ed,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 142 | DEFINE_GUID(IID_IHTMLElementCollection2,0x3050f5ee,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b); | |
| 143 | DEFINE_GUID(IID_IHTMLFramesCollection2,0x332c4426,0x26cb,0x11d0,0xb4,0x83,0x0,0xc0,0x4f,0xd9,0x01,0x19); | |
| 144 | DEFINE_GUID(IID_IHTMLWindow2,0x332c4427,0x26cb,0x11d0,0xb4,0x83,0x0,0xc0,0x4f,0xd9,0x01,0x19); | |
| 145 | DEFINE_GUID(IID_IHTMLLocation,0x163bb1e0,0x6e00,0x11cf,0x83,0x7a,0x48,0xdc,0x04,0xc1,0x0,0x0); | |
| 146 | DEFINE_GUID(IID_IHTMLFrameBase2,0x3050f6db,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b); | |
| 147 | DEFINE_GUID(IID_IHTMLFrameBase3,0x3050f82e,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b); |
lib/libc/mingw/libsrc/msxml-uuid.c created+29| ... | ... | @@ -0,0 +1,29 @@ |
| 1 | /* msxml-uuid.c */ | |
| 2 | /* Generate GUIDs for MSXML interfaces */ | |
| 3 | ||
| 4 | #define INITGUID | |
| 5 | #include <basetyps.h> | |
| 6 | DEFINE_GUID(CLSID_DOMDocument,0x2933bf90,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 7 | DEFINE_GUID(CLSID_DOMFreeThreadedDocument,0x2933bf91,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 8 | DEFINE_GUID(CLSID_XMLHTTPRequest,0xed8c108e,0x4349,0x11d2,0x91,0xa4,0x00,0xc0,0x4f,0x79,0x69,0xe8); | |
| 9 | DEFINE_GUID(DIID_XMLDOMDocumentEvents,0x3efaa427,0x272f,0x11d2,0x83,0x6f,0x00,0x00,0xf8,0x7a,0x77,0x82); | |
| 10 | DEFINE_GUID(IID_IXMLDOMAttribute,0x2933bf85,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 11 | DEFINE_GUID(IID_IXMLDOMCharacterData,0x2933bf84,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 12 | DEFINE_GUID(IID_IXMLDOMCDATASection,0x2933bf8a,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 13 | DEFINE_GUID(IID_IXMLDOMComment,0x2933bf88,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 14 | DEFINE_GUID(IID_IXMLDOMDocument,0x2933bf81,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 15 | DEFINE_GUID(IID_IXMLDOMDocumentFragment,0x3efaa413,0x272f,0x11d2,0x83,0x6f,0x00,0x00,0xf8,0x7a,0x77,0x82); | |
| 16 | DEFINE_GUID(IID_IXMLDOMDocumentType,0x2933bf8b,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 17 | DEFINE_GUID(IID_IXMLDOMElement,0x2933bf86,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 18 | DEFINE_GUID(IID_IXMLDOMEntity,0x2933bf8d,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 19 | DEFINE_GUID(IID_IXMLDOMEntityReference,0x2933bf8e,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 20 | DEFINE_GUID(IID_IXMLDOMImplementation,0x2933bf8e,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 21 | DEFINE_GUID(IID_IXMLDOMNamedNodeMap,0x2933bf83,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 22 | DEFINE_GUID(IID_IXMLDOMNode,0x2933bf80,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 23 | DEFINE_GUID(IID_IXMLDOMNodeList,0x2933bf82,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 24 | DEFINE_GUID(IID_IXMLDOMNotation,0x2933bf8c,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 25 | DEFINE_GUID(IID_IXMLDOMParseError,0x3efaa426,0x272f,0x11d2,0x83,0x6f,0x00,0x00,0xf8,0x7a,0x77,0x82); | |
| 26 | DEFINE_GUID(IID_IXMLDOMProcessingInstruction,0x2933bf89,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 27 | DEFINE_GUID(IID_IXMLDOMText,0x2933bf87,0x7b36,0x11d2,0xb2,0x0e,0x00,0xc0,0x4f,0x98,0x3e,0x60); | |
| 28 | DEFINE_GUID(IID_IXMLHttpRequest,0xed8c108d,0x4349,0x11d2,0x91,0xa4,0x00,0xc0,0x4f,0x79,0x69,0xe8); | |
| 29 | DEFINE_GUID(IID_IXTLRuntime,0x3efaa425,0x272f,0x11d2,0x83,0x6f,0x00,0x00,0xf8,0x7a,0x77,0x82); |
lib/libc/mingw/libsrc/netcon-uuid.c created+19| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | /* netcon-uuid.c */ | |
| 2 | /* Generate GUIDs for network connection management interfaces */ | |
| 3 | ||
| 4 | #define INITGUID | |
| 5 | #include <basetyps.h> | |
| 6 | DEFINE_GUID(CLSID_NetSharingManager,0x5c63c1ad,0x3956,0x4ff8,0x84,0x86,0x40,0x03,0x47,0x58,0x31,0x5b); | |
| 7 | DEFINE_GUID(IID_INetConnection,0xc08956a1,0x1cd3,0x11d1,0xb1,0xc5,0x00,0x80,0x5f,0xc1,0x27,0x0e); | |
| 8 | DEFINE_GUID(IID_INetSharingPortMappingProps,0x24b7e9b5,0xe38f,0x4685,0x85,0x1b,0x00,0x89,0x2c,0xf5,0xf9,0x40); | |
| 9 | DEFINE_GUID(IID_INetSharingPortMapping,0xc08956b1,0x1cd3,0x11d1,0xb1,0xc5,0x00,0x80,0x5f,0xc1,0x27,0x0e); | |
| 10 | DEFINE_GUID(IID_INetSharingPortMappingCollection,0x02e4a2de,0xda20,0x4e34,0x89,0xc8,0xac,0x22,0x27,0x5a,0x01,0x0b); | |
| 11 | DEFINE_GUID(IID_INetSharingConfiguration,0xc08956b6,0x1cd3,0x11d1,0xb1,0xc5,0x00,0x80,0x5f,0xc1,0x27,0x0e); | |
| 12 | DEFINE_GUID(IID_IEnumNetSharingPublicConnection,0xc08956b4,0x1cd3,0x11d1,0xb1,0xc5,0x00,0x80,0x5f,0xc1,0x27,0x0e); | |
| 13 | DEFINE_GUID(IID_IEnumNetSharingPrivateConnection,0xc08956b5,0x1cd3,0x11d1,0xb1,0xc5,0x00,0x80,0x5f,0xc1,0x27,0x0e); | |
| 14 | DEFINE_GUID(IID_INetConnectionProps,0xf4277c95,0xce5b,0x463d,0x81,0x67,0x56,0x62,0xd9,0xbc,0xaa,0x72); | |
| 15 | DEFINE_GUID(IID_INetSharingPublicConnectionCollection,0x7d7a6355,0xf372,0x4971,0xa1,0x49,0xbf,0xc9,0x27,0xbe,0x76,0x2a); | |
| 16 | DEFINE_GUID(IID_INetSharingEveryConnectionCollection,0x33c4643c,0x7811,0x46fa,0xa8,0x9a,0x76,0x85,0x97,0xbd,0x72,0x23); | |
| 17 | DEFINE_GUID(IID_INetSharingPrivateConnectionCollection,0x38ae69e0,0x4409,0x402a,0xa2,0xcb,0xe9,0x65,0xc7,0x27,0xf8,0x40); | |
| 18 | DEFINE_GUID(IID_INetSharingManager,0xc08956b7,0x1cd3,0x11d1,0xb1,0xc5,0x00,0x80,0x5f,0xc1,0x27,0x0e); | |
| 19 |
lib/libc/mingw/libsrc/ntddkbd-uuid.c created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | /* from ntddkbd.h */ | |
| 2 | ||
| 3 | #define INITGUID | |
| 4 | #include <basetyps.h> | |
| 5 | ||
| 6 | DEFINE_GUID(GUID_DEVINTERFACE_KEYBOARD, 0x884b96c3, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd); | |
| 7 |
lib/libc/mingw/libsrc/ntddmou-uuid.c created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | /* from ntddmou.h */ | |
| 2 | ||
| 3 | #define INITGUID | |
| 4 | #include <basetyps.h> | |
| 5 | ||
| 6 | DEFINE_GUID(GUID_DEVINTERFACE_MOUSE, 0x378de44c, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd); | |
| 7 |
lib/libc/mingw/libsrc/ntddpar-uuid.c created+12| ... | ... | @@ -0,0 +1,12 @@ |
| 1 | /* Parallel port device GUIDs */ | |
| 2 | /* from ntddpar.h */ | |
| 3 | ||
| 4 | #define INITGUID | |
| 5 | #include <basetyps.h> | |
| 6 | ||
| 7 | #define GUID_PARALLEL_DEVICE GUID_DEVINTERFACE_PARALLEL | |
| 8 | #define GUID_PARCLASS_DEVICE GUID_DEVINTERFACE_PARCLASS | |
| 9 | ||
| 10 | DEFINE_GUID (GUID_DEVINTERFACE_PARALLEL, 0x97F76EF0, 0xF883, 0x11D0, 0xAF, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x84, 0x5C); | |
| 11 | DEFINE_GUID (GUID_DEVINTERFACE_PARCLASS, 0x811FC6A5, 0xF728, 0x11D0, 0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1); | |
| 12 |
lib/libc/mingw/libsrc/ntddscsi-uuid.c created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | /* from ntddscsi.h */ | |
| 2 | ||
| 3 | #define INITGUID | |
| 4 | #include <basetyps.h> | |
| 5 | ||
| 6 | DEFINE_GUID(ScsiRawInterfaceGuid,0x53f56309L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 7 | DEFINE_GUID(WmiScsiAddressGuid,0x53f5630fL,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 8 |
lib/libc/mingw/libsrc/ntddser-uuid.c created+11| ... | ... | @@ -0,0 +1,11 @@ |
| 1 | /* from ntddser.h */ | |
| 2 | ||
| 3 | #define INITGUID | |
| 4 | #include <basetyps.h> | |
| 5 | ||
| 6 | #define GUID_CLASS_COMPORT GUID_DEVINTERFACE_COMPORT | |
| 7 | #define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR | |
| 8 | ||
| 9 | DEFINE_GUID(GUID_DEVINTERFACE_COMPORT, 0x86e0d1e0L, 0x8089, 0x11d0, 0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73); | |
| 10 | DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR, 0x4D36E978L, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); | |
| 11 |
lib/libc/mingw/libsrc/ntddstor-uuid.c created+41| ... | ... | @@ -0,0 +1,41 @@ |
| 1 | /* from ntddstor.h */ | |
| 2 | ||
| 3 | #define INITGUID | |
| 4 | #include <basetyps.h> | |
| 5 | ||
| 6 | DEFINE_GUID(GUID_DEVINTERFACE_DISK, | |
| 7 | 0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); | |
| 8 | ||
| 9 | DEFINE_GUID(GUID_DEVINTERFACE_CDROM, | |
| 10 | 0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); | |
| 11 | ||
| 12 | DEFINE_GUID(GUID_DEVINTERFACE_PARTITION, | |
| 13 | 0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); | |
| 14 | ||
| 15 | DEFINE_GUID(GUID_DEVINTERFACE_TAPE, | |
| 16 | 0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); | |
| 17 | ||
| 18 | DEFINE_GUID(GUID_DEVINTERFACE_WRITEONCEDISK, | |
| 19 | 0x53f5630cL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); | |
| 20 | ||
| 21 | DEFINE_GUID(GUID_DEVINTERFACE_VOLUME, | |
| 22 | 0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); | |
| 23 | ||
| 24 | DEFINE_GUID(GUID_DEVINTERFACE_MEDIUMCHANGER, | |
| 25 | 0x53f56310L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); | |
| 26 | ||
| 27 | DEFINE_GUID(GUID_DEVINTERFACE_FLOPPY, | |
| 28 | 0x53f56311L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); | |
| 29 | ||
| 30 | DEFINE_GUID(GUID_DEVINTERFACE_CDCHANGER, | |
| 31 | 0x53f56312L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); | |
| 32 | ||
| 33 | DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT, | |
| 34 | 0x2accfe60L, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); | |
| 35 | ||
| 36 | DEFINE_GUID(GUID_DEVINTERFACE_HIDDEN_VOLUME, | |
| 37 | 0x7f108a28L, 0x9833, 0x4b3b, 0xb7, 0x80, 0x2c, 0x6b, 0x5f, 0xa5, 0xc0, 0x62); | |
| 38 | ||
| 39 | #define WDI_STORAGE_PREDICT_FAILURE_DPS_GUID \ | |
| 40 | {0xe9f2d03aL, 0x747c, 0x41c2, {0xbb, 0x9a, 0x02, 0xc6, 0x2b, 0x6d, 0x5f, 0xcb}}; | |
| 41 |
lib/libc/mingw/libsrc/ntddvdeo-uuid.c created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | /* from ntddvdeo.h */ | |
| 2 | ||
| 3 | #define INITGUID | |
| 4 | #include <basetyps.h> | |
| 5 | ||
| 6 | DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, 0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99); | |
| 7 |
lib/libc/mingw/libsrc/oaidl-uuid.c created+20| ... | ... | @@ -0,0 +1,20 @@ |
| 1 | /* oaidl-uuid.c */ | |
| 2 | /* Generate GUIDs for OA IDL interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | #define INITGUID | |
| 8 | #include <basetyps.h> | |
| 9 | DEFINE_GUID(IID_IErrorInfo,0x1cf2b120,0x547d,0x101b,0x8e,0x65,0x8,0,0x2b,0x2b,0xd1,0x19); | |
| 10 | DEFINE_GUID(IID_ICreateErrorInfo,0x22f03340,0x547d,0x101b,0x8e,0x65,0x8,0,0x2b,0x2b,0xd1,0x19); | |
| 11 | DEFINE_GUID(IID_ISupportErrorInfo,0xdf0b3d60,0x548f,0x101b,0x8e,0x65,0x8,0,0x2b,0x2b,0xd1,0x19); | |
| 12 | DEFINE_OLEGUID(IID_ICreateTypeInfo,0x20405,0,0); | |
| 13 | DEFINE_OLEGUID(IID_ICreateTypeInfo2,0x2040e,0,0); | |
| 14 | DEFINE_OLEGUID(IID_ICreateTypeLib,0x20406,0,0); | |
| 15 | DEFINE_OLEGUID(IID_ICreateTypeLib2,0x2040F,0,0); | |
| 16 | DEFINE_OLEGUID(IID_ITypeInfo,0x20401,0,0); | |
| 17 | DEFINE_OLEGUID(IID_ITypeInfo2,0x20412,0,0); | |
| 18 | DEFINE_OLEGUID(IID_ITypeLib,0x20402,0,0); | |
| 19 | DEFINE_OLEGUID(IID_ITypeLib2,0x20411,0,0); | |
| 20 | DEFINE_OLEGUID(IID_IEnumVARIANT,0x20404,0,0); |
lib/libc/mingw/libsrc/objidl-uuid.c created+43| ... | ... | @@ -0,0 +1,43 @@ |
| 1 | /* objidl-uuid.c */ | |
| 2 | /* Generate GUIDs for Object IDL interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | #define INITGUID | |
| 8 | #include <basetyps.h> | |
| 9 | DEFINE_OLEGUID(IID_IMarshal,0x3,0,0); | |
| 10 | DEFINE_OLEGUID(IID_IStream,0xc,0,0); | |
| 11 | DEFINE_OLEGUID(IID_IMalloc,0x2,0,0); | |
| 12 | DEFINE_OLEGUID(IID_IMessageFilter,0x16,0,0); | |
| 13 | DEFINE_OLEGUID(IID_IPersist,0x10c,0,0); | |
| 14 | DEFINE_OLEGUID(IID_IPersistFile,0x10b,0,0); | |
| 15 | DEFINE_OLEGUID(IID_IPersistStorage,0x10a,0,0); | |
| 16 | DEFINE_OLEGUID(IID_IPersistStream,0x109,0,0); | |
| 17 | DEFINE_OLEGUID(IID_IMoniker,0xf,0,0); | |
| 18 | DEFINE_OLEGUID(IID_IAdviseSink,0x10f,0,0); | |
| 19 | /*DEFINE_OLEGUID(IID_IAdviseSink2,0x125,0,0);*/ | |
| 20 | DEFINE_OLEGUID(IID_IDataObject,0x10e,0,0); | |
| 21 | DEFINE_OLEGUID(IID_IDataAdviseHolder,0x110,0,0); | |
| 22 | DEFINE_OLEGUID(IID_IStorage,0xb,0,0); | |
| 23 | DEFINE_OLEGUID(IID_IRootStorage,0x12,0,0); | |
| 24 | DEFINE_GUID(IID_IRpcChannelBuffer,0xd5f56b60,0x593b,0x101a,0xb5,0x69,0x8,0,0x2b,0x2d,0xbf,0x7a); | |
| 25 | DEFINE_GUID(IID_IRpcProxyBuffer,0xd5f56a34,0x593b,0x101a,0xb5,0x69,8,0,0x2b,0x2d,0xbf,0x7a); | |
| 26 | DEFINE_GUID(IID_IRpcStubBuffer,0xd5f56afc,0x593b,0x101a,0xb5,0x69,0x8,0,0x2b,0x2d,0xbf,0x7a); | |
| 27 | DEFINE_GUID(IID_ISequentialStream,0xc733a30,0x2a1c,0x11ce,0xad,0xe5,0,0xaa,0,0x44,0x77,0x3d); | |
| 28 | DEFINE_OLEGUID(IID_IStdMarshalInfo,0x18,0,0); | |
| 29 | DEFINE_OLEGUID(IID_IRunningObjectTable,0x10,0,0); | |
| 30 | DEFINE_OLEGUID(IID_IBindCtx,0xe,0,0); | |
| 31 | DEFINE_GUID(IID_IPSFactoryBuffer,0xd5f569d0,0x593b,0x101a,0xb5,0x69,0x8,0,0x2b,0x2d,0xbf,0x7a); | |
| 32 | DEFINE_OLEGUID(IID_ILockBytes,0xa,0,0); | |
| 33 | DEFINE_OLEGUID(IID_IExternalConnection,0x19,0,0); | |
| 34 | DEFINE_OLEGUID(IID_IRunnableObject,0x126,0,0); | |
| 35 | DEFINE_GUID(IID_IROTData,0xf29f6bc0,0x5021,0x11ce,0xaa,0x15,0,0,0x69,0x1,0x29,0x3f); | |
| 36 | DEFINE_OLEGUID(IID_IPropertySetStorage,0x13a,0,0); | |
| 37 | DEFINE_OLEGUID(IID_IPropertyStorage,0x138,0,0); | |
| 38 | DEFINE_OLEGUID(IID_IClassActivator,0x140,0,0); | |
| 39 | DEFINE_GUID(IID_IFillLockBytes,0x99caf010,0x415e,0x11cf,0x88,0x14,0,0xaa,0,0xb5,0x69,0xf5); | |
| 40 | DEFINE_GUID(IID_IProgressNotify,0xa9d758a0,0x4617,0x11cf,0x95,0xfc,0,0xaa,0,0x68,0xd,0xb4); | |
| 41 | DEFINE_OLEGUID(IID_IClientSecurity,0x13D,0,0); | |
| 42 | DEFINE_OLEGUID(IID_IMallocSpy,0x1d,0,0); | |
| 43 | DEFINE_OLEGUID(IID_IServerSecurity,0x13E,0,0); |
lib/libc/mingw/libsrc/objsafe-uuid.c created+9| ... | ... | @@ -0,0 +1,9 @@ |
| 1 | /* objsafe-uuid.c */ | |
| 2 | /* Generate GUIDs for Object Safe interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | #define INITGUID | |
| 8 | #include <basetyps.h> | |
| 9 | DEFINE_GUID(IID_IObjectSafety,0xcb5bdc81,0x93c1,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); |
lib/libc/mingw/libsrc/ocidl-uuid.c created+46| ... | ... | @@ -0,0 +1,46 @@ |
| 1 | /* ocidl-uuid.c */ | |
| 2 | /* Generate GUIDs for OCIDL interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | #define INITGUID | |
| 8 | #include <basetyps.h> | |
| 9 | DEFINE_GUID(IID_IQuickActivate,0xcf51ed10,0x62fe,0x11cf,0xbf,0x86,0,0xa0,0xc9,0x3,0x48,0x36); | |
| 10 | DEFINE_GUID(IID_IOleUndoManager,0xd001f200,0xef97,0x11ce,0x9b,0xc9,0,0xaa,0,0x60,0x8e,0x1); | |
| 11 | DEFINE_GUID(IID_IOleParentUndoUnit,0xa1faf330,0xef97,0x11ce,0x9b,0xc9,0,0xaa,0,0x60,0x8e,0x1); | |
| 12 | DEFINE_GUID(IID_IOleUndoUnit,0x894ad3b0,0xef97,0x11ce,0x9b,0xc9,0,0xaa,0,0x60,0x8e,0x1); | |
| 13 | DEFINE_GUID(IID_IEnumOleUndoUnits,0xb3e7c340,0xef97,0x11ce,0x9b,0xc9,0,0xaa,0,0x60,0x8e,0x1); | |
| 14 | DEFINE_GUID(IID_IPointerInactive,0x55980ba0,0x35aa,0x11cf,0xb6,0x71,0,0xaa,0,0x4c,0xd6,0xd8); | |
| 15 | /*DEFINE_GUID(IID_IAdviseSinkEx,0x3af24290,0xc96,0x11ce,0xa0,0xcf,0,0xaa,0,0x60,0xa,0xb8);*/ | |
| 16 | DEFINE_GUID(IID_IOleInPlaceSiteEx,0x9c2cad80,0x3424,0x11cf,0xb6,0x70,0,0xaa,0,0x4c,0xd6,0xd8); | |
| 17 | DEFINE_GUID(IID_IOleControl,0xb196b288,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 18 | DEFINE_GUID(IID_IOleControlSite,0xB196B289,0xBAB4,0x101A,0xB6,0x9C,0x00,0xAA,0x00,0x34,0x1D,0x07); | |
| 19 | DEFINE_GUID(IID_IPersistPropertyBag,0x37d84f60,0x42cb,0x11ce,0x81,0x35,0,0xaa,0,0x4b,0xb8,0x51); | |
| 20 | DEFINE_GUID(IID_IPersistPropertyBag2,0x22f55881,0x280b,0x11d0,0xa8,0xa9,0,0xa0,0xc9,0xc,0x20,4); | |
| 21 | DEFINE_GUID(IID_IPersistStreamInit,0x7fd52380,0x4e07,0x101b,0xae,0x2d,0x8,0,0x2b,0x2e,0xc7,0x13); | |
| 22 | DEFINE_GUID(IID_IPersistMemory,0xbd1ae5e0,0xa6ae,0x11ce,0xbd,0x37,0x50,0x42,0,0xc1,0,0); | |
| 23 | DEFINE_GUID(IID_IPropertyBag,0x55272a00,0x42cb,0x11ce,0x81,0x35,0,0xaa,0,0x4b,0xb8,0x51); | |
| 24 | DEFINE_GUID(IID_IPropertyBag2,0x22f55882,0x280b,0x11d0,0xa8,0xa9,0,0xa0,0xc9,0xc,0x20,0x4); | |
| 25 | DEFINE_GUID(IID_IPropertyNotifySink,0x9bfbbc02,0xeff1,0x101a,0x84,0xed,0,0xaa,0,0x34,0x1d,0x7); | |
| 26 | DEFINE_GUID(IID_IPropertyPage,0xb196b28d,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 27 | DEFINE_GUID(IID_IPropertyPage2,0x1e44665,0x24ac,0x101b,0x84,0xed,0x8,0,0x2b,0x2e,0xc7,0x13); | |
| 28 | DEFINE_GUID(IID_IPropertyPageSite,0xb196b28c,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 29 | DEFINE_GUID(IID_IFont,0xbef6e002,0xa874,0x101a,0x8b,0xba,0,0xaa,0,0x30,0xc,0xab); | |
| 30 | // Font | |
| 31 | DEFINE_GUID(IID_IFontDisp,0xbef6e003,0xa874,0x101a,0x8b,0xba,0,0xaa,0,0x30,0xc,0xab); | |
| 32 | DEFINE_GUID(IID_IPicture,0x7bf80980,0xbf32,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 33 | // Picture | |
| 34 | DEFINE_GUID(IID_IPictureDisp,0x7bf80981,0xbf32,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 35 | DEFINE_GUID(IID_IProvideClassInfo,0xb196b283,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 36 | DEFINE_GUID(IID_IProvideClassInfo2,0xa6bc3ac0,0xdbaa,0x11ce,0x9d,0xe3,0,0xaa,0,0x4b,0xb8,0x51); | |
| 37 | DEFINE_GUID(IID_IEnumConnectionPoints,0xb196b285,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 38 | DEFINE_GUID(IID_IEnumConnections,0xb196b287,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 39 | DEFINE_GUID(IID_IConnectionPoint,0xb196b286,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 40 | DEFINE_GUID(IID_IConnectionPointContainer,0xb196b284,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 41 | DEFINE_GUID(IID_IClassFactory2,0xb196b28f,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 42 | DEFINE_GUID(IID_IErrorLog,0x3127ca40,0x446e,0x11ce,0x81,0x35,0,0xaa,0,0x4b,0xb8,0x51); | |
| 43 | DEFINE_GUID(IID_IObjectWithSite,0xfc4801a3,0x2ba9,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 44 | DEFINE_GUID(IID_IPerPropertyBrowsing,0x376bd3aa,0x3845,0x101b,0x84,0xed,0x8,0,0x2b,0x2e,0xc7,0x13); | |
| 45 | DEFINE_GUID(IID_ISimpleFrameSite,0x742b0e01,0x14e6,0x101b,0x91,0x4e,0,0xaa,0,0x30,0xc,0xab); | |
| 46 | DEFINE_GUID(IID_ISpecifyPropertyPages,0xb196b28b,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); |
lib/libc/mingw/libsrc/oleacc-uuid.c created+12| ... | ... | @@ -0,0 +1,12 @@ |
| 1 | /* oleacc-uuid.c */ | |
| 2 | /* Generate GUIDs for OLE Accessibility interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | #define INITGUID | |
| 8 | #include <basetyps.h> | |
| 9 | DEFINE_GUID(IID_IAccessible,0x618736e0,0x3c3d,0x11cf,0x81,0x0c,0x00,0xaa,0x00,0x38,0x9b,0x71); | |
| 10 | // IAccessibleHandler TypeLib | |
| 11 | DEFINE_GUID(LIBID_Accessibility, 0x1ea4dbf0, 0x3c3b,0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); | |
| 12 | DEFINE_GUID(IID_IAccessibleHandler, 0x03022430, 0xABC4, 0x11d0, 0xBD, 0xE2, 0x00, 0xAA, 0x00, 0x1A, 0x19, 0x53); |
lib/libc/mingw/libsrc/olectlid-uuid.c created+36| ... | ... | @@ -0,0 +1,36 @@ |
| 1 | /* olectlid-uuid.c */ | |
| 2 | /* Generate GUIDs for OLECTLID interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | /* All CLSIDs defined in this file were extracted from | |
| 8 | * HKEY_CLASSES_ROOT\CLSID\ */ | |
| 9 | ||
| 10 | #define INITGUID | |
| 11 | #include <basetyps.h> | |
| 12 | DEFINE_OLEGUID(IID_IDispatch,0x20400,0,0); | |
| 13 | DEFINE_OLEGUID(IID_IEnumUnknown,0x100,0,0); | |
| 14 | DEFINE_OLEGUID(IID_IEnumString,0x101,0,0); | |
| 15 | DEFINE_OLEGUID(IID_IEnumMoniker,0x102,0,0); | |
| 16 | DEFINE_OLEGUID(IID_IEnumFORMATETC,0x103,0,0); | |
| 17 | DEFINE_OLEGUID(IID_IEnumOLEVERB,0x104,0,0); | |
| 18 | DEFINE_OLEGUID(IID_IEnumSTATDATA,0x105,0,0); | |
| 19 | DEFINE_OLEGUID(IID_IEnumSTATSTG,0xd,0,0); | |
| 20 | DEFINE_OLEGUID(IID_IOleLink,0x11d,0,0); | |
| 21 | DEFINE_OLEGUID(IID_IDebug,0x123,0,0); | |
| 22 | DEFINE_OLEGUID(IID_IDebugStream,0x124,0,0); | |
| 23 | // Font Property Page CLSID | |
| 24 | DEFINE_GUID(CLSID_CFontPropPage, 0x0be35200,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51); | |
| 25 | // Color Property Page CLSID | |
| 26 | DEFINE_GUID(CLSID_CColorPropPage,0xbe35201,0x8f91,0x11ce,0x9d,0xe3,0,0xaa,0,0x4b,0xb8,0x51); | |
| 27 | // Picture Property Page CLSID | |
| 28 | DEFINE_GUID(CLSID_CPicturePropPage,0xbe35202,0x8f91,0x11ce,0x9d,0xe3,0,0xaa,0,0x4b,0xb8,0x51); | |
| 29 | // Standard Font CLSID | |
| 30 | DEFINE_GUID(CLSID_StdFont,0xbe35203,0x8f91,0x11ce,0x9d,0xe3,0,0xaa,0,0x4b,0xb8,0x51); | |
| 31 | // Standard Picture CLSID | |
| 32 | DEFINE_GUID(CLSID_StdPicture,0xbe35204,0x8f91,0x11ce,0x9d,0xe3,0,0xaa,0,0x4b,0xb8,0x51); | |
| 33 | // Picture (Metafile) CLSID | |
| 34 | DEFINE_OLEGUID(CLSID_Picture_Metafile,0x315,0,0); | |
| 35 | // Picture (Device Independent Bitmap) CLSID | |
| 36 | DEFINE_OLEGUID(CLSID_Picture_Dib,0x316,0,0); |
lib/libc/mingw/libsrc/oleidl-uuid.c created+27| ... | ... | @@ -0,0 +1,27 @@ |
| 1 | /* oleidl-uuid.c */ | |
| 2 | /* Generate GUIDs for OLE IDL interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | #define INITGUID | |
| 8 | #include <basetyps.h> | |
| 9 | DEFINE_OLEGUID(IID_IOleCache,0x11e,0,0); | |
| 10 | DEFINE_OLEGUID(IID_IOleCache2,0x128,0,0); | |
| 11 | DEFINE_OLEGUID(IID_IOleCacheControl,0x129,0,0); | |
| 12 | DEFINE_OLEGUID(IID_IViewObject,0x10d,0,0); | |
| 13 | DEFINE_OLEGUID(IID_IViewObject2,0x127,0,0); | |
| 14 | DEFINE_OLEGUID(IID_IDropSource,0x121,0,0); | |
| 15 | DEFINE_OLEGUID(IID_IDropTarget,0x122,0,0); | |
| 16 | DEFINE_OLEGUID(IID_IOleAdviseHolder,0x111,0,0); | |
| 17 | DEFINE_OLEGUID(IID_IOleInPlaceUIWindow,0x115,0,0); | |
| 18 | DEFINE_OLEGUID(IID_IOleInPlaceObject,0x113,0,0); | |
| 19 | DEFINE_OLEGUID(IID_IOleInPlaceActiveObject,0x117,0,0); | |
| 20 | DEFINE_OLEGUID(IID_IOleInPlaceFrame,0x116,0,0); | |
| 21 | DEFINE_OLEGUID(IID_IOleInPlaceSite,0x119,0,0); | |
| 22 | DEFINE_OLEGUID(IID_IOleContainer,0x11b,0,0); | |
| 23 | DEFINE_OLEGUID(IID_IOleItemContainer,0x11c,0,0); | |
| 24 | DEFINE_OLEGUID(IID_IOleClientSite,0x118,0,0); | |
| 25 | DEFINE_OLEGUID(IID_IOleObject,0x112,0,0); | |
| 26 | DEFINE_OLEGUID(IID_IOleWindow,0x114,0,0); | |
| 27 | DEFINE_OLEGUID(IID_IParseDisplayName,0x11a,0,0); |
lib/libc/mingw/libsrc/power-uuid.c created+18| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | /* power-uuid.c */ | |
| 2 | /* Generate GUIDs for OLE Accessibility interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were found at "Registering for Power Events" on MSDN here: | |
| 5 | * http://msdn2.microsoft.com/en-us/library/aa373195.aspx | |
| 6 | */ | |
| 7 | ||
| 8 | #define INITGUID | |
| 9 | #include <basetyps.h> | |
| 10 | DEFINE_GUID(GUID_POWERSCHEME_PERSONALITY, 0x245d8541, 0x3943, 0x4422, 0xb0, 0x25, 0x13, 0xA7, 0x84, 0xF6, 0x79, 0xB7); | |
| 11 | DEFINE_GUID(GUID_MIN_POWER_SAVINGS, 0x8c5e7fda, 0xe8bf, 0x4a96, 0x9a, 0x85, 0xa6, 0xe2, 0x3a, 0x8c, 0x63, 0x5c); | |
| 12 | DEFINE_GUID(GUID_MAX_POWER_SAVINGS, 0xa1841308, 0x3541, 0x4fab, 0xbc, 0x81, 0xf7, 0x15, 0x56, 0xf2, 0x0b, 0x4a); | |
| 13 | DEFINE_GUID(GUID_TYPICAL_POWER_SAVINGS, 0x381b4222, 0xf694, 0x41f0, 0x96, 0x85, 0xff, 0x5b, 0xb2, 0x60, 0xdf, 0x2e); | |
| 14 | DEFINE_GUID(GUID_ACDC_POWER_SOURCE, 0x5d3e9a59, 0xe9D5, 0x4b00, 0xa6, 0xbd, 0xff, 0x34, 0xff, 0x51, 0x65, 0x48); | |
| 15 | DEFINE_GUID(GUID_BATTERY_PERCENTAGE_REMAINING, 0xa7ad8041, 0xb45a, 0x4cae, 0x87, 0xa3, 0xee, 0xcb, 0xb4, 0x68, 0xa9, 0xe1); | |
| 16 | DEFINE_GUID(GUID_IDLE_BACKGROUND_TASK, 0x515c31d8, 0xf734, 0x163d, 0xa0, 0xfd, 0x11, 0xa0, 0x8c, 0x91, 0xe8, 0xf1); | |
| 17 | DEFINE_GUID(GUID_SYSTEM_AWAYMODE, 0x98a7f580, 0x01f7, 0x48aa, 0x9c, 0x0f, 0x44, 0x35, 0x2c, 0x29, 0xe5, 0xC0); | |
| 18 | DEFINE_GUID(GUID_MONITOR_POWER_ON, 0x02731015, 0x4510, 0x4526, 0x99, 0xe6, 0xe5, 0xa1, 0x7e, 0xbd, 0x1a, 0xea); |
lib/libc/mingw/libsrc/powrprof-uuid.c created+15| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | /* | |
| 2 | http://msdn.microsoft.com/en-us/library/aa372725%28v=VS.85%29.aspx | |
| 3 | PowerCreatePossibleSetting GUIDs | |
| 4 | */ | |
| 5 | ||
| 6 | #define INITGUID | |
| 7 | #include <basetyps.h> | |
| 8 | DEFINE_GUID(NO_SUBGROUP_GUID,0xfea3413e,0x7e05,0x4911,0x9a,0x71,0x70,0x03,0x31,0xf1,0xc2,0x94); | |
| 9 | DEFINE_GUID(GUID_DISK_SUBGROUP,0x0012ee47,0x9041,0x4b5d,0x9b,0x77,0x53,0x5f,0xba,0x8b,0x14,0x42); | |
| 10 | DEFINE_GUID(GUID_SYSTEM_BUTTON_SUBGROUP,0x4f971e89,0xeebd,0x4455,0xa8,0xde,0x9e,0x59,0x04,0x0e,0x73,0x47); | |
| 11 | DEFINE_GUID(GUID_PROCESSOR_SETTINGS_SUBGROUP,0x54533251,0x82be,0x4824,0x96,0xc1,0x47,0xb6,0x0b,0x74,0x0d,0x00); | |
| 12 | DEFINE_GUID(GUID_VIDEO_SUBGROUP,0x7516b95f,0xf776,0x4464,0x8c,0x53,0x06,0x16,0x7f,0x40,0xcc,0x99); | |
| 13 | DEFINE_GUID(GUID_BATTERY_SUBGROUP,0xe73a048d,0xbf27,0x4f12,0x97,0x31,0x8b,0x20,0x76,0xe8,0x89,0x1f); | |
| 14 | DEFINE_GUID(GUID_SLEEP_SUBGROUP,0x238C9FA8,0x0AAD,0x41ED,0x83,0xF4,0x97,0xBE,0x24,0x2C,0x8F,0x20); | |
| 15 | DEFINE_GUID(GUID_PCIEXPRESS_SETTINGS_SUBGROUP,0x501a4d13,0x42af,0x4429,0x9f,0xd1,0xa8,0x21,0x8c,0x26,0x8e,0x20); |
lib/libc/mingw/libsrc/uianimation-uuid.c created+44| ... | ... | @@ -0,0 +1,44 @@ |
| 1 | /* uianimation-uuid.c */ | |
| 2 | /* Generate GUIDs for Microsoft Windows Animation Manager interfaces */ | |
| 3 | #define INITGUID | |
| 4 | #include <basetyps.h> | |
| 5 | ||
| 6 | DEFINE_GUID(CLSID_UIAnimationManager, 0x4c1fc63a, 0x695c, 0x47e8, 0xa3,0x39, 0x1a,0x19,0x4b,0xe3,0xd0,0xb8); | |
| 7 | DEFINE_GUID(CLSID_UIAnimationManager2, 0xd25d8842, 0x8884, 0x4a4a, 0xb3,0x21, 0x09,0x13,0x14,0x37,0x9b,0xdd); | |
| 8 | DEFINE_GUID(CLSID_UIAnimationTransitionLibrary, 0x1d6322ad, 0xaa85, 0x4ef5, 0xa8,0x28, 0x86,0xd7,0x10,0x67,0xd1,0x45); | |
| 9 | DEFINE_GUID(CLSID_UIAnimationTransitionLibrary2, 0x812f944a, 0xc5c8, 0x4cd9, 0xb0,0xa6, 0xb3,0xda,0x80,0x2f,0x22,0x8d); | |
| 10 | DEFINE_GUID(CLSID_UIAnimationTransitionFactory, 0x8a9b1cdd, 0xfcd7, 0x419c, 0x8b,0x44, 0x42,0xfd,0x17,0xdb,0x18,0x87); | |
| 11 | DEFINE_GUID(CLSID_UIAnimationTransitionFactory2, 0x84302f97, 0x7f7b, 0x4040, 0xb1,0x90, 0x72,0xac,0x9d,0x18,0xe4,0x20); | |
| 12 | DEFINE_GUID(CLSID_UIAnimationTimer, 0xbfcd4a0c, 0x06b6, 0x4384, 0xb7,0x68, 0x0d,0xaa,0x79,0x2c,0x38,0x0e); | |
| 13 | DEFINE_GUID(IID_IUIAnimationManager, 0x9169896c, 0xac8d, 0x4e7d, 0x94,0xe5, 0x67,0xfa,0x4d,0xc2,0xf2,0xe8); | |
| 14 | DEFINE_GUID(IID_IUIAnimationVariable, 0x8ceeb155, 0x2849, 0x4ce5, 0x94,0x48, 0x91,0xff,0x70,0xe1,0xe4,0xd9); | |
| 15 | DEFINE_GUID(IID_IUIAnimationStoryboard, 0xa8ff128f, 0x9bf9, 0x4af1, 0x9e,0x67, 0xe5,0xe4,0x10,0xde,0xfb,0x84); | |
| 16 | DEFINE_GUID(IID_IUIAnimationTransition, 0xdc6ce252, 0xf731, 0x41cf, 0xb6,0x10, 0x61,0x4b,0x6c,0xa0,0x49,0xad); | |
| 17 | DEFINE_GUID(IID_IUIAnimationStoryboardEventHandler, 0x3d5c9008, 0xec7c, 0x4364, 0x9f,0x8a, 0x9a,0xf3,0xc5,0x8c,0xba,0xe6); | |
| 18 | DEFINE_GUID(IID_IUIAnimationVariableChangeHandler, 0x6358b7ba, 0x87d2, 0x42d5, 0xbf,0x71, 0x82,0xe9,0x19,0xdd,0x58,0x62); | |
| 19 | DEFINE_GUID(IID_IUIAnimationVariableIntegerChangeHandler, 0xbb3e1550, 0x356e, 0x44b0, 0x99,0xda, 0x85,0xac,0x60,0x17,0x86,0x5e); | |
| 20 | DEFINE_GUID(IID_IUIAnimationManagerEventHandler, 0x783321ed, 0x78a3, 0x4366, 0xb5,0x74, 0x6a,0xf6,0x07,0xa6,0x47,0x88); | |
| 21 | DEFINE_GUID(IID_IUIAnimationPriorityComparison, 0x83fa9b74, 0x5f86, 0x4618, 0xbc,0x6a, 0xa2,0xfa,0xc1,0x9b,0x3f,0x44); | |
| 22 | DEFINE_GUID(IID_IUIAnimationManager2, 0xd8b6f7d4, 0x4109, 0x4d3f, 0xac,0xee, 0x87,0x99,0x26,0x96,0x8c,0xb1); | |
| 23 | DEFINE_GUID(IID_IUIAnimationVariable2, 0x4914b304, 0x96ab, 0x44d9, 0x9e,0x77, 0xd5,0x10,0x9b,0x7e,0x74,0x66); | |
| 24 | DEFINE_GUID(IID_IDCompositionAnimation, 0xcbfd91d9, 0x51b2, 0x45e4, 0xb3,0xde, 0xd1,0x9c,0xcf,0xb8,0x63,0xc5); | |
| 25 | DEFINE_GUID(IID_IUIAnimationStoryboard2, 0xae289cd2, 0x12d4, 0x4945, 0x94,0x19, 0x9e,0x41,0xbe,0x03,0x4d,0xf2); | |
| 26 | DEFINE_GUID(IID_IUIAnimationTransition2, 0x62ff9123, 0xa85a, 0x4e9b, 0xa2,0x18, 0x43,0x5a,0x93,0xe2,0x68,0xfd); | |
| 27 | DEFINE_GUID(IID_IUIAnimationLoopIterationChangeHandler2, 0x2d3b15a4, 0x4762, 0x47ab, 0xa0,0x30, 0xb2,0x32,0x21,0xdf,0x3a,0xe0); | |
| 28 | DEFINE_GUID(IID_IUIAnimationStoryboardEventHandler2, 0xbac5f55a, 0xba7c, 0x414c, 0xb5,0x99, 0xfb,0xf8,0x50,0xf5,0x53,0xc6); | |
| 29 | DEFINE_GUID(IID_IUIAnimationVariableChangeHandler2, 0x63acc8d2, 0x6eae, 0x4bb0, 0xb8,0x79, 0x58,0x6d,0xd8,0xcf,0xbe,0x42); | |
| 30 | DEFINE_GUID(IID_IUIAnimationVariableIntegerChangeHandler2, 0x829b6cf1, 0x4f3a, 0x4412, 0xae,0x09, 0xb2,0x43,0xeb,0x4c,0x6b,0x58); | |
| 31 | DEFINE_GUID(IID_IUIAnimationVariableCurveChangeHandler2, 0x72895e91, 0x0145, 0x4c21, 0x91,0x92, 0x5a,0xab,0x40,0xed,0xdf,0x80); | |
| 32 | DEFINE_GUID(IID_IUIAnimationManagerEventHandler2, 0xf6e022ba, 0xbff3, 0x42ec, 0x90,0x33, 0xe0,0x73,0xf3,0x3e,0x83,0xc3); | |
| 33 | DEFINE_GUID(IID_IUIAnimationPriorityComparison2, 0x5b6d7a37, 0x4621, 0x467c, 0x8b,0x05, 0x70,0x13,0x1d,0xe6,0x2d,0xdb); | |
| 34 | DEFINE_GUID(IID_IUIAnimationTransitionLibrary, 0xca5a14b1, 0xd24f, 0x48b8, 0x8f,0xe4, 0xc7,0x81,0x69,0xba,0x95,0x4e); | |
| 35 | DEFINE_GUID(IID_IUIAnimationTransitionLibrary2, 0x03cfae53, 0x9580, 0x4ee3, 0xb3,0x63, 0x2e,0xce,0x51,0xb4,0xaf,0x6a); | |
| 36 | DEFINE_GUID(IID_IUIAnimationTransitionFactory, 0xfcd91e03, 0x3e3b, 0x45ad, 0xbb,0xb1, 0x6d,0xfc,0x81,0x53,0x74,0x3d); | |
| 37 | DEFINE_GUID(IID_IUIAnimationInterpolator, 0x7815cbba, 0xddf7, 0x478c, 0xa4,0x6c, 0x7b,0x6c,0x73,0x8b,0x79,0x78); | |
| 38 | DEFINE_GUID(IID_IUIAnimationTransitionFactory2, 0x937d4916, 0xc1a6, 0x42d5, 0x88,0xd8, 0x30,0x34,0x4d,0x6e,0xfe,0x31); | |
| 39 | DEFINE_GUID(IID_IUIAnimationInterpolator2, 0xea76aff8, 0xea22, 0x4a23, 0xa0,0xef, 0xa6,0xa9,0x66,0x70,0x35,0x18); | |
| 40 | DEFINE_GUID(IID_IUIAnimationPrimitiveInterpolation, 0xbab20d63, 0x4361, 0x45da, 0xa2,0x4f, 0xab,0x85,0x08,0x84,0x6b,0x5b); | |
| 41 | DEFINE_GUID(IID_IUIAnimationTimer, 0x6b0efad1, 0xa053, 0x41d6, 0x90,0x85, 0x33,0xa6,0x89,0x14,0x46,0x65); | |
| 42 | DEFINE_GUID(IID_IUIAnimationTimerUpdateHandler, 0x195509b7, 0x5d5e, 0x4e3e, 0xb2,0x78, 0xee,0x37,0x59,0xb3,0x67,0xad); | |
| 43 | DEFINE_GUID(IID_IUIAnimationTimerClientEventHandler, 0xbedb4db6, 0x94fa, 0x4bfb, 0xa4,0x7f, 0xef,0x2d,0x9e,0x40,0x8c,0x25); | |
| 44 | DEFINE_GUID(IID_IUIAnimationTimerEventHandler, 0x274a7dea, 0xd771, 0x4095, 0xab,0xbd, 0x8d,0xf7,0xab,0xd2,0x3c,0xe3); |
lib/libc/mingw/libsrc/usbcamdi-uuid.c created+7| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | /* from usbcamdi.h */ | |
| 2 | ||
| 3 | #define INITGUID | |
| 4 | #include <basetyps.h> | |
| 5 | ||
| 6 | DEFINE_GUID(GUID_USBCAMD_INTERFACE, 0x2bcb75c0, 0xb27f, 0x11d1, 0xba, 0x41, 0x0, 0xa0, 0xc9, 0xd, 0x2b, 0x5); | |
| 7 |
lib/libc/mingw/libsrc/usbiodef-uuid.c created+18| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | /* from usbiodef.h */ | |
| 2 | ||
| 3 | #define INITGUID | |
| 4 | #include <basetyps.h> | |
| 5 | ||
| 6 | DEFINE_GUID(GUID_DEVINTERFACE_USB_HUB, 0xF18A0E88, 0xc30C, 0x11D0, 0x88, 0x15, 0x00, 0xA0, 0xC9, 0x06, 0xBE, 0xD8); | |
| 7 | DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE, 0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED); | |
| 8 | DEFINE_GUID(GUID_DEVINTERFACE_USB_HOST_CONTROLLER, 0x3ABF6F2D, 0x71C4, 0x462A, 0x8A, 0x92, 0x1E, 0x68, 0x61, 0xE6, 0xAF, 0x27); | |
| 9 | DEFINE_GUID(GUID_USB_WMI_STD_DATA, 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2); | |
| 10 | DEFINE_GUID(GUID_USB_WMI_STD_NOTIFICATION, 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2); | |
| 11 | ||
| 12 | DEFINE_GUID(GUID_USB_WMI_DEVICE_PERF_INFO, 0x66c1aa3c, 0x499f, 0x49a0, 0xa9, 0xa5, 0x61, 0xe2, 0x35, 0x9f, 0x64, 0x7); | |
| 13 | DEFINE_GUID(GUID_USB_WMI_NODE_INFO, 0x9c179357, 0xdc7a, 0x4f41, 0xb6, 0x6b, 0x32, 0x3b, 0x9d, 0xdc, 0xb5, 0xb1); | |
| 14 | DEFINE_GUID(GUID_USB_WMI_HUB_DIAGNOSTICS, 0xad0379e4, 0x72db, 0x42ed, 0xba, 0x6e, 0x67, 0x57, 0x4, 0x79, 0x7, 0xd); | |
| 15 | DEFINE_GUID(GUID_USB_WMI_TRACING, 0x3a61881b, 0xb4e6, 0x4bf9, 0xae, 0xf, 0x3c, 0xd8, 0xf3, 0x94, 0xe5, 0x2f); | |
| 16 | DEFINE_GUID(GUID_USB_TRANSFER_TRACING, 0x681eb8aa, 0x403d, 0x452c, 0x9f, 0x8a, 0xf0, 0x61, 0x6f, 0xac, 0x95, 0x40); | |
| 17 | DEFINE_GUID(GUID_USB_PERFORMANCE_TRACING, 0xd5de77a6, 0x6ae9, 0x425c, 0xb1, 0xe2, 0xf5, 0x61, 0x5f, 0xd3, 0x48, 0xa9); | |
| 18 |
lib/libc/mingw/libsrc/uuid.c created+397| ... | ... | @@ -0,0 +1,397 @@ |
| 1 | /* | |
| 2 | Generate GUIDs for OLE and other interfaces. | |
| 3 | ||
| 4 | This file was generated by extracting the names of all GUIDs | |
| 5 | from uuid.lib. The names were in turn processed by a script | |
| 6 | to build a C program that when run generated this file. | |
| 7 | Some definitions were added by hand afterwards. | |
| 8 | */ | |
| 9 | ||
| 10 | /* | |
| 11 | TODO: Break up into smaller units, based on declarations in headers. | |
| 12 | */ | |
| 13 | ||
| 14 | #define INITGUID | |
| 15 | #include <basetyps.h> | |
| 16 | ||
| 17 | #include <textstor.h> | |
| 18 | #include <shobjidl.h> | |
| 19 | #include <propkey.h> | |
| 20 | #include <isguids.h> | |
| 21 | #include <shlguid.h> | |
| 22 | #include <urlhist.h> | |
| 23 | #include <oleacc.h> | |
| 24 | #include <oledb.h> | |
| 25 | #include <uiautomation.h> | |
| 26 | #include <urlmon.h> | |
| 27 | #include <d2d1_1.h> | |
| 28 | #include <d3d11_1.h> | |
| 29 | #include <netlistmgr.h> | |
| 30 | ||
| 31 | DEFINE_GUID(ARRAYID_PathProperties,0x7ecbba04,0x2d97,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 32 | DEFINE_GUID(CATID_InternetAware,0xde86a58,0x2baa,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 33 | DEFINE_GUID(CATID_IsShortcut,0x40fc6ed6,0x2438,0x11cf,0xa3,0xdb,0x8,0,0x36,0xf1,0x25,0x2); | |
| 34 | DEFINE_GUID(CATID_NeverShowExt,0x40fc6ed7,0x2438,0x11cf,0xa3,0xdb,0x8,0,0x36,0xf1,0x25,0x2); | |
| 35 | DEFINE_GUID(CATID_PersistsToFile,0xde86a56,0x2baa,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 36 | DEFINE_GUID(CATID_PersistsToMemory,0xde86a55,0x2baa,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 37 | DEFINE_GUID(CATID_PersistsToMoniker,0xde86a51,0x2baa,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 38 | DEFINE_GUID(CATID_RequiresDataPathHost,0xde86a50,0x2baa,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 39 | DEFINE_GUID(CATID_SafeForInitializing,0x7dd95802,0x9882,0x11cf,0x9f,0xa9,0,0xaa,0,0x6c,0x42,0xc4); | |
| 40 | DEFINE_GUID(CATID_SafeForScripting,0x7dd95801,0x9882,0x11cf,0x9f,0xa9,0,0xaa,0,0x6c,0x42,0xc4); | |
| 41 | DEFINE_GUID(CLSID_AllClasses,0x330,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 42 | DEFINE_GUID(CLSID_CColorPropPage,0xbe35201,0x8f91,0x11ce,0x9d,0xe3,0,0xaa,0,0x4b,0xb8,0x51); | |
| 43 | DEFINE_GUID(CLSID_CFontPropPage, 0x0be35200,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51); | |
| 44 | DEFINE_GUID(CLSID_CPicturePropPage,0xbe35202,0x8f91,0x11ce,0x9d,0xe3,0,0xaa,0,0x4b,0xb8,0x51); | |
| 45 | DEFINE_GUID(CLSID_ConvertVBX,0xfb8f0822,0x164,0x101b,0x84,0xed,0x8,0,0x2b,0x2e,0xc7,0x13); | |
| 46 | DEFINE_GUID(CLSID_CurrentUserClasses,0x332,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 47 | DEFINE_GUID(CLSID_IdentityUnmarshal,0x1b,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 48 | DEFINE_GUID(CLSID_InProcFreeMarshaler,0x1c,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 49 | DEFINE_GUID(CLSID_LocalMachineClasses,0x331,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 50 | DEFINE_GUID(CLSID_PSBindCtx,0x312,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 51 | DEFINE_GUID(CLSID_PSClassObject,0x30E,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 52 | DEFINE_GUID(CLSID_PSClientSite,0x30d,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 53 | DEFINE_GUID(CLSID_PSDragDrop,0x311,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 54 | DEFINE_GUID(CLSID_PSEnumerators,0x313,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 55 | DEFINE_GUID(CLSID_PSGenObject,0x30c,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 56 | DEFINE_GUID(CLSID_PSInPlaceActive,0x30f,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 57 | DEFINE_GUID(CLSID_PSInPlaceFrame,0x310,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 58 | DEFINE_GUID(CLSID_PersistPropset,0xfb8f0821,0x164,0x101b,0x84,0xed,0x8,0,0x2b,0x2e,0xc7,0x13); | |
| 59 | DEFINE_GUID(CLSID_Picture_Dib,0x316,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 60 | DEFINE_GUID(CLSID_Picture_EnhMetafile,0x319,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 61 | DEFINE_GUID(CLSID_Picture_Metafile,0x315,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 62 | DEFINE_GUID(CLSID_DCOMAccessControl,0x0000031d,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); | |
| 63 | DEFINE_GUID(CLSID_StaticDib,0x316,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 64 | DEFINE_GUID(CLSID_StaticMetafile,0x315,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 65 | DEFINE_GUID(CLSID_StdFont,0xbe35203,0x8f91,0x11ce,0x9d,0xe3,0,0xaa,0,0x4b,0xb8,0x51); | |
| 66 | DEFINE_GUID(CLSID_StdHlink,0x79eac9d0,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 67 | DEFINE_GUID(CLSID_StdHlinkBrowseContext,0x79eac9d1,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 68 | DEFINE_GUID(CLSID_StdMarshal,0x17,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 69 | DEFINE_GUID(CLSID_StdPicture,0xbe35204,0x8f91,0x11ce,0x9d,0xe3,0,0xaa,0,0x4b,0xb8,0x51); | |
| 70 | DEFINE_GUID(CLSID_StdURLProtocol,0x79eac9e1,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 71 | DEFINE_GUID(CLSID_CTask, 0x148BD520, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03); | |
| 72 | DEFINE_GUID(CLSID_CTaskScheduler, 0x148BD52A, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03); | |
| 73 | DEFINE_GUID(FLAGID_Internet,0x96300da0,0x2bab,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 74 | DEFINE_GUID(FMTID_DocSummaryInformation,0xd5cdd502,0x2e9c,0x101b,0x93,0x97,0x8,0,0x2b,0x2c,0xf9,0xae); | |
| 75 | DEFINE_GUID(FMTID_SummaryInformation,0xf29f85e0,0x4ff9,0x1068,0xab,0x91,0x8,0,0x2b,0x27,0xb3,0xd9); | |
| 76 | DEFINE_GUID(FMTID_UserDefinedProperties,0xd5cdd505,0x2e9c,0x101b,0x93,0x97,0x8,0,0x2b,0x2c,0xf9,0xae); | |
| 77 | DEFINE_GUID(GUID_CHECKVALUEEXCLUSIVE,0x6650430c,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 78 | DEFINE_GUID(GUID_COLOR,0x66504301,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 79 | DEFINE_GUID(GUID_FONTBOLD,0x6650430f,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 80 | DEFINE_GUID(GUID_FONTITALIC,0x66504310,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 81 | DEFINE_GUID(GUID_FONTNAME,0x6650430d,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 82 | DEFINE_GUID(GUID_FONTSIZE,0x6650430e,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 83 | DEFINE_GUID(GUID_FONTSTRIKETHROUGH,0x66504312,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 84 | DEFINE_GUID(GUID_FONTUNDERSCORE,0x66504311,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB); | |
| 85 | DEFINE_GUID(GUID_HANDLE,0x66504313,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 86 | DEFINE_GUID(GUID_HIMETRIC,0x66504300,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 87 | DEFINE_GUID(GUID_HasPathProperties,0x2de81,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 88 | DEFINE_GUID(GUID_OPTIONVALUEEXCLUSIVE,0x6650430b,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 89 | DEFINE_GUID(GUID_PathProperty,0x2de80,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 90 | DEFINE_GUID(GUID_TRISTATE,0x6650430a,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 91 | DEFINE_GUID(GUID_XPOS,0x66504306,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 92 | DEFINE_GUID(GUID_XPOSPIXEL,0x66504302,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 93 | DEFINE_GUID(GUID_XSIZE,0x66504308,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 94 | DEFINE_GUID(GUID_XSIZEPIXEL,0x66504304,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 95 | DEFINE_GUID(GUID_YPOS,0x66504307,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 96 | DEFINE_GUID(GUID_YPOSPIXEL,0x66504303,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 97 | DEFINE_GUID(GUID_YSIZE,0x66504309,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 98 | DEFINE_GUID(GUID_YSIZEPIXEL,0x66504305,0xbe0f,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 99 | /*DEFINE_GUID(IID_IAdviseSink2,0x125,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 100 | DEFINE_GUID(IID_IAdviseSinkEx,0x3af24290,0xc96,0x11ce,0xa0,0xcf,0,0xaa,0,0x60,0xa,0xb8);*/ | |
| 101 | DEFINE_GUID(IID_IAccessControl,0xeedd23e0,0x8410,0x11CE,0xA1,0xC3,0x08,0x00,0x2B,0x2B,0x8D,0x8F); | |
| 102 | DEFINE_GUID(IID_IAsyncMoniker,0x79eac9d3,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 103 | DEFINE_GUID(IID_IAsyncOperation,0x3d8b0590,0xf691,0x11d2,0x8e,0xa9,0x00,0x60,0x97,0xdf,0x5b,0xd4); | |
| 104 | /*DEFINE_GUID(IID_IAuthenticate,0x79eac9d0,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb);*/ | |
| 105 | /*DEFINE_GUID(IID_IBindHost,0xfc4801a1,0x2ba9,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 106 | DEFINE_GUID(IID_IBindProtocol,0x79eac9cd,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb);*/ | |
| 107 | DEFINE_GUID(IID_IBindStatusCallbackMsg,0x79eac9cb,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 108 | DEFINE_GUID(CLSID_InternetSecurityManager, 0x7b8a2d94,0x0ac9,0x11d1,0x89,0x6c,0x00,0xc0,0x4f,0xb6,0xbf,0xc4); | |
| 109 | DEFINE_GUID(CLSID_InternetZoneManager, 0x7B8A2D95,0x0AC9,0x11D1,0x89,0x6C,0x00,0xC0,0x4F,0xB6,0xBF,0xC4); | |
| 110 | /*DEFINE_GUID(IID_IChannelHook,0x1008c4a0,0x7613,0x11cf,0x9a,0xf1,0,0x20,0xaf,0x6e,0x72,0xf4); | |
| 111 | DEFINE_GUID(IID_IClassActivator,0x140,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 112 | DEFINE_GUID(IID_IClassFactory2,0xb196b28f,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 113 | DEFINE_GUID(IID_IClientSecurity,0x13D,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 114 | DEFINE_GUID(IID_IContext, 0x000001c0, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | |
| 115 | /*DEFINE_GUID(IID_ICodeInstall,0x79eac9d1,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 116 | DEFINE_GUID(IID_IConnectionPoint,0xb196b286,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 117 | DEFINE_GUID(IID_IConnectionPointContainer,0xb196b284,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 118 | DEFINE_GUID(IID_IContinue,0x12a,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 119 | /*DEFINE_GUID(IID_IContinueCallback,0xb722bcca,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70);*/ | |
| 120 | /*DEFINE_GUID(IID_ICreateErrorInfo,0x22f03340,0x547d,0x101b,0x8e,0x65,0x8,0,0x2b,0x2b,0xd1,0x19);*/ | |
| 121 | /*DEFINE_GUID(IID_ICreateTypeInfo2,0x2040e,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 122 | /*DEFINE_GUID(IID_ICreateTypeLib,0x20406,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 123 | /*DEFINE_GUID(IID_ICreateTypeLib2,0x2040F,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 124 | /*DEFINE_GUID(IID_IDataAdviseHolder,0x110,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 125 | DEFINE_GUID(IID_IDebug,0x123,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 126 | DEFINE_GUID(IID_IDebugStream,0x124,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 127 | DEFINE_GUID(IID_IDfReserved1,0x13,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 128 | DEFINE_GUID(IID_IDfReserved2,0x14,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 129 | DEFINE_GUID(IID_IDfReserved3,0x15,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 130 | /*DEFINE_GUID(IID_IDropSource,0x121,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 131 | DEFINE_GUID(IID_IDropTarget,0x122,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 132 | DEFINE_GUID(IID_IEmptyVolumeCacheCallBack, 0x6E793361, 0x73C6, 0x11D0, 0x84, 0x69, 0, 0xAA, 0, 0x44, 0x29, 0x1); | |
| 133 | DEFINE_GUID(IID_IEmptyVolumeCache2, 0x02B7E3BA, 0x4DB3, 0x11D2, 0xB2, 0xD9, 0, 0xC0, 0x4F, 0x8E, 0xEC, 0x8C); | |
| 134 | DEFINE_GUID(IID_IEmptyVolumeCache, 0x8FCE5227, 0x04DA, 0x11D1, 0xA0, 0x4, 0, 0x80, 0x5F, 0x8A, 0xBE, 0x6); | |
| 135 | DEFINE_GUID(IID_IEnumCallback,0x108,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 136 | DEFINE_GUID(IID_IEnumContextProps, 0x000001c1, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | |
| 137 | /*DEFINE_GUID(IID_IEnumConnectionPoints,0xb196b285,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 138 | DEFINE_GUID(IID_IEnumConnections,0xb196b287,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7);*/ | |
| 139 | DEFINE_GUID(IID_IEnumGeneric,0x106,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 140 | DEFINE_GUID(IID_IEnumHLITEM,0x79eac9c6,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 141 | DEFINE_GUID(IID_IEnumHolder,0x107,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 142 | /*DEFINE_GUID(IID_IEnumOLEVERB,0x104,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 143 | /*DEFINE_GUID(IID_IEnumOleDocumentViews,0xb722bcc8,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70);*/ | |
| 144 | /*DEFINE_GUID(IID_IEnumOleUndoUnits,0xb3e7c340,0xef97,0x11ce,0x9b,0xc9,0,0xaa,0,0x60,0x8e,0x1);*/ | |
| 145 | /*DEFINE_GUID(IID_IEnumSTATPROPSETSTG,0x13b,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 146 | /*DEFINE_GUID(IID_IEnumSTATPROPSTG,0x139,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 147 | /*DEFINE_GUID(IID_IErrorInfo,0x1cf2b120,0x547d,0x101b,0x8e,0x65,0x8,0,0x2b,0x2b,0xd1,0x19);*/ | |
| 148 | /*DEFINE_GUID(IID_IExternalConnection,0x19,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 149 | DEFINE_GUID(IID_IFillLockBytes,0x99caf010,0x415e,0x11cf,0x88,0x14,0,0xaa,0,0xb5,0x69,0xf5);*/ | |
| 150 | DEFINE_GUID(IID_IFilter,0x89bcb740,0x6119,0x101a,0xbc,0xb7,0,0xdd,0x1,0x6,0x55,0xaf); | |
| 151 | /*DEFINE_GUID(IID_IFont,0xbef6e002,0xa874,0x101a,0x8b,0xba,0,0xaa,0,0x30,0xc,0xab); | |
| 152 | DEFINE_GUID(IID_IFontDisp,0xbef6e003,0xa874,0x101a,0x8b,0xba,0,0xaa,0,0x30,0xc,0xab); | |
| 153 | DEFINE_GUID(IID_IGlobalInterfaceTable,0x146,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 154 | DEFINE_GUID(IID_IHlink,0x79eac9c3,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 155 | DEFINE_GUID(IID_IHlinkBrowseContext,0x79eac9c7,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 156 | DEFINE_GUID(IID_IHlinkFrame,0x79eac9c5,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 157 | DEFINE_GUID(IID_IHlinkSite,0x79eac9c2,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 158 | DEFINE_GUID(IID_IHlinkTarget,0x79eac9c4,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 159 | DEFINE_GUID(IID_IHTMLOMWindowServices, 0x3050F5FC, 0x98B5, 0x11CF, 0xBB, 0x82, 0, 0xAA, 0, 0xBD, 0xCE, 0xB); | |
| 160 | /*DEFINE_GUID(IID_IHttpNegotiate,0x79eac9d2,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb); | |
| 161 | DEFINE_GUID(IID_IHttpSecurity,0x79eac9d7,0xbafa,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb);*/ | |
| 162 | DEFINE_GUID(IID_IInternalMoniker,0x11,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 163 | /*DEFINE_GUID(IID_ILayoutStorage,0xe6d4d90,0x6738,0x11cf,0x96,0x8,0,0xaa,0,0x68,0xd,0xb4); | |
| 164 | DEFINE_GUID(IID_ILockBytes,0xa,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 165 | DEFINE_GUID(IID_IMalloc,0x2,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 166 | DEFINE_GUID(IID_IMallocSpy,0x1d,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 167 | DEFINE_GUID(IID_IMarshal,0x3,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 168 | DEFINE_GUID(IID_IMessageFilter,0x16,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 169 | DEFINE_GUID(IID_IMimeInfo,0xf77459a0,0xbf9a,0x11cf,0xba,0x4e,0,0xc0,0x4f,0xd7,0x8,0x16); | |
| 170 | /*DEFINE_GUID(IID_IMultiQI,0x20,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 171 | DEFINE_GUID(IID_IObjectSafety,0xcb5bdc81,0x93c1,0x11cf,0x8f,0x20,0,0x80,0x5f,0x2c,0xd0,0x64); | |
| 172 | /*DEFINE_GUID(IID_IObjectWithSite,0xfc4801a3,0x2ba9,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 173 | DEFINE_GUID(IID_IOleAdviseHolder,0x111,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 174 | DEFINE_GUID(IID_IOleCache,0x11e,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 175 | DEFINE_GUID(IID_IOleCache2,0x128,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 176 | DEFINE_GUID(IID_IOleCacheControl,0x129,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 177 | DEFINE_GUID(IID_IOleClientSite,0x118,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 178 | DEFINE_GUID(IID_IOleContainer,0x11b,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 179 | DEFINE_GUID(IID_IOleControl,0xb196b288,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 180 | DEFINE_GUID(IID_IOleControlSite,0xB196B289,0xBAB4,0x101A,0xB6,0x9C,0x00,0xAA,0x00,0x34,0x1D,0x07);*/ | |
| 181 | /*DEFINE_GUID(IID_IOleDocument,0xb722bcc5,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70);*/ | |
| 182 | /*DEFINE_GUID(IID_IOleDocumentSite,0xb722bcc7,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70);*/ | |
| 183 | /*DEFINE_GUID(IID_IOleDocumentView,0xb722bcc6,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70);*/ | |
| 184 | /*DEFINE_GUID(IID_IOleInPlaceActiveObject,0x117,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 185 | DEFINE_GUID(IID_IOleInPlaceFrame,0x116,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 186 | DEFINE_GUID(IID_IOleInPlaceObject,0x113,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 187 | DEFINE_GUID(IID_IOleInPlaceObjectWindowless,0x1c2056cc,0x5ef4,0x101b,0x8b,0xc8,0,0xaa,0,0x3e,0x3b,0x29); | |
| 188 | DEFINE_OLEGUID(IID_IOleInPlaceSite,0x00000119,0,0); | |
| 189 | DEFINE_GUID(IID_IOleInPlaceSiteEx,0x9c2cad80,0x3424,0x11cf,0xb6,0x70,0,0xaa,0,0x4c,0xd6,0xd8); | |
| 190 | DEFINE_GUID(IID_IOleInPlaceSiteWindowless,0x922eada0,0x3424,0x11cf,0xb6,0x70,0,0xaa,0,0x4c,0xd6,0xd8); | |
| 191 | DEFINE_GUID(IID_IOleInPlaceUIWindow,0x115,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 192 | DEFINE_GUID(IID_IOleItemContainer,0x11c,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 193 | DEFINE_GUID(IID_IOleLink,0x11d,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 194 | DEFINE_GUID(IID_IOleManager,0x11f,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 195 | /*DEFINE_GUID(IID_IOleObject,0x112,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 196 | DEFINE_GUID(IID_IOleParentUndoUnit,0xa1faf330,0xef97,0x11ce,0x9b,0xc9,0,0xaa,0,0x60,0x8e,0x1);*/ | |
| 197 | DEFINE_GUID(IID_IOlePresObj,0x120,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 198 | DEFINE_GUID(IID_IOleUndoManager00,0x97d001f2,0xceef,0x9b11,0xc9,0,0xaa,0,0x60,0x8e,0x1,0); | |
| 199 | /*DEFINE_GUID(IID_IOleUndoManager,0xd001f200,0xef97,0x11ce,0x9b,0xc9,0,0xaa,0,0x60,0x8e,0x1); | |
| 200 | DEFINE_GUID(IID_IOleUndoUnit,0x894ad3b0,0xef97,0x11ce,0x9b,0xc9,0,0xaa,0,0x60,0x8e,0x1); | |
| 201 | DEFINE_GUID(IID_IOleWindow,0x114,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 202 | DEFINE_GUID(IID_IOverlappedCompletion,0x521a28f0,0xe40b,0x11ce,0xb2,0xc9,0,0xaa,0,0x68,0x9,0x37); | |
| 203 | DEFINE_GUID(IID_IOverlappedStream,0x49384070,0xe40a,0x11ce,0xb2,0xc9,0,0xaa,0,0x68,0x9,0x37); | |
| 204 | DEFINE_GUID(IID_IPSFactory,0x9,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 205 | /*DEFINE_GUID(IID_IPSFactoryBuffer,0xd5f569d0,0x593b,0x101a,0xb5,0x69,0x8,0,0x2b,0x2d,0xbf,0x7a); | |
| 206 | DEFINE_GUID(IID_IParseDisplayName,0x11a,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 207 | DEFINE_GUID(IID_IPerPropertyBrowsing,0x376bd3aa,0x3845,0x101b,0x84,0xed,0x8,0,0x2b,0x2e,0xc7,0x13); | |
| 208 | DEFINE_GUID(IID_IPersistFile,0x10b,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 209 | DEFINE_GUID(IID_IPersistMemory,0xbd1ae5e0,0xa6ae,0x11ce,0xbd,0x37,0x50,0x42,0,0xc1,0,0); | |
| 210 | DEFINE_GUID(IID_IPersistMoniker,0x79eac9c9,0xbaf9,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0x0b); | |
| 211 | DEFINE_GUID(IID_IPersistPropertyBag,0x37d84f60,0x42cb,0x11ce,0x81,0x35,0,0xaa,0,0x4b,0xb8,0x51); | |
| 212 | DEFINE_GUID(IID_IPersistPropertyBag2,0x22f55881,0x280b,0x11d0,0xa8,0xa9,0,0xa0,0xc9,0xc,0x20,4); | |
| 213 | DEFINE_OLEGUID(IID_IPersistStorage,0x0000010a,0,0); | |
| 214 | DEFINE_GUID(IID_IPersistStreamInit,0x7fd52380,0x4e07,0x101b,0xae,0x2d,0x8,0,0x2b,0x2e,0xc7,0x13); | |
| 215 | DEFINE_GUID(IID_IPicture,0x7bf80980,0xbf32,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 216 | DEFINE_GUID(IID_IPictureDisp,0x7bf80981,0xbf32,0x101a,0x8b,0xbb,0,0xaa,0,0x30,0xc,0xab); | |
| 217 | DEFINE_GUID(IID_IPointerInactive,0x55980ba0,0x35aa,0x11cf,0xb6,0x71,0,0xaa,0,0x4c,0xd6,0xd8);*/ | |
| 218 | /*DEFINE_GUID(IID_IPrint,0xb722bcc9,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70);*/ | |
| 219 | /*DEFINE_GUID(IID_IProgressNotify,0xa9d758a0,0x4617,0x11cf,0x95,0xfc,0,0xaa,0,0x68,0xd,0xb4);*/ | |
| 220 | DEFINE_GUID(IID_IPropertyFrame,0xb196b28a,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 221 | /*DEFINE_GUID(IID_IPropertyNotifySink,0x9bfbbc02,0xeff1,0x101a,0x84,0xed,0,0xaa,0,0x34,0x1d,0x7); | |
| 222 | DEFINE_GUID(IID_IPropertyPage,0xb196b28d,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 223 | DEFINE_GUID(IID_IPropertyPage2,0x1e44665,0x24ac,0x101b,0x84,0xed,0x8,0,0x2b,0x2e,0xc7,0x13); | |
| 224 | DEFINE_GUID(IID_IPropertyPageSite,0xb196b28c,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7);*/ | |
| 225 | /*DEFINE_GUID(IID_IPropertySetStorage,0x13a,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 226 | /*DEFINE_GUID(IID_IPropertyStorage,0x138,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 227 | /*DEFINE_GUID(IID_IProvideClassInfo,0xb196b283,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7); | |
| 228 | DEFINE_GUID(IID_IProvideClassInfo2,0xa6bc3ac0,0xdbaa,0x11ce,0x9d,0xe3,0,0xaa,0,0x4b,0xb8,0x51);*/ | |
| 229 | DEFINE_GUID(IID_IProvideTaskPage, 0x4086658A, 0xCBBB, 0x11CF, 0xB6, 0x4, 0, 0xC0, 0x4F, 0xD8, 0xD5, 0x65); | |
| 230 | DEFINE_GUID(IID_IProxy,0x27,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 231 | DEFINE_GUID(IID_IProxyManager,0x8,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 232 | /*DEFINE_GUID(IID_IQuickActivate,0xcf51ed10,0x62fe,0x11cf,0xbf,0x86,0,0xa0,0xc9,0x3,0x48,0x36);*/ | |
| 233 | /*DEFINE_GUID(IID_IROTData,0xf29f6bc0,0x5021,0x11ce,0xaa,0x15,0,0,0x69,0x1,0x29,0x3f);*/ | |
| 234 | DEFINE_GUID(IID_IRichEditOle,0x20d00,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 235 | DEFINE_GUID(IID_IRichEditOleCallback,0x20d03,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 236 | /*DEFINE_GUID(IID_IRootStorage,0x12,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 237 | DEFINE_GUID(IID_IRpcChannel,0x4,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 238 | /*DEFINE_GUID(IID_IRpcChannelBuffer,0xd5f56b60,0x593b,0x101a,0xb5,0x69,0x8,0,0x2b,0x2d,0xbf,0x7a);*/ | |
| 239 | DEFINE_GUID(IID_IRpcProxy,0x7,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 240 | /*DEFINE_GUID(IID_IRpcProxyBuffer,0xd5f56a34,0x593b,0x101a,0xb5,0x69,8,0,0x2b,0x2d,0xbf,0x7a);*/ | |
| 241 | DEFINE_GUID(IID_IRpcProxyBuffer34,0x3bd5f56a,0x1a59,0xb510,0x69,0x8,0,0x2b,0x2d,0xbf,0x7a,0); | |
| 242 | DEFINE_GUID(IID_IRpcStub,0x5,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 243 | /*DEFINE_GUID(IID_IRpcStubBuffer,0xd5f56afc,0x593b,0x101a,0xb5,0x69,0x8,0,0x2b,0x2d,0xbf,0x7a);*/ | |
| 244 | /*DEFINE_OLEGUID(IID_IRunnableObject,0x00000126,0,0);*/ | |
| 245 | DEFINE_GUID(IID_IScheduledWorkItem, 0xA6B952F0, 0xA4B1, 0x11D0, 0x99, 0x7D, 0, 0xAA, 0, 0x68, 0x87, 0xEC); | |
| 246 | /*DEFINE_GUID(IID_IServerSecurity,0x13E,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 247 | /*DEFINE_GUID(IID_ISimpleFrameSite,0x742b0e01,0x14e6,0x101b,0x91,0x4e,0,0xaa,0,0x30,0xc,0xab);*/ | |
| 248 | /*DEFINE_GUID(IID_ISpecifyPropertyPages,0xb196b28b,0xbab4,0x101a,0xb6,0x9c,0,0xaa,0,0x34,0x1d,0x7);*/ | |
| 249 | /*DEFINE_OLEGUID(IID_IStdMarshalInfo,24,0,0);*/ | |
| 250 | DEFINE_GUID(IID_IStub,0x26,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 251 | DEFINE_GUID(IID_IStubManager,0x6,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 252 | /*DEFINE_GUID(IID_ISupportErrorInfo,0xdf0b3d60,0x548f,0x101b,0x8e,0x65,0x8,0,0x2b,0x2b,0xd1,0x19);*/ | |
| 253 | DEFINE_GUID(IID_ITask, 0x148BD524, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0, 0xAA, 0, 0x53, 0x5, 0x3); | |
| 254 | DEFINE_GUID(IID_ITaskScheduler, 0x148BD527, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0, 0xAA, 0, 0x53, 0x5, 0x3); | |
| 255 | DEFINE_GUID(IID_ITaskTrigger, 0x148BD52B, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0, 0xAA, 0, 0x53, 0x5, 0x3); | |
| 256 | /*DEFINE_GUID(IID_ITypeChangeEvents,0x20410,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 257 | /*DEFINE_GUID(IID_ITypeInfo2,0x20412,0,0,0xc0,0,0,0,0,0,0,0x46); */ | |
| 258 | /*DEFINE_GUID(IID_ITypeLib2,0x20411,0,0,0xc0,0,0,0,0,0,0,0x46); */ | |
| 259 | /*DEFINE_GUID(IID_IViewObject,0x10d,0,0,0xc0,0,0,0,0,0,0,0x46); */ | |
| 260 | /*DEFINE_GUID(IID_IViewObject2,0x127,0,0,0xc0,0,0,0,0,0,0,0x46);*/ | |
| 261 | /*DEFINE_GUID(IID_IViewObjectEx,0x3af24292,0xc96,0x11ce,0xa0,0xcf,0,0xaa,0,0x60,0xa,0xb8);*/ | |
| 262 | /*DEFINE_GUID(IID_IWinInetHttpInfo,0x79eac9d8,0xbafa,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb);*/ | |
| 263 | /*DEFINE_GUID(IID_IWinInetInfo,0x79eac9d6,0xbafa,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb);*/ | |
| 264 | /*DEFINE_GUID(IID_IWindowForBindingUI,0x79eac9d5,0xbafa,0x11ce,0x8c,0x82,0,0xaa,0,0x4b,0xa9,0xb);*/ | |
| 265 | DEFINE_GUID(IID_StdOle,0x20430,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 266 | DEFINE_GUID(OLE_DATAPATH_ALLIMAGE,0x2de0e,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 267 | DEFINE_GUID(OLE_DATAPATH_ALLMM,0x2de18,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 268 | DEFINE_GUID(OLE_DATAPATH_ALLTEXT,0x2de1e,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 269 | DEFINE_GUID(OLE_DATAPATH_ANSITEXT,0x2de19,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 270 | DEFINE_GUID(OLE_DATAPATH_AVI,0x2de0f,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 271 | DEFINE_GUID(OLE_DATAPATH_BASICAUDIO,0x2de12,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 272 | DEFINE_GUID(OLE_DATAPATH_BIFF,0x2de21,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 273 | DEFINE_GUID(OLE_DATAPATH_BMP,0x2de01,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 274 | DEFINE_GUID(OLE_DATAPATH_CGM,0x2de0b,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 275 | DEFINE_GUID(OLE_DATAPATH_COMMONIMAGE,0x2de0d,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 276 | DEFINE_GUID(OLE_DATAPATH_DIB,0x2de02,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 277 | DEFINE_GUID(OLE_DATAPATH_DIF,0x2de1f,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 278 | DEFINE_GUID(OLE_DATAPATH_ENHMF,0x2de04,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 279 | DEFINE_GUID(OLE_DATAPATH_EPS,0x2de0c,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 280 | DEFINE_GUID(OLE_DATAPATH_GIF,0x2de05,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 281 | DEFINE_GUID(OLE_DATAPATH_HTML,0x2de1c,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 282 | DEFINE_GUID(OLE_DATAPATH_JPEG,0x2de06,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 283 | DEFINE_GUID(OLE_DATAPATH_MIDI,0x2de13,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 284 | DEFINE_GUID(OLE_DATAPATH_MPEG,0x2de10,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 285 | DEFINE_GUID(OLE_DATAPATH_PALETTE,0x2de22,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 286 | DEFINE_GUID(OLE_DATAPATH_PCX,0x2de09,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 287 | DEFINE_GUID(OLE_DATAPATH_PENDATA,0x2de23,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 288 | DEFINE_GUID(OLE_DATAPATH_PICT,0x2de0a,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 289 | DEFINE_GUID(OLE_DATAPATH_POSTSCRIPT,0x2de1d,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 290 | DEFINE_GUID(OLE_DATAPATH_QUICKTIME,0x2de11,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 291 | DEFINE_GUID(OLE_DATAPATH_RIFF,0x2de15,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 292 | DEFINE_GUID(OLE_DATAPATH_RTF,0x2de1b,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 293 | DEFINE_GUID(OLE_DATAPATH_SOUND,0x2de16,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 294 | DEFINE_GUID(OLE_DATAPATH_SYLK,0x2de20,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 295 | DEFINE_GUID(OLE_DATAPATH_TIFF,0x2de07,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 296 | DEFINE_GUID(OLE_DATAPATH_UNICODE,0x2de1a,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 297 | DEFINE_GUID(OLE_DATAPATH_VIDEO,0x2de17,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 298 | DEFINE_GUID(OLE_DATAPATH_WAV,0x2de14,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 299 | DEFINE_GUID(OLE_DATAPATH_WMF,0x2de03,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 300 | DEFINE_GUID(OLE_DATAPATH_XBM,0x2de08,0,0,0xc0,0,0,0,0,0,0,0x46); | |
| 301 | DEFINE_GUID(SID_SContainerDispatch,0xb722be00,0x4e68,0x101b,0xa2,0xbc,0,0xaa,0,0x40,0x47,0x70); | |
| 302 | DEFINE_GUID(SID_SDataPathBrowser,0xfc4801a5,0x2ba9,0x11cf,0xa2,0x29,0,0xaa,0,0x3d,0x73,0x52); | |
| 303 | DEFINE_GUID(CLSID_GlobalOptions,0x0000034b,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); | |
| 304 | DEFINE_GUID(CLSID_StdGlobalInterfaceTable,0x00000323,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46); | |
| 305 | DEFINE_GUID(IID_ICallFrameEvents,0xfd5e0843,0xfc91,0x11d0,0x97,0xd7,0x00,0xc0,0x4f,0xb9,0x61,0x8a); | |
| 306 | DEFINE_GUID(IID_ICallFrameWalker,0x08b23919,0x392d,0x11d2,0xb8,0xa4,0x00,0xc0,0x4f,0xb9,0x61,0x8a); | |
| 307 | DEFINE_GUID(IID_ICallInterceptor,0x60c7ca75,0x896d,0x11d2,0xb8,0xb6,0x00,0xc0,0x4f,0xb9,0x61,0x8a); | |
| 308 | DEFINE_GUID(CLSID_MSDAINITIALIZE,0x2206cdb0,0x19c1,0x11d1,0x89,0xe0,0x00,0xc0,0x4f,0xd7,0xa8,0x29); | |
| 309 | DEFINE_GUID(CLSID_DataLinks,0x2206cdb2,0x19c1,0x11d1,0x89,0xe0,0x00,0xc0,0x4f,0xd7,0xa8,0x29); | |
| 310 | DEFINE_GUID(CLSID_RootBinder,0xff151822,0xb0bf,0x11d1,0xa8,0x0d,0x00,0x00,0x00,0x00,0x00,0x00); | |
| 311 | DEFINE_GUID(IID_IDataInitialize,0x2206ccb1,0x19c1,0x11d1,0x89,0xe0,0x00,0xc0,0x4f,0xd7,0xa8,0x29); | |
| 312 | DEFINE_GUID(IID_IDBInitialize,0x0c733a8b,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 313 | DEFINE_GUID(IID_IAccessor,0x0c733a8c,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 314 | DEFINE_GUID(IID_IRowset,0x0c733a7c,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 315 | DEFINE_GUID(IID_IRowsetInfo,0x0c733a55,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 316 | DEFINE_GUID(IID_IRowsetLocate,0x0c733a7d,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 317 | DEFINE_GUID(IID_IRowsetResynch,0x0c733a84,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 318 | DEFINE_GUID(IID_IRowsetScroll,0x0c733a7e,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 319 | DEFINE_GUID(IID_IRowsetChange,0x0c733a05,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 320 | DEFINE_GUID(IID_IRowsetUpdate,0x0c733a6d,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 321 | DEFINE_GUID(IID_IRowsetIdentity,0x0c733a09,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 322 | DEFINE_GUID(IID_IRowsetNotify,0x0c733a83,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 323 | DEFINE_GUID(IID_IRowsetIndex,0x0c733a82,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 324 | DEFINE_GUID(IID_ICommand,0x0c733a63,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 325 | DEFINE_GUID(IID_IMultipleResults,0x0c733a90,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 326 | DEFINE_GUID(IID_IConvertType,0x0c733a88,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 327 | DEFINE_GUID(IID_ICommandPrepare,0x0c733a26,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 328 | DEFINE_GUID(IID_ICommandProperties,0x0c733a79,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 329 | DEFINE_GUID(IID_ICommandText,0x0c733a27,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 330 | DEFINE_GUID(IID_ICommandWithParameters,0x0c733a64,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 331 | DEFINE_GUID(IID_IColumnsRowset,0x0c733a10,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 332 | DEFINE_GUID(IID_IColumnsInfo,0x0c733a11,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 333 | DEFINE_GUID(IID_IDBCreateCommand,0x0c733a1d,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 334 | DEFINE_GUID(IID_IDBCreateSession,0x0c733a5d,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 335 | DEFINE_GUID(IID_ISourcesRowset,0x0c733a1e,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 336 | DEFINE_GUID(IID_IDBProperties,0x0c733a8a,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 337 | DEFINE_GUID(IID_IDBInfo,0x0c733a89,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 338 | DEFINE_GUID(IID_IDBDataSourceAdmin,0x0c733a7a,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 339 | DEFINE_GUID(IID_ISessionProperties,0x0c733a85,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 340 | DEFINE_GUID(IID_IIndexDefinition,0x0c733a68,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 341 | DEFINE_GUID(IID_ITableDefinition,0x0c733a86,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 342 | DEFINE_GUID(IID_IOpenRowset,0x0c733a69,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 343 | DEFINE_GUID(IID_IDBSchemaRowset,0x0c733a7b,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 344 | DEFINE_GUID(IID_IErrorRecords,0x0c733a67,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 345 | DEFINE_GUID(IID_IErrorLookup,0x0c733a66,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 346 | DEFINE_GUID(IID_ISQLErrorInfo,0x0c733a74,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 347 | DEFINE_GUID(IID_IGetDataSource,0x0c733a75,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 348 | DEFINE_GUID(IID_ITransactionLocal,0x0c733a5f,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 349 | DEFINE_GUID(IID_ITransactionJoin,0x0c733a5e,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 350 | DEFINE_GUID(IID_ITransactionObject,0x0c733a60,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 351 | /* OLE DB v1.5 */ | |
| 352 | DEFINE_GUID(IID_IChapteredRowset,0x0c733a93,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 353 | DEFINE_GUID(IID_IDBAsynchNotify,0x0c733a96,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 354 | DEFINE_GUID(IID_IDBAsynchStatus,0x0c733a95,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 355 | DEFINE_GUID(IID_IRowsetFind,0x0c733a9d,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 356 | DEFINE_GUID(IID_IRowPosition,0x0c733a94,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 357 | DEFINE_GUID(IID_IRowPositionChange,0x0997a571,0x126e,0x11d0,0x9f,0x8a,0x00,0xa0,0xc9,0xa0,0x63,0x1e); | |
| 358 | DEFINE_GUID(IID_IViewRowset,0x0c733a97,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 359 | DEFINE_GUID(IID_IViewChapter,0x0c733a98,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 360 | DEFINE_GUID(IID_IViewSort,0x0c733a9a,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 361 | DEFINE_GUID(IID_IViewFilter,0x0c733a9b,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 362 | DEFINE_GUID(IID_IRowsetView,0x0c733a99,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 363 | /* OLE DB v2.0 */ | |
| 364 | DEFINE_GUID(IID_IMDDataset,0xa07cccd1,0x8148,0x11d0,0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42); | |
| 365 | DEFINE_GUID(IID_IMDFind,0xa07cccd2,0x8148,0x11d0,0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42); | |
| 366 | DEFINE_GUID(IID_IMDRangeRowset,0x0c733aa0,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 367 | DEFINE_GUID(IID_IAlterTable,0x0c733aa5,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 368 | DEFINE_GUID(IID_IAlterIndex,0x0c733aa6,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 369 | DEFINE_GUID(IID_ICommandPersist,0x0c733aa7,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 370 | DEFINE_GUID(IID_IRowsetChapterMember,0x0c733aa8,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 371 | DEFINE_GUID(IID_IRowsetRefresh,0x0c733aa9,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 372 | DEFINE_GUID(IID_IParentRowset,0x0c733aaa,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 373 | /* OLE DB v2.1 */ | |
| 374 | DEFINE_GUID(IID_ITrusteeAdmin,0x0c733aa1,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 375 | DEFINE_GUID(IID_ITrusteeGroupAdmin,0x0c733aa2,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 376 | DEFINE_GUID(IID_IObjectAccessControl,0x0c733aa3,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 377 | DEFINE_GUID(IID_ISecurityInfo,0x0c733aa4,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 378 | DEFINE_GUID(IID_IRow,0x0c733ab4,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 379 | DEFINE_GUID(IID_IRowChange,0x0c733ab5,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 380 | DEFINE_GUID(IID_IRowSchemaChange,0x0c733aae,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 381 | DEFINE_GUID(IID_IGetRow,0x0c733aaf,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 382 | DEFINE_GUID(IID_IScopedOperations,0x0c733ab0,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 383 | DEFINE_GUID(IID_IBindResource,0x0c733ab1,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 384 | DEFINE_GUID(IID_ICreateRow,0x0c733ab2,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 385 | DEFINE_GUID(IID_IColumnsInfo2,0x0c733ab8,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 386 | DEFINE_GUID(IID_IRegisterProvider,0x0c733ab9,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 387 | DEFINE_GUID(IID_IGetSession,0x0c733aba,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 388 | DEFINE_GUID(IID_IGetSourceRow,0x0c733abb,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 389 | DEFINE_GUID(IID_ITableCreation,0x0c733abc,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 390 | DEFINE_GUID(IID_IRowsetCurrentIndex,0x0c733abd,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 391 | /* OLE DB v2.6 */ | |
| 392 | /* | |
| 393 | * The `IID_ICommandStream` may be defined in <sqloledb.h> (when the | |
| 394 | * `DBINITCONSTANTS` is defned). | |
| 395 | DEFINE_GUID(IID_ICommandStream,0x0c733ac0,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); | |
| 396 | */ | |
| 397 | DEFINE_GUID(IID_IRowsetBookmark,0x0c733ac2,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d); |
lib/libc/mingw/libsrc/vds-uuid.c created+12| ... | ... | @@ -0,0 +1,12 @@ |
| 1 | #define INITGUID | |
| 2 | #include <basetyps.h> | |
| 3 | ||
| 4 | /*http://msdn.microsoft.com/en-us/library/aa381635%28VS.85%29.aspx*/ | |
| 5 | ||
| 6 | DEFINE_GUID(PARTITION_ENTRY_UNUSED_GUID,0x00000000,0x0000,0x0000,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00); | |
| 7 | DEFINE_GUID(PARTITION_SYSTEM_GUID,0xc12a7328,0xf81f,0x11d2,0xba,0x4b,0x00,0xa0,0xc9,0x3e,0xc9,0x3b); | |
| 8 | DEFINE_GUID(PARTITION_MSFT_RESERVED_GUID,0xe3c9e316,0x0b5c,0x4db8,0x81,0x7d,0xf9,0x2d,0xf0,0x02,0x15,0xae); | |
| 9 | DEFINE_GUID(PARTITION_BASIC_DATA_GUID,0xebd0a0a2,0xb9e5,0x4433,0x87,0xc0,0x68,0xb6,0xb7,0x26,0x99,0xc7); | |
| 10 | DEFINE_GUID(PARTITION_LDM_METADATA_GUID,0x5808c8aa,0x7e8f,0x42e0,0x85,0xd2,0xe1,0xe9,0x04,0x34,0xcf,0xb3); | |
| 11 | DEFINE_GUID(PARTITION_LDM_DATA_GUID,0xaf9b60a0,0x1431,0x4f62,0xbc,0x68,0x33,0x11,0x71,0x4a,0x69,0xad); | |
| 12 | DEFINE_GUID(PARTITION_MSFT_RECOVERY_GUID,0xde94bba4,0x06d1,0x4d40,0xa1,0x6a,0xbf,0xd5,0x01,0x79,0xd6,0xac); |
lib/libc/mingw/libsrc/virtdisk-uuid.c created+4| ... | ... | @@ -0,0 +1,4 @@ |
| 1 | #define INITGUID | |
| 2 | #include <basetyps.h> | |
| 3 | ||
| 4 | DEFINE_GUID(VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT,0xEC984AEC,0xA0F9,0x47e9,0x90,0x1F,0x71,0x41,0x5A,0x66,0x34,0x5B); |
lib/libc/mingw/libsrc/wia-uuid.c created+106| ... | ... | @@ -0,0 +1,106 @@ |
| 1 | /* unknwn-uuid.c */ | |
| 2 | /* Generate GUIDs for WIA interfaces */ | |
| 3 | ||
| 4 | /* All IIDs defined in this file were extracted from | |
| 5 | * HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ */ | |
| 6 | ||
| 7 | #define INITGUID | |
| 8 | #include <basetyps.h> | |
| 9 | ||
| 10 | // Image types | |
| 11 | DEFINE_GUID(WiaImgFmt_UNDEFINED,0xb96b3ca9,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 12 | DEFINE_GUID(WiaImgFmt_RAWRGB,0xbca48b55,0xf272,0x4371,0xb0,0xf1,0x4a,0x15,0x0d,0x05,0x7b,0xb4); | |
| 13 | DEFINE_GUID(WiaImgFmt_MEMORYBMP,0xb96b3caa,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 14 | DEFINE_GUID(WiaImgFmt_BMP,0xb96b3cab,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 15 | DEFINE_GUID(WiaImgFmt_EMF,0xb96b3cac,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 16 | DEFINE_GUID(WiaImgFmt_WMF,0xb96b3cad,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 17 | DEFINE_GUID(WiaImgFmt_JPEG,0xb96b3cae,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 18 | DEFINE_GUID(WiaImgFmt_PNG,0xb96b3caf,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 19 | DEFINE_GUID(WiaImgFmt_GIF,0xb96b3cb0,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 20 | DEFINE_GUID(WiaImgFmt_TIFF,0xb96b3cb1,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 21 | DEFINE_GUID(WiaImgFmt_EXIF,0xb96b3cb2,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 22 | DEFINE_GUID(WiaImgFmt_PHOTOCD,0xb96b3cb3,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 23 | DEFINE_GUID(WiaImgFmt_FLASHPIX,0xb96b3cb4,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 24 | DEFINE_GUID(WiaImgFmt_ICO,0xb96b3cb5,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); | |
| 25 | DEFINE_GUID(WiaImgFmt_CIFF,0x9821a8ab,0x3a7e,0x4215,0x94,0xe0,0xd2,0x7a,0x46,0x0c,0x03,0xb2); | |
| 26 | DEFINE_GUID(WiaImgFmt_PICT,0xa6bc85d8,0x6b3e,0x40ee,0xa9,0x5c,0x25,0xd4,0x82,0xe4,0x1a,0xdc); | |
| 27 | DEFINE_GUID(WiaImgFmt_JPEG2K,0x344ee2b2,0x39db,0x4dde,0x81,0x73,0xc4,0xb7,0x5f,0x8f,0x1e,0x49); | |
| 28 | DEFINE_GUID(WiaImgFmt_JPEG2KX,0x43e14614,0xc80a,0x4850,0xba,0xf3,0x4b,0x15,0x2d,0xc8,0xda,0x27); | |
| 29 | ||
| 30 | // Document and other types | |
| 31 | DEFINE_GUID(WiaImgFmt_RTF,0x573dd6a3,0x4834,0x432d,0xa9,0xb5,0xe1,0x98,0xdd,0x9e,0x89,0x0d); | |
| 32 | DEFINE_GUID(WiaImgFmt_XML,0xb9171457,0xdac8,0x4884,0xb3,0x93,0x15,0xb4,0x71,0xd5,0xf0,0x7e); | |
| 33 | DEFINE_GUID(WiaImgFmt_HTML,0xc99a4e62,0x99de,0x4a94,0xac,0xca,0x71,0x95,0x6a,0xc2,0x97,0x7d); | |
| 34 | DEFINE_GUID(WiaImgFmt_TXT,0xfafd4d82,0x723f,0x421f,0x93,0x18,0x30,0x50,0x1a,0xc4,0x4b,0x59); | |
| 35 | DEFINE_GUID(WiaImgFmt_MPG,0xecd757e4,0xd2ec,0x4f57,0x95,0x5d,0xbc,0xf8,0xa9,0x7c,0x4e,0x52); | |
| 36 | DEFINE_GUID(WiaImgFmt_AVI,0x32f8ca14,0x087c,0x4908,0xb7,0xc4,0x67,0x57,0xfe,0x7e,0x90,0xab); | |
| 37 | DEFINE_GUID(WiaImgFmt_ASF,0x8d948ee9,0xd0aa,0x4a12,0x9d,0x9a,0x9c,0xc5,0xde,0x36,0x19,0x9b); | |
| 38 | DEFINE_GUID(WiaImgFmt_SCRIPT,0xfe7d6c53,0x2dac,0x446a,0xb0,0xbd,0xd7,0x3e,0x21,0xe9,0x24,0xc9); | |
| 39 | DEFINE_GUID(WiaImgFmt_EXEC,0x485da097,0x141e,0x4aa5,0xbb,0x3b,0xa5,0x61,0x8d,0x95,0xd0,0x2b); | |
| 40 | DEFINE_GUID(WiaImgFmt_UNICODE16,0x1b7639b6,0x6357,0x47d1,0x9a,0x07,0x12,0x45,0x2d,0xc0,0x73,0xe9); | |
| 41 | DEFINE_GUID(WiaImgFmt_DPOF,0x369eeeab,0xa0e8,0x45ca,0x86,0xa6,0xa8,0x3c,0xe5,0x69,0x7e,0x28); | |
| 42 | ||
| 43 | // Audio types | |
| 44 | DEFINE_GUID(WiaAudFmt_WAV,0xf818e146,0x07af,0x40ff,0xae,0x55,0xbe,0x8f,0x2c,0x06,0x5d,0xbe); | |
| 45 | DEFINE_GUID(WiaAudFmt_MP3,0x0fbc71fb,0x43bf,0x49f2,0x91,0x90,0xe6,0xfe,0xcf,0xf3,0x7e,0x54); | |
| 46 | DEFINE_GUID(WiaAudFmt_AIFF,0x66e2bf4f,0xb6fc,0x443f,0x94,0xc8,0x2f,0x33,0xc8,0xa6,0x5a,0xaf); | |
| 47 | DEFINE_GUID(WiaAudFmt_WMA,0xd61d6413,0x8bc2,0x438f,0x93,0xad,0x21,0xbd,0x48,0x4d,0xb6,0xa1); | |
| 48 | ||
| 49 | // Event GUIDs | |
| 50 | DEFINE_GUID(WIA_EVENT_DEVICE_DISCONNECTED,0x143e4e83,0x6497,0x11d2,0xa2,0x31,0x00,0xc0,0x4f,0xa3,0x18,0x09); | |
| 51 | DEFINE_GUID(WIA_EVENT_DEVICE_CONNECTED,0xa28bbade,0x64b6,0x11d2,0xa2,0x31,0x00,0xc0,0x4f,0xa3,0x18,0x09); | |
| 52 | DEFINE_GUID(WIA_EVENT_ITEM_DELETED,0x1d22a559,0xe14f,0x11d2,0xb3,0x26,0x00,0xc0,0x4f,0x68,0xce,0x61); | |
| 53 | DEFINE_GUID(WIA_EVENT_ITEM_CREATED,0x4c8f4ef5,0xe14f,0x11d2,0xb3,0x26,0x00,0xc0,0x4f,0x68,0xce,0x61); | |
| 54 | DEFINE_GUID(WIA_EVENT_TREE_UPDATED,0xc9859b91,0x4ab2,0x4cd6,0xa1,0xfc,0x58,0x2e,0xec,0x55,0xe5,0x85); | |
| 55 | DEFINE_GUID(WIA_EVENT_VOLUME_INSERT,0x9638bbfd,0xd1bd,0x11d2,0xb3,0x1f,0x00,0xc0,0x4f,0x68,0xce,0x61); | |
| 56 | DEFINE_GUID(WIA_EVENT_SCAN_IMAGE,0xa6c5a715,0x8c6e,0x11d2,0x97,0x7a,0x00,0x00,0xf8,0x7a,0x92,0x6f); | |
| 57 | DEFINE_GUID(WIA_EVENT_SCAN_PRINT_IMAGE,0xb441f425,0x8c6e,0x11d2,0x97,0x7a,0x00,0x00,0xf8,0x7a,0x92,0x6f); | |
| 58 | DEFINE_GUID(WIA_EVENT_SCAN_FAX_IMAGE,0xc00eb793,0x8c6e,0x11d2,0x97,0x7a,0x00,0x00,0xf8,0x7a,0x92,0x6f); | |
| 59 | DEFINE_GUID(WIA_EVENT_SCAN_OCR_IMAGE,0x9d095b89,0x37d6,0x4877,0xaf,0xed,0x62,0xa2,0x97,0xdc,0x6d,0xbe); | |
| 60 | DEFINE_GUID(WIA_EVENT_SCAN_EMAIL_IMAGE,0xc686dcee,0x54f2,0x419e,0x9a,0x27,0x2f,0xc7,0xf2,0xe9,0x8f,0x9e); | |
| 61 | DEFINE_GUID(WIA_EVENT_SCAN_FILM_IMAGE,0x9b2b662c,0x6185,0x438c,0xb6,0x8b,0xe3,0x9e,0xe2,0x5e,0x71,0xcb); | |
| 62 | DEFINE_GUID(WIA_EVENT_SCAN_IMAGE2,0xfc4767c1,0xc8b3,0x48a2,0x9c,0xfa,0x2e,0x90,0xcb,0x3d,0x35,0x90); | |
| 63 | DEFINE_GUID(WIA_EVENT_SCAN_IMAGE3,0x154e27be,0xb617,0x4653,0xac,0xc5,0x0f,0xd7,0xbd,0x4c,0x65,0xce); | |
| 64 | DEFINE_GUID(WIA_EVENT_SCAN_IMAGE4,0xa65b704a,0x7f3c,0x4447,0xa7,0x5d,0x8a,0x26,0xdf,0xca,0x1f,0xdf); | |
| 65 | DEFINE_GUID(WIA_EVENT_STORAGE_CREATED,0x353308b2,0xfe73,0x46c8,0x89,0x5e,0xfa,0x45,0x51,0xcc,0xc8,0x5a); | |
| 66 | DEFINE_GUID(WIA_EVENT_STORAGE_DELETED,0x5e41e75e,0x9390,0x44c5,0x9a,0x51,0xe4,0x70,0x19,0xe3,0x90,0xcf); | |
| 67 | DEFINE_GUID(WIA_EVENT_STI_PROXY,0xd711f81f,0x1f0d,0x422d,0x86,0x41,0x92,0x7d,0x1b,0x93,0xe5,0xe5); | |
| 68 | DEFINE_GUID(WIA_EVENT_CANCEL_IO,0xc860f7b8,0x9ccd,0x41ea,0xbb,0xbf,0x4d,0xd0,0x9c,0x5b,0x17,0x95); | |
| 69 | ||
| 70 | // Power management event GUIDs,sent by the WIA service to drivers | |
| 71 | DEFINE_GUID(WIA_EVENT_POWER_SUSPEND,0xa0922ff9,0xc3b4,0x411c,0x9e,0x29,0x03,0xa6,0x69,0x93,0xd2,0xbe); | |
| 72 | DEFINE_GUID(WIA_EVENT_POWER_RESUME,0x618f153e,0xf686,0x4350,0x96,0x34,0x41,0x15,0xa3,0x04,0x83,0x0c); | |
| 73 | ||
| 74 | // No action handler and prompt handler | |
| 75 | DEFINE_GUID(WIA_EVENT_HANDLER_NO_ACTION,0xe0372b7d,0xe115,0x4525,0xbc,0x55,0xb6,0x29,0xe6,0x8c,0x74,0x5a); | |
| 76 | DEFINE_GUID(WIA_EVENT_HANDLER_PROMPT,0x5f4baad0,0x4d59,0x4fcd,0xb2,0x13,0x78,0x3c,0xe7,0xa9,0x2f,0x22); | |
| 77 | ||
| 78 | // WIA Commands | |
| 79 | DEFINE_GUID(WIA_CMD_SYNCHRONIZE,0x9b26b7b2,0xacad,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c); | |
| 80 | DEFINE_GUID(WIA_CMD_TAKE_PICTURE,0xaf933cac,0xacad,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c); | |
| 81 | DEFINE_GUID(WIA_CMD_DELETE_ALL_ITEMS,0xe208c170,0xacad,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c); | |
| 82 | DEFINE_GUID(WIA_CMD_CHANGE_DOCUMENT,0x04e725b0,0xacae,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c); | |
| 83 | DEFINE_GUID(WIA_CMD_UNLOAD_DOCUMENT,0x1f3b3d8e,0xacae,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c); | |
| 84 | DEFINE_GUID(WIA_CMD_DIAGNOSTIC,0x10ff52f5,0xde04,0x4cf0,0xa5,0xad,0x69,0x1f,0x8d,0xce,0x01,0x41); | |
| 85 | ||
| 86 | DEFINE_GUID(WIA_CMD_DELETE_DEVICE_TREE,0x73815942,0xdbea,0x11d2,0x84,0x16,0x00,0xc0,0x4f,0xa3,0x61,0x45); | |
| 87 | DEFINE_GUID(WIA_CMD_BUILD_DEVICE_TREE,0x9cba5ce0,0xdbea,0x11d2,0x84,0x16,0x00,0xc0,0x4f,0xa3,0x61,0x45); | |
| 88 | ||
| 89 | DEFINE_GUID(IID_IWiaUIExtension,0xDA319113,0x50EE,0x4C80,0xB4,0x60,0x57,0xD0,0x05,0xD4,0x4A,0x2C); | |
| 90 | ||
| 91 | DEFINE_GUID(IID_IWiaDevMgr,0x5eb2502a,0x8cf1,0x11d1,0xbf,0x92,0x00,0x60,0x08,0x1e,0xd8,0x11); | |
| 92 | DEFINE_GUID(IID_IEnumWIA_DEV_INFO,0x5e38b83c,0x8cf1,0x11d1,0xbf,0x92,0x00,0x60,0x08,0x1e,0xd8,0x11); | |
| 93 | DEFINE_GUID(IID_IWiaEventCallback,0xae6287b0,0x0084,0x11d2,0x97,0x3b,0x00,0xa0,0xc9,0x06,0x8f,0x2e); | |
| 94 | DEFINE_GUID(IID_IWiaDataCallback,0xa558a866,0xa5b0,0x11d2,0xa0,0x8f,0x00,0xc0,0x4f,0x72,0xdc,0x3c); | |
| 95 | DEFINE_GUID(IID_IWiaDataTransfer,0xa6cef998,0xa5b0,0x11d2,0xa0,0x8f,0x00,0xc0,0x4f,0x72,0xdc,0x3c); | |
| 96 | DEFINE_GUID(IID_IWiaItem,0x4db1ad10,0x3391,0x11d2,0x9a,0x33,0x00,0xc0,0x4f,0xa3,0x61,0x45); | |
| 97 | DEFINE_GUID(IID_IWiaPropertyStorage,0x98B5E8A0,0x29CC,0x491a,0xAA,0xC0,0xE6,0xDB,0x4F,0xDC,0xCE,0xB6); | |
| 98 | DEFINE_GUID(IID_IEnumWiaItem,0x5e8383fc,0x3391,0x11d2,0x9a,0x33,0x00,0xc0,0x4f,0xa3,0x61,0x45); | |
| 99 | DEFINE_GUID(IID_IEnumWIA_DEV_CAPS,0x1fcc4287,0xaca6,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c); | |
| 100 | DEFINE_GUID(IID_IEnumWIA_FORMAT_INFO,0x81BEFC5B,0x656D,0x44f1,0xB2,0x4C,0xD4,0x1D,0x51,0xB4,0xDC,0x81); | |
| 101 | DEFINE_GUID(IID_IWiaLog,0xA00C10B6,0x82A1,0x452f,0x8B,0x6C,0x86,0x06,0x2A,0xAD,0x68,0x90); | |
| 102 | DEFINE_GUID(IID_IWiaLogEx,0xAF1F22AC,0x7A40,0x4787,0xB4,0x21,0xAE,0xb4,0x7A,0x1F,0xBD,0x0B); | |
| 103 | DEFINE_GUID(IID_IWiaNotifyDevMgr,0x70681EA0,0xE7BF,0x4291,0x9F,0xB1,0x4E,0x88,0x13,0xA3,0xF7,0x8E); | |
| 104 | DEFINE_GUID(IID_IWiaItemExtras,0x6291ef2c,0x36ef,0x4532,0x87,0x6a,0x8e,0x13,0x25,0x93,0x77,0x8d); | |
| 105 | DEFINE_GUID(CLSID_WiaDevMgr,0xa1f4e726,0x8cf1,0x11d1,0xbf,0x92,0x00,0x60,0x08,0x1e,0xd8,0x11); | |
| 106 | DEFINE_GUID(CLSID_WiaLog,0xA1E75357,0x881A,0x419e,0x83,0xE2,0xBB,0x16,0xDB,0x19,0x7C,0x68); |
lib/libc/mingw/misc/___mb_cur_max_func.c created+18| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | /** | |
| 2 | * This file has no copyright assigned and is placed in the Public Domain. | |
| 3 | * This file is part of the mingw-w64 runtime package. | |
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
| 5 | */ | |
| 6 | ||
| 7 | #include <_mingw.h> | |
| 8 | ||
| 9 | extern int* __MINGW_IMP_SYMBOL(__mb_cur_max); | |
| 10 | ||
| 11 | int __cdecl ___mb_cur_max_func(void); | |
| 12 | int __cdecl ___mb_cur_max_func(void) | |
| 13 | { | |
| 14 | return *__MINGW_IMP_SYMBOL(__mb_cur_max); | |
| 15 | } | |
| 16 | ||
| 17 | typedef int __cdecl (*_f___mb_cur_max_func)(void); | |
| 18 | _f___mb_cur_max_func __MINGW_IMP_SYMBOL(___mb_cur_max_func) = ___mb_cur_max_func; |
lib/std/array_list.zig+114-89| ... | ... | @@ -20,11 +20,9 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { |
| 20 | 20 | return struct { |
| 21 | 21 | const Self = @This(); |
| 22 | 22 | |
| 23 | /// Use `span` instead of slicing this directly, because if you don't | |
| 24 | /// specify the end position of the slice, this will potentially give | |
| 25 | /// you uninitialized memory. | |
| 23 | /// Content of the ArrayList | |
| 26 | 24 | items: Slice, |
| 27 | len: usize, | |
| 25 | capacity: usize, | |
| 28 | 26 | allocator: *Allocator, |
| 29 | 27 | |
| 30 | 28 | pub const Slice = if (alignment) |a| ([]align(a) T) else []T; |
| ... | ... | @@ -34,7 +32,7 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { |
| 34 | 32 | pub fn init(allocator: *Allocator) Self { |
| 35 | 33 | return Self{ |
| 36 | 34 | .items = &[_]T{}, |
| 37 | .len = 0, | |
| 35 | .capacity = 0, | |
| 38 | 36 | .allocator = allocator, |
| 39 | 37 | }; |
| 40 | 38 | } |
| ... | ... | @@ -49,60 +47,55 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { |
| 49 | 47 | |
| 50 | 48 | /// Release all allocated memory. |
| 51 | 49 | pub fn deinit(self: Self) void { |
| 52 | self.allocator.free(self.items); | |
| 50 | self.allocator.free(self.allocatedSlice()); | |
| 53 | 51 | } |
| 54 | 52 | |
| 53 | /// Deprecated: use `items` field directly. | |
| 55 | 54 | /// Return contents as a slice. Only valid while the list |
| 56 | 55 | /// doesn't change size. |
| 57 | pub fn span(self: var) @TypeOf(self.items[0..self.len]) { | |
| 58 | return self.items[0..self.len]; | |
| 56 | pub fn span(self: var) @TypeOf(self.items) { | |
| 57 | return self.items; | |
| 59 | 58 | } |
| 60 | 59 | |
| 61 | /// Deprecated: use `span`. | |
| 60 | /// Deprecated: use `items` field directly. | |
| 62 | 61 | pub fn toSlice(self: Self) Slice { |
| 63 | return self.span(); | |
| 62 | return self.items; | |
| 64 | 63 | } |
| 65 | 64 | |
| 66 | /// Deprecated: use `span`. | |
| 65 | /// Deprecated: use `items` field directly. | |
| 67 | 66 | pub fn toSliceConst(self: Self) SliceConst { |
| 68 | return self.span(); | |
| 67 | return self.items; | |
| 69 | 68 | } |
| 70 | 69 | |
| 71 | /// Deprecated: use `span()[i]`. | |
| 70 | /// Deprecated: use `list.items[i]`. | |
| 72 | 71 | pub fn at(self: Self, i: usize) T { |
| 73 | return self.span()[i]; | |
| 72 | return self.items[i]; | |
| 74 | 73 | } |
| 75 | 74 | |
| 76 | /// Deprecated: use `&span()[i]`. | |
| 75 | /// Deprecated: use `&list.items[i]`. | |
| 77 | 76 | pub fn ptrAt(self: Self, i: usize) *T { |
| 78 | return &self.span()[i]; | |
| 77 | return &self.items[i]; | |
| 79 | 78 | } |
| 80 | 79 | |
| 81 | /// Deprecated: use `if (i >= list.len) return error.OutOfBounds else span()[i] = item`. | |
| 80 | /// Deprecated: use `if (i >= list.items.len) return error.OutOfBounds else list.items[i] = item`. | |
| 82 | 81 | pub fn setOrError(self: Self, i: usize, item: T) !void { |
| 83 | if (i >= self.len) return error.OutOfBounds; | |
| 82 | if (i >= self.items.len) return error.OutOfBounds; | |
| 84 | 83 | self.items[i] = item; |
| 85 | 84 | } |
| 86 | 85 | |
| 87 | /// Deprecated: use `list.span()[i] = item`. | |
| 86 | /// Deprecated: use `list.items[i] = item`. | |
| 88 | 87 | pub fn set(self: *Self, i: usize, item: T) void { |
| 89 | assert(i < self.len); | |
| 88 | assert(i < self.items.len); | |
| 90 | 89 | self.items[i] = item; |
| 91 | 90 | } |
| 92 | 91 | |
| 93 | /// Return the maximum number of items the list can hold | |
| 94 | /// without allocating more memory. | |
| 95 | pub fn capacity(self: Self) usize { | |
| 96 | return self.items.len; | |
| 97 | } | |
| 98 | ||
| 99 | 92 | /// ArrayList takes ownership of the passed in slice. The slice must have been |
| 100 | 93 | /// allocated with `allocator`. |
| 101 | 94 | /// Deinitialize with `deinit` or use `toOwnedSlice`. |
| 102 | 95 | pub fn fromOwnedSlice(allocator: *Allocator, slice: Slice) Self { |
| 103 | 96 | return Self{ |
| 104 | 97 | .items = slice, |
| 105 | .len = slice.len, | |
| 98 | .capacity = slice.len, | |
| 106 | 99 | .allocator = allocator, |
| 107 | 100 | }; |
| 108 | 101 | } |
| ... | ... | @@ -110,7 +103,7 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { |
| 110 | 103 | /// The caller owns the returned memory. ArrayList becomes empty. |
| 111 | 104 | pub fn toOwnedSlice(self: *Self) Slice { |
| 112 | 105 | const allocator = self.allocator; |
| 113 | const result = allocator.shrink(self.items, self.len); | |
| 106 | const result = allocator.shrink(self.allocatedSlice(), self.items.len); | |
| 114 | 107 | self.* = init(allocator); |
| 115 | 108 | return result; |
| 116 | 109 | } |
| ... | ... | @@ -118,10 +111,10 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { |
| 118 | 111 | /// Insert `item` at index `n`. Moves `list[n .. list.len]` |
| 119 | 112 | /// to make room. |
| 120 | 113 | pub fn insert(self: *Self, n: usize, item: T) !void { |
| 121 | try self.ensureCapacity(self.len + 1); | |
| 122 | self.len += 1; | |
| 114 | try self.ensureCapacity(self.items.len + 1); | |
| 115 | self.items.len += 1; | |
| 123 | 116 | |
| 124 | mem.copyBackwards(T, self.items[n + 1 .. self.len], self.items[n .. self.len - 1]); | |
| 117 | mem.copyBackwards(T, self.items[n + 1 .. self.items.len], self.items[n .. self.items.len - 1]); | |
| 125 | 118 | self.items[n] = item; |
| 126 | 119 | } |
| 127 | 120 | |
| ... | ... | @@ -129,10 +122,10 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { |
| 129 | 122 | /// `list[i .. list.len]` to make room. |
| 130 | 123 | /// This operation is O(N). |
| 131 | 124 | pub fn insertSlice(self: *Self, i: usize, items: SliceConst) !void { |
| 132 | try self.ensureCapacity(self.len + items.len); | |
| 133 | self.len += items.len; | |
| 125 | try self.ensureCapacity(self.items.len + items.len); | |
| 126 | self.items.len += items.len; | |
| 134 | 127 | |
| 135 | mem.copyBackwards(T, self.items[i + items.len .. self.len], self.items[i .. self.len - items.len]); | |
| 128 | mem.copyBackwards(T, self.items[i + items.len .. self.items.len], self.items[i .. self.items.len - items.len]); | |
| 136 | 129 | mem.copy(T, self.items[i .. i + items.len], items); |
| 137 | 130 | } |
| 138 | 131 | |
| ... | ... | @@ -153,13 +146,13 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { |
| 153 | 146 | /// Asserts the array has at least one item. |
| 154 | 147 | /// This operation is O(N). |
| 155 | 148 | pub fn orderedRemove(self: *Self, i: usize) T { |
| 156 | const newlen = self.len - 1; | |
| 149 | const newlen = self.items.len - 1; | |
| 157 | 150 | if (newlen == i) return self.pop(); |
| 158 | 151 | |
| 159 | const old_item = self.at(i); | |
| 152 | const old_item = self.items[i]; | |
| 160 | 153 | for (self.items[i..newlen]) |*b, j| b.* = self.items[i + 1 + j]; |
| 161 | 154 | self.items[newlen] = undefined; |
| 162 | self.len = newlen; | |
| 155 | self.items.len = newlen; | |
| 163 | 156 | return old_item; |
| 164 | 157 | } |
| 165 | 158 | |
| ... | ... | @@ -167,26 +160,28 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { |
| 167 | 160 | /// The empty slot is filled from the end of the list. |
| 168 | 161 | /// This operation is O(1). |
| 169 | 162 | pub fn swapRemove(self: *Self, i: usize) T { |
| 170 | if (self.len - 1 == i) return self.pop(); | |
| 163 | if (self.items.len - 1 == i) return self.pop(); | |
| 171 | 164 | |
| 172 | const slice = self.span(); | |
| 173 | const old_item = slice[i]; | |
| 174 | slice[i] = self.pop(); | |
| 165 | const old_item = self.items[i]; | |
| 166 | self.items[i] = self.pop(); | |
| 175 | 167 | return old_item; |
| 176 | 168 | } |
| 177 | 169 | |
| 178 | /// Deprecated: use `if (i >= list.len) return error.OutOfBounds else list.swapRemove(i)`. | |
| 170 | /// Deprecated: use `if (i >= list.items.len) return error.OutOfBounds else list.swapRemove(i)`. | |
| 179 | 171 | pub fn swapRemoveOrError(self: *Self, i: usize) !T { |
| 180 | if (i >= self.len) return error.OutOfBounds; | |
| 172 | if (i >= self.items.len) return error.OutOfBounds; | |
| 181 | 173 | return self.swapRemove(i); |
| 182 | 174 | } |
| 183 | 175 | |
| 184 | 176 | /// Append the slice of items to the list. Allocates more |
| 185 | 177 | /// memory as necessary. |
| 186 | 178 | pub fn appendSlice(self: *Self, items: SliceConst) !void { |
| 187 | try self.ensureCapacity(self.len + items.len); | |
| 188 | mem.copy(T, self.items[self.len..], items); | |
| 189 | self.len += items.len; | |
| 179 | const oldlen = self.items.len; | |
| 180 | const newlen = self.items.len + items.len; | |
| 181 | ||
| 182 | try self.ensureCapacity(newlen); | |
| 183 | self.items.len = newlen; | |
| 184 | mem.copy(T, self.items[oldlen..], items); | |
| 190 | 185 | } |
| 191 | 186 | |
| 192 | 187 | /// Same as `append` except it returns the number of bytes written, which is always the same |
| ... | ... | @@ -206,50 +201,58 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { |
| 206 | 201 | /// Append a value to the list `n` times. |
| 207 | 202 | /// Allocates more memory as necessary. |
| 208 | 203 | pub fn appendNTimes(self: *Self, value: T, n: usize) !void { |
| 209 | const old_len = self.len; | |
| 210 | try self.resize(self.len + n); | |
| 211 | mem.set(T, self.items[old_len..self.len], value); | |
| 204 | const old_len = self.items.len; | |
| 205 | try self.resize(self.items.len + n); | |
| 206 | mem.set(T, self.items[old_len..self.items.len], value); | |
| 212 | 207 | } |
| 213 | 208 | |
| 214 | 209 | /// Adjust the list's length to `new_len`. |
| 215 | 210 | /// Does not initialize added items if any. |
| 216 | 211 | pub fn resize(self: *Self, new_len: usize) !void { |
| 217 | 212 | try self.ensureCapacity(new_len); |
| 218 | self.len = new_len; | |
| 213 | self.items.len = new_len; | |
| 219 | 214 | } |
| 220 | 215 | |
| 221 | 216 | /// Reduce allocated capacity to `new_len`. |
| 222 | 217 | /// Invalidates element pointers. |
| 223 | 218 | pub fn shrink(self: *Self, new_len: usize) void { |
| 224 | assert(new_len <= self.len); | |
| 225 | self.len = new_len; | |
| 226 | self.items = self.allocator.realloc(self.items, new_len) catch |e| switch (e) { | |
| 227 | error.OutOfMemory => return, // no problem, capacity is still correct then. | |
| 219 | assert(new_len <= self.items.len); | |
| 220 | ||
| 221 | self.items = self.allocator.realloc(self.allocatedSlice(), new_len) catch |e| switch (e) { | |
| 222 | error.OutOfMemory => { // no problem, capacity is still correct then. | |
| 223 | self.items.len = new_len; | |
| 224 | return; | |
| 225 | }, | |
| 228 | 226 | }; |
| 227 | self.capacity = new_len; | |
| 229 | 228 | } |
| 230 | 229 | |
| 231 | 230 | pub fn ensureCapacity(self: *Self, new_capacity: usize) !void { |
| 232 | var better_capacity = self.capacity(); | |
| 231 | var better_capacity = self.capacity; | |
| 233 | 232 | if (better_capacity >= new_capacity) return; |
| 233 | ||
| 234 | 234 | while (true) { |
| 235 | 235 | better_capacity += better_capacity / 2 + 8; |
| 236 | 236 | if (better_capacity >= new_capacity) break; |
| 237 | 237 | } |
| 238 | self.items = try self.allocator.realloc(self.items, better_capacity); | |
| 238 | ||
| 239 | const new_memory = try self.allocator.realloc(self.allocatedSlice(), better_capacity); | |
| 240 | self.items.ptr = new_memory.ptr; | |
| 241 | self.capacity = new_memory.len; | |
| 239 | 242 | } |
| 240 | 243 | |
| 241 | 244 | /// Increases the array's length to match the full capacity that is already allocated. |
| 242 | 245 | /// The new elements have `undefined` values. This operation does not invalidate any |
| 243 | 246 | /// element pointers. |
| 244 | 247 | pub fn expandToCapacity(self: *Self) void { |
| 245 | self.len = self.items.len; | |
| 248 | self.items.len = self.capacity; | |
| 246 | 249 | } |
| 247 | 250 | |
| 248 | 251 | /// Increase length by 1, returning pointer to the new item. |
| 249 | 252 | /// The returned pointer becomes invalid when the list is resized. |
| 250 | 253 | pub fn addOne(self: *Self) !*T { |
| 251 | const new_length = self.len + 1; | |
| 252 | try self.ensureCapacity(new_length); | |
| 254 | const newlen = self.items.len + 1; | |
| 255 | try self.ensureCapacity(newlen); | |
| 253 | 256 | return self.addOneAssumeCapacity(); |
| 254 | 257 | } |
| 255 | 258 | |
| ... | ... | @@ -257,25 +260,32 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { |
| 257 | 260 | /// Asserts that there is already space for the new item without allocating more. |
| 258 | 261 | /// The returned pointer becomes invalid when the list is resized. |
| 259 | 262 | pub fn addOneAssumeCapacity(self: *Self) *T { |
| 260 | assert(self.len < self.capacity()); | |
| 261 | const result = &self.items[self.len]; | |
| 262 | self.len += 1; | |
| 263 | return result; | |
| 263 | assert(self.items.len < self.capacity); | |
| 264 | ||
| 265 | self.items.len += 1; | |
| 266 | return &self.items[self.items.len - 1]; | |
| 264 | 267 | } |
| 265 | 268 | |
| 266 | 269 | /// Remove and return the last element from the list. |
| 267 | 270 | /// Asserts the list has at least one item. |
| 268 | 271 | pub fn pop(self: *Self) T { |
| 269 | self.len -= 1; | |
| 270 | return self.items[self.len]; | |
| 272 | const val = self.items[self.items.len - 1]; | |
| 273 | self.items.len -= 1; | |
| 274 | return val; | |
| 271 | 275 | } |
| 272 | 276 | |
| 273 | 277 | /// Remove and return the last element from the list. |
| 274 | 278 | /// If the list is empty, returns `null`. |
| 275 | 279 | pub fn popOrNull(self: *Self) ?T { |
| 276 | if (self.len == 0) return null; | |
| 280 | if (self.items.len == 0) return null; | |
| 277 | 281 | return self.pop(); |
| 278 | 282 | } |
| 283 | ||
| 284 | // For a nicer API, `items.len` is the length, not the capacity. | |
| 285 | // This requires "unsafe" slicing. | |
| 286 | fn allocatedSlice(self: Self) Slice { | |
| 287 | return self.items.ptr[0..self.capacity]; | |
| 288 | } | |
| 279 | 289 | }; |
| 280 | 290 | } |
| 281 | 291 | |
| ... | ... | @@ -283,15 +293,15 @@ test "std.ArrayList.init" { |
| 283 | 293 | var list = ArrayList(i32).init(testing.allocator); |
| 284 | 294 | defer list.deinit(); |
| 285 | 295 | |
| 286 | testing.expect(list.len == 0); | |
| 287 | testing.expect(list.capacity() == 0); | |
| 296 | testing.expect(list.items.len == 0); | |
| 297 | testing.expect(list.capacity == 0); | |
| 288 | 298 | } |
| 289 | 299 | |
| 290 | 300 | test "std.ArrayList.initCapacity" { |
| 291 | 301 | var list = try ArrayList(i8).initCapacity(testing.allocator, 200); |
| 292 | 302 | defer list.deinit(); |
| 293 | testing.expect(list.len == 0); | |
| 294 | testing.expect(list.capacity() >= 200); | |
| 303 | testing.expect(list.items.len == 0); | |
| 304 | testing.expect(list.capacity >= 200); | |
| 295 | 305 | } |
| 296 | 306 | |
| 297 | 307 | test "std.ArrayList.basic" { |
| ... | ... | @@ -315,7 +325,7 @@ test "std.ArrayList.basic" { |
| 315 | 325 | } |
| 316 | 326 | } |
| 317 | 327 | |
| 318 | for (list.span()) |v, i| { | |
| 328 | for (list.items) |v, i| { | |
| 319 | 329 | testing.expect(v == @intCast(i32, i + 1)); |
| 320 | 330 | } |
| 321 | 331 | |
| ... | ... | @@ -324,19 +334,19 @@ test "std.ArrayList.basic" { |
| 324 | 334 | } |
| 325 | 335 | |
| 326 | 336 | testing.expect(list.pop() == 10); |
| 327 | testing.expect(list.len == 9); | |
| 337 | testing.expect(list.items.len == 9); | |
| 328 | 338 | |
| 329 | 339 | list.appendSlice(&[_]i32{ 1, 2, 3 }) catch unreachable; |
| 330 | testing.expect(list.len == 12); | |
| 340 | testing.expect(list.items.len == 12); | |
| 331 | 341 | testing.expect(list.pop() == 3); |
| 332 | 342 | testing.expect(list.pop() == 2); |
| 333 | 343 | testing.expect(list.pop() == 1); |
| 334 | testing.expect(list.len == 9); | |
| 344 | testing.expect(list.items.len == 9); | |
| 335 | 345 | |
| 336 | 346 | list.appendSlice(&[_]i32{}) catch unreachable; |
| 337 | testing.expect(list.len == 9); | |
| 347 | testing.expect(list.items.len == 9); | |
| 338 | 348 | |
| 339 | // can only set on indices < self.len | |
| 349 | // can only set on indices < self.items.len | |
| 340 | 350 | list.set(7, 33); |
| 341 | 351 | list.set(8, 42); |
| 342 | 352 | |
| ... | ... | @@ -352,8 +362,8 @@ test "std.ArrayList.appendNTimes" { |
| 352 | 362 | defer list.deinit(); |
| 353 | 363 | |
| 354 | 364 | try list.appendNTimes(2, 10); |
| 355 | testing.expectEqual(@as(usize, 10), list.len); | |
| 356 | for (list.span()) |element| { | |
| 365 | testing.expectEqual(@as(usize, 10), list.items.len); | |
| 366 | for (list.items) |element| { | |
| 357 | 367 | testing.expectEqual(@as(i32, 2), element); |
| 358 | 368 | } |
| 359 | 369 | } |
| ... | ... | @@ -378,17 +388,17 @@ test "std.ArrayList.orderedRemove" { |
| 378 | 388 | |
| 379 | 389 | //remove from middle |
| 380 | 390 | testing.expectEqual(@as(i32, 4), list.orderedRemove(3)); |
| 381 | testing.expectEqual(@as(i32, 5), list.at(3)); | |
| 382 | testing.expectEqual(@as(usize, 6), list.len); | |
| 391 | testing.expectEqual(@as(i32, 5), list.items[3]); | |
| 392 | testing.expectEqual(@as(usize, 6), list.items.len); | |
| 383 | 393 | |
| 384 | 394 | //remove from end |
| 385 | 395 | testing.expectEqual(@as(i32, 7), list.orderedRemove(5)); |
| 386 | testing.expectEqual(@as(usize, 5), list.len); | |
| 396 | testing.expectEqual(@as(usize, 5), list.items.len); | |
| 387 | 397 | |
| 388 | 398 | //remove from front |
| 389 | 399 | testing.expectEqual(@as(i32, 1), list.orderedRemove(0)); |
| 390 | testing.expectEqual(@as(i32, 2), list.at(0)); | |
| 391 | testing.expectEqual(@as(usize, 4), list.len); | |
| 400 | testing.expectEqual(@as(i32, 2), list.items[0]); | |
| 401 | testing.expectEqual(@as(usize, 4), list.items.len); | |
| 392 | 402 | } |
| 393 | 403 | |
| 394 | 404 | test "std.ArrayList.swapRemove" { |
| ... | ... | @@ -405,17 +415,17 @@ test "std.ArrayList.swapRemove" { |
| 405 | 415 | |
| 406 | 416 | //remove from middle |
| 407 | 417 | testing.expect(list.swapRemove(3) == 4); |
| 408 | testing.expect(list.at(3) == 7); | |
| 409 | testing.expect(list.len == 6); | |
| 418 | testing.expect(list.items[3] == 7); | |
| 419 | testing.expect(list.items.len == 6); | |
| 410 | 420 | |
| 411 | 421 | //remove from end |
| 412 | 422 | testing.expect(list.swapRemove(5) == 6); |
| 413 | testing.expect(list.len == 5); | |
| 423 | testing.expect(list.items.len == 5); | |
| 414 | 424 | |
| 415 | 425 | //remove from front |
| 416 | 426 | testing.expect(list.swapRemove(0) == 1); |
| 417 | testing.expect(list.at(0) == 5); | |
| 418 | testing.expect(list.len == 4); | |
| 427 | testing.expect(list.items[0] == 5); | |
| 428 | testing.expect(list.items.len == 4); | |
| 419 | 429 | } |
| 420 | 430 | |
| 421 | 431 | test "std.ArrayList.swapRemoveOrError" { |
| ... | ... | @@ -478,7 +488,7 @@ test "std.ArrayList.insertSlice" { |
| 478 | 488 | |
| 479 | 489 | const items = [_]i32{1}; |
| 480 | 490 | try list.insertSlice(0, items[0..0]); |
| 481 | testing.expect(list.len == 6); | |
| 491 | testing.expect(list.items.len == 6); | |
| 482 | 492 | testing.expect(list.items[0] == 1); |
| 483 | 493 | } |
| 484 | 494 | |
| ... | ... | @@ -504,3 +514,18 @@ test "std.ArrayList(u8) implements outStream" { |
| 504 | 514 | |
| 505 | 515 | testing.expectEqualSlices(u8, "x: 42\ny: 1234\n", buffer.span()); |
| 506 | 516 | } |
| 517 | ||
| 518 | test "std.ArrayList.shrink still sets length on error.OutOfMemory" { | |
| 519 | // use an arena allocator to make sure realloc returns error.OutOfMemory | |
| 520 | var arena = std.heap.ArenaAllocator.init(testing.allocator); | |
| 521 | defer arena.deinit(); | |
| 522 | ||
| 523 | var list = ArrayList(i32).init(&arena.allocator); | |
| 524 | ||
| 525 | try list.append(1); | |
| 526 | try list.append(2); | |
| 527 | try list.append(3); | |
| 528 | ||
| 529 | list.shrink(1); | |
| 530 | testing.expect(list.items.len == 1); | |
| 531 | } |
lib/std/array_list_sentineled.zig+8-8| ... | ... | @@ -82,8 +82,8 @@ pub fn ArrayListSentineled(comptime T: type, comptime sentinel: T) type { |
| 82 | 82 | self.list.deinit(); |
| 83 | 83 | } |
| 84 | 84 | |
| 85 | pub fn span(self: var) @TypeOf(self.list.items[0 .. self.list.len - 1 :sentinel]) { | |
| 86 | return self.list.span()[0..self.len() :sentinel]; | |
| 85 | pub fn span(self: var) @TypeOf(self.list.items[0..:sentinel]) { | |
| 86 | return self.list.items[0..self.len() :sentinel]; | |
| 87 | 87 | } |
| 88 | 88 | |
| 89 | 89 | pub fn shrink(self: *Self, new_len: usize) void { |
| ... | ... | @@ -98,16 +98,16 @@ pub fn ArrayListSentineled(comptime T: type, comptime sentinel: T) type { |
| 98 | 98 | } |
| 99 | 99 | |
| 100 | 100 | pub fn isNull(self: Self) bool { |
| 101 | return self.list.len == 0; | |
| 101 | return self.list.items.len == 0; | |
| 102 | 102 | } |
| 103 | 103 | |
| 104 | 104 | pub fn len(self: Self) usize { |
| 105 | return self.list.len - 1; | |
| 105 | return self.list.items.len - 1; | |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | 108 | pub fn capacity(self: Self) usize { |
| 109 | return if (self.list.items.len > 0) | |
| 110 | self.list.items.len - 1 | |
| 109 | return if (self.list.capacity > 0) | |
| 110 | self.list.capacity - 1 | |
| 111 | 111 | else |
| 112 | 112 | 0; |
| 113 | 113 | } |
| ... | ... | @@ -115,13 +115,13 @@ pub fn ArrayListSentineled(comptime T: type, comptime sentinel: T) type { |
| 115 | 115 | pub fn appendSlice(self: *Self, m: []const T) !void { |
| 116 | 116 | const old_len = self.len(); |
| 117 | 117 | try self.resize(old_len + m.len); |
| 118 | mem.copy(T, self.list.span()[old_len..], m); | |
| 118 | mem.copy(T, self.list.items[old_len..], m); | |
| 119 | 119 | } |
| 120 | 120 | |
| 121 | 121 | pub fn append(self: *Self, byte: T) !void { |
| 122 | 122 | const old_len = self.len(); |
| 123 | 123 | try self.resize(old_len + 1); |
| 124 | self.list.span()[old_len] = byte; | |
| 124 | self.list.items[old_len] = byte; | |
| 125 | 125 | } |
| 126 | 126 | |
| 127 | 127 | pub fn eql(self: Self, m: []const T) bool { |
lib/std/atomic/queue.zig+19-1| ... | ... | @@ -5,6 +5,8 @@ const expect = std.testing.expect; |
| 5 | 5 | |
| 6 | 6 | /// Many producer, many consumer, non-allocating, thread-safe. |
| 7 | 7 | /// Uses a mutex to protect access. |
| 8 | /// The queue does not manage ownership and the user is responsible to | |
| 9 | /// manage the storage of the nodes. | |
| 8 | 10 | pub fn Queue(comptime T: type) type { |
| 9 | 11 | return struct { |
| 10 | 12 | head: ?*Node, |
| ... | ... | @@ -14,6 +16,8 @@ pub fn Queue(comptime T: type) type { |
| 14 | 16 | pub const Self = @This(); |
| 15 | 17 | pub const Node = std.TailQueue(T).Node; |
| 16 | 18 | |
| 19 | /// Initializes a new queue. The queue does not provide a `deinit()` | |
| 20 | /// function, so the user must take care of cleaning up the queue elements. | |
| 17 | 21 | pub fn init() Self { |
| 18 | 22 | return Self{ |
| 19 | 23 | .head = null, |
| ... | ... | @@ -22,6 +26,8 @@ pub fn Queue(comptime T: type) type { |
| 22 | 26 | }; |
| 23 | 27 | } |
| 24 | 28 | |
| 29 | /// Appends `node` to the queue. | |
| 30 | /// The lifetime of `node` must be longer than lifetime of queue. | |
| 25 | 31 | pub fn put(self: *Self, node: *Node) void { |
| 26 | 32 | node.next = null; |
| 27 | 33 | |
| ... | ... | @@ -38,6 +44,9 @@ pub fn Queue(comptime T: type) type { |
| 38 | 44 | } |
| 39 | 45 | } |
| 40 | 46 | |
| 47 | /// Gets a previously inserted node or returns `null` if there is none. | |
| 48 | /// It is safe to `get()` a node from the queue while another thread tries | |
| 49 | /// to `remove()` the same node at the same time. | |
| 41 | 50 | pub fn get(self: *Self) ?*Node { |
| 42 | 51 | const held = self.mutex.acquire(); |
| 43 | 52 | defer held.release(); |
| ... | ... | @@ -71,7 +80,9 @@ pub fn Queue(comptime T: type) type { |
| 71 | 80 | } |
| 72 | 81 | } |
| 73 | 82 | |
| 74 | /// Thread-safe with get() and remove(). Returns whether node was actually removed. | |
| 83 | /// Removes a node from the queue, returns whether node was actually removed. | |
| 84 | /// It is safe to `remove()` a node from the queue while another thread tries | |
| 85 | /// to `get()` the same node at the same time. | |
| 75 | 86 | pub fn remove(self: *Self, node: *Node) bool { |
| 76 | 87 | const held = self.mutex.acquire(); |
| 77 | 88 | defer held.release(); |
| ... | ... | @@ -95,16 +106,23 @@ pub fn Queue(comptime T: type) type { |
| 95 | 106 | return true; |
| 96 | 107 | } |
| 97 | 108 | |
| 109 | /// Returns `true` if the queue is currently empty. | |
| 110 | /// Note that in a multi-consumer environment a return value of `false` | |
| 111 | /// does not mean that `get` will yield a non-`null` value! | |
| 98 | 112 | pub fn isEmpty(self: *Self) bool { |
| 99 | 113 | const held = self.mutex.acquire(); |
| 100 | 114 | defer held.release(); |
| 101 | 115 | return self.head == null; |
| 102 | 116 | } |
| 103 | 117 | |
| 118 | /// Dumps the contents of the queue to `stderr`. | |
| 104 | 119 | pub fn dump(self: *Self) void { |
| 105 | 120 | self.dumpToStream(std.io.getStdErr().outStream()) catch return; |
| 106 | 121 | } |
| 107 | 122 | |
| 123 | /// Dumps the contents of the queue to `stream`. | |
| 124 | /// Up to 4 elements from the head are dumped and the tail of the queue is | |
| 125 | /// dumped as well. | |
| 108 | 126 | pub fn dumpToStream(self: *Self, stream: var) !void { |
| 109 | 127 | const S = struct { |
| 110 | 128 | fn dumpRecursive( |
lib/std/build.zig+2-2| ... | ... | @@ -1779,7 +1779,7 @@ pub const LibExeObjStep = struct { |
| 1779 | 1779 | const self = @fieldParentPtr(LibExeObjStep, "step", step); |
| 1780 | 1780 | const builder = self.builder; |
| 1781 | 1781 | |
| 1782 | if (self.root_src == null and self.link_objects.len == 0) { | |
| 1782 | if (self.root_src == null and self.link_objects.items.len == 0) { | |
| 1783 | 1783 | warn("{}: linker needs 1 or more objects to link\n", .{self.step.name}); |
| 1784 | 1784 | return error.NeedAnObject; |
| 1785 | 1785 | } |
| ... | ... | @@ -1847,7 +1847,7 @@ pub const LibExeObjStep = struct { |
| 1847 | 1847 | } |
| 1848 | 1848 | } |
| 1849 | 1849 | |
| 1850 | if (self.build_options_contents.len > 0) { | |
| 1850 | if (self.build_options_contents.items.len > 0) { | |
| 1851 | 1851 | const build_options_file = try fs.path.join( |
| 1852 | 1852 | builder.allocator, |
| 1853 | 1853 | &[_][]const u8{ builder.cache_root, builder.fmt("{}_build_options.zig", .{self.name}) }, |
lib/std/build/emit_raw.zig+1-1| ... | ... | @@ -94,7 +94,7 @@ const BinaryElfOutput = struct { |
| 94 | 94 | |
| 95 | 95 | sort.sort(*BinaryElfSegment, self.segments.span(), segmentSortCompare); |
| 96 | 96 | |
| 97 | if (self.segments.len > 0) { | |
| 97 | if (self.segments.items.len > 0) { | |
| 98 | 98 | const firstSegment = self.segments.at(0); |
| 99 | 99 | if (firstSegment.firstSection) |firstSection| { |
| 100 | 100 | const diff = firstSection.elfOffset - firstSegment.elfOffset; |
lib/std/builtin.zig+1-1| ... | ... | @@ -424,7 +424,7 @@ pub const Version = struct { |
| 424 | 424 | } |
| 425 | 425 | |
| 426 | 426 | pub fn parse(text: []const u8) !Version { |
| 427 | var it = std.mem.separate(text, "."); | |
| 427 | var it = std.mem.split(text, "."); | |
| 428 | 428 | return Version{ |
| 429 | 429 | .major = try std.fmt.parseInt(u32, it.next() orelse return error.InvalidVersion, 10), |
| 430 | 430 | .minor = try std.fmt.parseInt(u32, it.next() orelse "0", 10), |
lib/std/coff.zig+1-1| ... | ... | @@ -181,7 +181,7 @@ pub const Coff = struct { |
| 181 | 181 | } |
| 182 | 182 | |
| 183 | 183 | pub fn loadSections(self: *Coff) !void { |
| 184 | if (self.sections.len == self.coff_header.number_of_sections) | |
| 184 | if (self.sections.items.len == self.coff_header.number_of_sections) | |
| 185 | 185 | return; |
| 186 | 186 | |
| 187 | 187 | try self.sections.ensureCapacity(self.coff_header.number_of_sections); |
lib/std/debug.zig+1-1| ... | ... | @@ -1478,7 +1478,7 @@ pub const ModuleDebugInfo = switch (builtin.os.tag) { |
| 1478 | 1478 | |
| 1479 | 1479 | var coff_section: *coff.Section = undefined; |
| 1480 | 1480 | const mod_index = for (self.sect_contribs) |sect_contrib| { |
| 1481 | if (sect_contrib.Section > self.coff.sections.len) continue; | |
| 1481 | if (sect_contrib.Section > self.coff.sections.items.len) continue; | |
| 1482 | 1482 | // Remember that SectionContribEntry.Section is 1-based. |
| 1483 | 1483 | coff_section = &self.coff.sections.span()[sect_contrib.Section - 1]; |
| 1484 | 1484 |
lib/std/dwarf.zig+4-4| ... | ... | @@ -206,7 +206,7 @@ const LineNumberProgram = struct { |
| 206 | 206 | if (self.target_address >= self.prev_address and self.target_address < self.address) { |
| 207 | 207 | const file_entry = if (self.prev_file == 0) { |
| 208 | 208 | return error.MissingDebugInfo; |
| 209 | } else if (self.prev_file - 1 >= self.file_entries.len) { | |
| 209 | } else if (self.prev_file - 1 >= self.file_entries.items.len) { | |
| 210 | 210 | return error.InvalidDebugInfo; |
| 211 | 211 | } else |
| 212 | 212 | &self.file_entries.items[self.prev_file - 1]; |
| ... | ... | @@ -645,7 +645,7 @@ pub const DwarfInfo = struct { |
| 645 | 645 | .offset = abbrev_offset, |
| 646 | 646 | .table = try di.parseAbbrevTable(abbrev_offset), |
| 647 | 647 | }); |
| 648 | return &di.abbrev_table_list.items[di.abbrev_table_list.len - 1].table; | |
| 648 | return &di.abbrev_table_list.items[di.abbrev_table_list.items.len - 1].table; | |
| 649 | 649 | } |
| 650 | 650 | |
| 651 | 651 | fn parseAbbrevTable(di: *DwarfInfo, offset: u64) !AbbrevTable { |
| ... | ... | @@ -665,7 +665,7 @@ pub const DwarfInfo = struct { |
| 665 | 665 | .has_children = (try in.readByte()) == CHILDREN_yes, |
| 666 | 666 | .attrs = ArrayList(AbbrevAttr).init(di.allocator()), |
| 667 | 667 | }); |
| 668 | const attrs = &result.items[result.len - 1].attrs; | |
| 668 | const attrs = &result.items[result.items.len - 1].attrs; | |
| 669 | 669 | |
| 670 | 670 | while (true) { |
| 671 | 671 | const attr_id = try leb.readULEB128(u64, in); |
| ... | ... | @@ -689,7 +689,7 @@ pub const DwarfInfo = struct { |
| 689 | 689 | .has_children = table_entry.has_children, |
| 690 | 690 | .attrs = ArrayList(Die.Attr).init(di.allocator()), |
| 691 | 691 | }; |
| 692 | try result.attrs.resize(table_entry.attrs.len); | |
| 692 | try result.attrs.resize(table_entry.attrs.items.len); | |
| 693 | 693 | for (table_entry.attrs.span()) |attr, i| { |
| 694 | 694 | result.attrs.items[i] = Die.Attr{ |
| 695 | 695 | .id = attr.attr_id, |
lib/std/fmt.zig+1-1| ... | ... | @@ -69,7 +69,7 @@ fn peekIsAlign(comptime fmt: []const u8) bool { |
| 69 | 69 | /// |
| 70 | 70 | /// If a formatted user type contains a function of the type |
| 71 | 71 | /// ``` |
| 72 | /// fn format(value: ?, comptime fmt: []const u8, options: std.fmt.FormatOptions, out_stream: var) !void | |
| 72 | /// pub fn format(value: ?, comptime fmt: []const u8, options: std.fmt.FormatOptions, out_stream: var) !void | |
| 73 | 73 | /// ``` |
| 74 | 74 | /// with `?` being the type formatted, this function will be called instead of the default implementation. |
| 75 | 75 | /// This allows user types to be formatted in a logical manner instead of dumping all fields of the type. |
lib/std/fs.zig+3-3| ... | ... | @@ -1482,9 +1482,9 @@ pub const Walker = struct { |
| 1482 | 1482 | /// a reference to the path. |
| 1483 | 1483 | pub fn next(self: *Walker) !?Entry { |
| 1484 | 1484 | while (true) { |
| 1485 | if (self.stack.len == 0) return null; | |
| 1485 | if (self.stack.items.len == 0) return null; | |
| 1486 | 1486 | // `top` becomes invalid after appending to `self.stack`. |
| 1487 | const top = &self.stack.span()[self.stack.len - 1]; | |
| 1487 | const top = &self.stack.span()[self.stack.items.len - 1]; | |
| 1488 | 1488 | const dirname_len = top.dirname_len; |
| 1489 | 1489 | if (try top.dir_it.next()) |base| { |
| 1490 | 1490 | self.name_buffer.shrink(dirname_len); |
| ... | ... | @@ -1499,7 +1499,7 @@ pub const Walker = struct { |
| 1499 | 1499 | errdefer new_dir.close(); |
| 1500 | 1500 | try self.stack.append(StackItem{ |
| 1501 | 1501 | .dir_it = new_dir.iterate(), |
| 1502 | .dirname_len = self.name_buffer.len, | |
| 1502 | .dirname_len = self.name_buffer.items.len, | |
| 1503 | 1503 | }); |
| 1504 | 1504 | } |
| 1505 | 1505 | } |
lib/std/hash/benchmark.zig+1-3| ... | ... | @@ -172,9 +172,7 @@ fn mode(comptime x: comptime_int) comptime_int { |
| 172 | 172 | } |
| 173 | 173 | |
| 174 | 174 | pub fn main() !void { |
| 175 | var stdout_file = std.io.getStdOut(); | |
| 176 | var stdout_out_stream = stdout_file.outStream(); | |
| 177 | const stdout = &stdout_out_stream.stream; | |
| 175 | const stdout = std.io.getStdOut().outStream(); | |
| 178 | 176 | |
| 179 | 177 | var buffer: [1024]u8 = undefined; |
| 180 | 178 | var fixed = std.heap.FixedBufferAllocator.init(buffer[0..]); |
lib/std/http/headers.zig+12-12| ... | ... | @@ -139,7 +139,7 @@ pub const Headers = struct { |
| 139 | 139 | pub fn clone(self: Self, allocator: *Allocator) !Self { |
| 140 | 140 | var other = Headers.init(allocator); |
| 141 | 141 | errdefer other.deinit(); |
| 142 | try other.data.ensureCapacity(self.data.len); | |
| 142 | try other.data.ensureCapacity(self.data.items.len); | |
| 143 | 143 | try other.index.initCapacity(self.index.entries.len); |
| 144 | 144 | for (self.data.span()) |entry| { |
| 145 | 145 | try other.append(entry.name, entry.value, entry.never_index); |
| ... | ... | @@ -152,7 +152,7 @@ pub const Headers = struct { |
| 152 | 152 | } |
| 153 | 153 | |
| 154 | 154 | pub fn append(self: *Self, name: []const u8, value: []const u8, never_index: ?bool) !void { |
| 155 | const n = self.data.len + 1; | |
| 155 | const n = self.data.items.len + 1; | |
| 156 | 156 | try self.data.ensureCapacity(n); |
| 157 | 157 | var entry: HeaderEntry = undefined; |
| 158 | 158 | if (self.index.get(name)) |kv| { |
| ... | ... | @@ -197,7 +197,7 @@ pub const Headers = struct { |
| 197 | 197 | if (self.index.remove(name)) |kv| { |
| 198 | 198 | var dex = &kv.value; |
| 199 | 199 | // iterate backwards |
| 200 | var i = dex.len; | |
| 200 | var i = dex.items.len; | |
| 201 | 201 | while (i > 0) { |
| 202 | 202 | i -= 1; |
| 203 | 203 | const data_index = dex.at(i); |
| ... | ... | @@ -220,18 +220,18 @@ pub const Headers = struct { |
| 220 | 220 | const removed = self.data.orderedRemove(i); |
| 221 | 221 | const kv = self.index.get(removed.name).?; |
| 222 | 222 | var dex = &kv.value; |
| 223 | if (dex.len == 1) { | |
| 223 | if (dex.items.len == 1) { | |
| 224 | 224 | // was last item; delete the index |
| 225 | 225 | _ = self.index.remove(kv.key); |
| 226 | 226 | dex.deinit(); |
| 227 | 227 | removed.deinit(); |
| 228 | 228 | self.allocator.free(kv.key); |
| 229 | 229 | } else { |
| 230 | dex.shrink(dex.len - 1); | |
| 230 | dex.shrink(dex.items.len - 1); | |
| 231 | 231 | removed.deinit(); |
| 232 | 232 | } |
| 233 | 233 | // if it was the last item; no need to rebuild index |
| 234 | if (i != self.data.len) { | |
| 234 | if (i != self.data.items.len) { | |
| 235 | 235 | self.rebuild_index(); |
| 236 | 236 | } |
| 237 | 237 | } |
| ... | ... | @@ -242,18 +242,18 @@ pub const Headers = struct { |
| 242 | 242 | const removed = self.data.swapRemove(i); |
| 243 | 243 | const kv = self.index.get(removed.name).?; |
| 244 | 244 | var dex = &kv.value; |
| 245 | if (dex.len == 1) { | |
| 245 | if (dex.items.len == 1) { | |
| 246 | 246 | // was last item; delete the index |
| 247 | 247 | _ = self.index.remove(kv.key); |
| 248 | 248 | dex.deinit(); |
| 249 | 249 | removed.deinit(); |
| 250 | 250 | self.allocator.free(kv.key); |
| 251 | 251 | } else { |
| 252 | dex.shrink(dex.len - 1); | |
| 252 | dex.shrink(dex.items.len - 1); | |
| 253 | 253 | removed.deinit(); |
| 254 | 254 | } |
| 255 | 255 | // if it was the last item; no need to rebuild index |
| 256 | if (i != self.data.len) { | |
| 256 | if (i != self.data.items.len) { | |
| 257 | 257 | self.rebuild_index(); |
| 258 | 258 | } |
| 259 | 259 | } |
| ... | ... | @@ -277,7 +277,7 @@ pub const Headers = struct { |
| 277 | 277 | pub fn get(self: Self, allocator: *Allocator, name: []const u8) !?[]const HeaderEntry { |
| 278 | 278 | const dex = self.getIndices(name) orelse return null; |
| 279 | 279 | |
| 280 | const buf = try allocator.alloc(HeaderEntry, dex.len); | |
| 280 | const buf = try allocator.alloc(HeaderEntry, dex.items.len); | |
| 281 | 281 | var n: usize = 0; |
| 282 | 282 | for (dex.span()) |idx| { |
| 283 | 283 | buf[n] = self.data.at(idx); |
| ... | ... | @@ -301,7 +301,7 @@ pub const Headers = struct { |
| 301 | 301 | |
| 302 | 302 | // adapted from mem.join |
| 303 | 303 | const total_len = blk: { |
| 304 | var sum: usize = dex.len - 1; // space for separator(s) | |
| 304 | var sum: usize = dex.items.len - 1; // space for separator(s) | |
| 305 | 305 | for (dex.span()) |idx| |
| 306 | 306 | sum += self.data.at(idx).value.len; |
| 307 | 307 | break :blk sum; |
| ... | ... | @@ -330,7 +330,7 @@ pub const Headers = struct { |
| 330 | 330 | var it = self.index.iterator(); |
| 331 | 331 | while (it.next()) |kv| { |
| 332 | 332 | var dex = &kv.value; |
| 333 | dex.len = 0; // keeps capacity available | |
| 333 | dex.items.len = 0; // keeps capacity available | |
| 334 | 334 | } |
| 335 | 335 | } |
| 336 | 336 | { // fill up indexes again; we know capacity is fine from before |
lib/std/io/in_stream.zig+2-2| ... | ... | @@ -54,7 +54,7 @@ pub fn InStream( |
| 54 | 54 | /// and the `std.ArrayList` has exactly `max_append_size` bytes appended. |
| 55 | 55 | pub fn readAllArrayList(self: Self, array_list: *std.ArrayList(u8), max_append_size: usize) !void { |
| 56 | 56 | try array_list.ensureCapacity(math.min(max_append_size, 4096)); |
| 57 | const original_len = array_list.len; | |
| 57 | const original_len = array_list.items.len; | |
| 58 | 58 | var start_index: usize = original_len; |
| 59 | 59 | while (true) { |
| 60 | 60 | array_list.expandToCapacity(); |
| ... | ... | @@ -106,7 +106,7 @@ pub fn InStream( |
| 106 | 106 | return; |
| 107 | 107 | } |
| 108 | 108 | |
| 109 | if (array_list.len == max_size) { | |
| 109 | if (array_list.items.len == max_size) { | |
| 110 | 110 | return error.StreamTooLong; |
| 111 | 111 | } |
| 112 | 112 |
lib/std/json.zig+10-10| ... | ... | @@ -1556,7 +1556,7 @@ fn parseInternal(comptime T: type, token: Token, tokens: *TokenStream, options: |
| 1556 | 1556 | else => {}, |
| 1557 | 1557 | } |
| 1558 | 1558 | |
| 1559 | try arraylist.ensureCapacity(arraylist.len + 1); | |
| 1559 | try arraylist.ensureCapacity(arraylist.items.len + 1); | |
| 1560 | 1560 | const v = try parseInternal(ptrInfo.child, tok, tokens, options); |
| 1561 | 1561 | arraylist.appendAssumeCapacity(v); |
| 1562 | 1562 | } |
| ... | ... | @@ -1874,7 +1874,7 @@ pub const Parser = struct { |
| 1874 | 1874 | try p.transition(&arena.allocator, input, s.i - 1, token); |
| 1875 | 1875 | } |
| 1876 | 1876 | |
| 1877 | debug.assert(p.stack.len == 1); | |
| 1877 | debug.assert(p.stack.items.len == 1); | |
| 1878 | 1878 | |
| 1879 | 1879 | return ValueTree{ |
| 1880 | 1880 | .arena = arena, |
| ... | ... | @@ -1888,7 +1888,7 @@ pub const Parser = struct { |
| 1888 | 1888 | switch (p.state) { |
| 1889 | 1889 | .ObjectKey => switch (token) { |
| 1890 | 1890 | .ObjectEnd => { |
| 1891 | if (p.stack.len == 1) { | |
| 1891 | if (p.stack.items.len == 1) { | |
| 1892 | 1892 | return; |
| 1893 | 1893 | } |
| 1894 | 1894 | |
| ... | ... | @@ -1907,8 +1907,8 @@ pub const Parser = struct { |
| 1907 | 1907 | }, |
| 1908 | 1908 | }, |
| 1909 | 1909 | .ObjectValue => { |
| 1910 | var object = &p.stack.items[p.stack.len - 2].Object; | |
| 1911 | var key = p.stack.items[p.stack.len - 1].String; | |
| 1910 | var object = &p.stack.items[p.stack.items.len - 2].Object; | |
| 1911 | var key = p.stack.items[p.stack.items.len - 1].String; | |
| 1912 | 1912 | |
| 1913 | 1913 | switch (token) { |
| 1914 | 1914 | .ObjectBegin => { |
| ... | ... | @@ -1950,11 +1950,11 @@ pub const Parser = struct { |
| 1950 | 1950 | } |
| 1951 | 1951 | }, |
| 1952 | 1952 | .ArrayValue => { |
| 1953 | var array = &p.stack.items[p.stack.len - 1].Array; | |
| 1953 | var array = &p.stack.items[p.stack.items.len - 1].Array; | |
| 1954 | 1954 | |
| 1955 | 1955 | switch (token) { |
| 1956 | 1956 | .ArrayEnd => { |
| 1957 | if (p.stack.len == 1) { | |
| 1957 | if (p.stack.items.len == 1) { | |
| 1958 | 1958 | return; |
| 1959 | 1959 | } |
| 1960 | 1960 | |
| ... | ... | @@ -2021,12 +2021,12 @@ pub const Parser = struct { |
| 2021 | 2021 | } |
| 2022 | 2022 | |
| 2023 | 2023 | fn pushToParent(p: *Parser, value: *const Value) !void { |
| 2024 | switch (p.stack.span()[p.stack.len - 1]) { | |
| 2024 | switch (p.stack.span()[p.stack.items.len - 1]) { | |
| 2025 | 2025 | // Object Parent -> [ ..., object, <key>, value ] |
| 2026 | 2026 | Value.String => |key| { |
| 2027 | 2027 | _ = p.stack.pop(); |
| 2028 | 2028 | |
| 2029 | var object = &p.stack.items[p.stack.len - 1].Object; | |
| 2029 | var object = &p.stack.items[p.stack.items.len - 1].Object; | |
| 2030 | 2030 | _ = try object.put(key, value.*); |
| 2031 | 2031 | p.state = .ObjectKey; |
| 2032 | 2032 | }, |
| ... | ... | @@ -2165,7 +2165,7 @@ test "json.parser.dynamic" { |
| 2165 | 2165 | testing.expect(animated.Bool == false); |
| 2166 | 2166 | |
| 2167 | 2167 | const array_of_object = image.Object.get("ArrayOfObject").?.value; |
| 2168 | testing.expect(array_of_object.Array.len == 1); | |
| 2168 | testing.expect(array_of_object.Array.items.len == 1); | |
| 2169 | 2169 | |
| 2170 | 2170 | const obj0 = array_of_object.Array.at(0).Object.get("n").?.value; |
| 2171 | 2171 | testing.expect(mem.eql(u8, obj0.String, "m")); |
lib/std/math/big/rational.zig-1| ... | ... | @@ -4,7 +4,6 @@ const math = std.math; |
| 4 | 4 | const mem = std.mem; |
| 5 | 5 | const testing = std.testing; |
| 6 | 6 | const Allocator = mem.Allocator; |
| 7 | const ArrayList = std.ArrayList; | |
| 8 | 7 | |
| 9 | 8 | const bn = @import("int.zig"); |
| 10 | 9 | const Limb = bn.Limb; |
lib/std/mem.zig+15-14| ... | ... | @@ -501,7 +501,7 @@ pub const toSlice = @compileError("deprecated; use std.mem.spanZ"); |
| 501 | 501 | /// the constness of the input type. `[*c]` pointers are assumed to be 0-terminated, |
| 502 | 502 | /// and assumed to not allow null. |
| 503 | 503 | pub fn Span(comptime T: type) type { |
| 504 | switch(@typeInfo(T)) { | |
| 504 | switch (@typeInfo(T)) { | |
| 505 | 505 | .Optional => |optional_info| { |
| 506 | 506 | return ?Span(optional_info.child); |
| 507 | 507 | }, |
| ... | ... | @@ -1141,7 +1141,7 @@ test "writeIntBig and writeIntLittle" { |
| 1141 | 1141 | /// If `buffer` is empty, the iterator will return null. |
| 1142 | 1142 | /// If `delimiter_bytes` does not exist in buffer, |
| 1143 | 1143 | /// the iterator will return `buffer`, null, in that order. |
| 1144 | /// See also the related function `separate`. | |
| 1144 | /// See also the related function `split`. | |
| 1145 | 1145 | pub fn tokenize(buffer: []const u8, delimiter_bytes: []const u8) TokenIterator { |
| 1146 | 1146 | return TokenIterator{ |
| 1147 | 1147 | .index = 0, |
| ... | ... | @@ -1196,15 +1196,13 @@ test "mem.tokenize (multibyte)" { |
| 1196 | 1196 | |
| 1197 | 1197 | /// Returns an iterator that iterates over the slices of `buffer` that |
| 1198 | 1198 | /// are separated by bytes in `delimiter`. |
| 1199 | /// separate("abc|def||ghi", "|") | |
| 1199 | /// split("abc|def||ghi", "|") | |
| 1200 | 1200 | /// will return slices for "abc", "def", "", "ghi", null, in that order. |
| 1201 | 1201 | /// If `delimiter` does not exist in buffer, |
| 1202 | 1202 | /// the iterator will return `buffer`, null, in that order. |
| 1203 | 1203 | /// The delimiter length must not be zero. |
| 1204 | 1204 | /// See also the related function `tokenize`. |
| 1205 | /// It is planned to rename this function to `split` before 1.0.0, like this: | |
| 1206 | /// pub fn split(buffer: []const u8, delimiter: []const u8) SplitIterator { | |
| 1207 | pub fn separate(buffer: []const u8, delimiter: []const u8) SplitIterator { | |
| 1205 | pub fn split(buffer: []const u8, delimiter: []const u8) SplitIterator { | |
| 1208 | 1206 | assert(delimiter.len != 0); |
| 1209 | 1207 | return SplitIterator{ |
| 1210 | 1208 | .index = 0, |
| ... | ... | @@ -1213,30 +1211,32 @@ pub fn separate(buffer: []const u8, delimiter: []const u8) SplitIterator { |
| 1213 | 1211 | }; |
| 1214 | 1212 | } |
| 1215 | 1213 | |
| 1216 | test "mem.separate" { | |
| 1217 | var it = separate("abc|def||ghi", "|"); | |
| 1214 | pub const separate = @compileError("deprecated: renamed to split (behavior remains unchanged)"); | |
| 1215 | ||
| 1216 | test "mem.split" { | |
| 1217 | var it = split("abc|def||ghi", "|"); | |
| 1218 | 1218 | testing.expect(eql(u8, it.next().?, "abc")); |
| 1219 | 1219 | testing.expect(eql(u8, it.next().?, "def")); |
| 1220 | 1220 | testing.expect(eql(u8, it.next().?, "")); |
| 1221 | 1221 | testing.expect(eql(u8, it.next().?, "ghi")); |
| 1222 | 1222 | testing.expect(it.next() == null); |
| 1223 | 1223 | |
| 1224 | it = separate("", "|"); | |
| 1224 | it = split("", "|"); | |
| 1225 | 1225 | testing.expect(eql(u8, it.next().?, "")); |
| 1226 | 1226 | testing.expect(it.next() == null); |
| 1227 | 1227 | |
| 1228 | it = separate("|", "|"); | |
| 1228 | it = split("|", "|"); | |
| 1229 | 1229 | testing.expect(eql(u8, it.next().?, "")); |
| 1230 | 1230 | testing.expect(eql(u8, it.next().?, "")); |
| 1231 | 1231 | testing.expect(it.next() == null); |
| 1232 | 1232 | |
| 1233 | it = separate("hello", " "); | |
| 1233 | it = split("hello", " "); | |
| 1234 | 1234 | testing.expect(eql(u8, it.next().?, "hello")); |
| 1235 | 1235 | testing.expect(it.next() == null); |
| 1236 | 1236 | } |
| 1237 | 1237 | |
| 1238 | test "mem.separate (multibyte)" { | |
| 1239 | var it = separate("a, b ,, c, d, e", ", "); | |
| 1238 | test "mem.split (multibyte)" { | |
| 1239 | var it = split("a, b ,, c, d, e", ", "); | |
| 1240 | 1240 | testing.expect(eql(u8, it.next().?, "a")); |
| 1241 | 1241 | testing.expect(eql(u8, it.next().?, "b ,")); |
| 1242 | 1242 | testing.expect(eql(u8, it.next().?, "c")); |
| ... | ... | @@ -1758,7 +1758,8 @@ fn BytesAsValueReturnType(comptime T: type, comptime B: type) type { |
| 1758 | 1758 | if (comptime !trait.is(.Pointer)(B) or |
| 1759 | 1759 | (meta.Child(B) != [size]u8 and meta.Child(B) != [size:0]u8)) |
| 1760 | 1760 | { |
| 1761 | @compileError("expected *[N]u8 " ++ ", passed " ++ @typeName(B)); | |
| 1761 | comptime var buf: [100]u8 = undefined; | |
| 1762 | @compileError(std.fmt.bufPrint(&buf, "expected *[{}]u8, passed " ++ @typeName(B), .{size}) catch unreachable); | |
| 1762 | 1763 | } |
| 1763 | 1764 | |
| 1764 | 1765 | const alignment = comptime meta.alignment(B); |
lib/std/net.zig+11-11| ... | ... | @@ -509,7 +509,7 @@ pub fn getAddressList(allocator: *mem.Allocator, name: []const u8, port: u16) !* |
| 509 | 509 | |
| 510 | 510 | try linuxLookupName(&lookup_addrs, &canon, name, family, flags, port); |
| 511 | 511 | |
| 512 | result.addrs = try arena.alloc(Address, lookup_addrs.len); | |
| 512 | result.addrs = try arena.alloc(Address, lookup_addrs.items.len); | |
| 513 | 513 | if (!canon.isNull()) { |
| 514 | 514 | result.canon_name = canon.toOwnedSlice(); |
| 515 | 515 | } |
| ... | ... | @@ -554,7 +554,7 @@ fn linuxLookupName( |
| 554 | 554 | return name_err; |
| 555 | 555 | } else { |
| 556 | 556 | try linuxLookupNameFromHosts(addrs, canon, name, family, port); |
| 557 | if (addrs.len == 0) { | |
| 557 | if (addrs.items.len == 0) { | |
| 558 | 558 | try linuxLookupNameFromDnsSearch(addrs, canon, name, family, port); |
| 559 | 559 | } |
| 560 | 560 | } |
| ... | ... | @@ -562,11 +562,11 @@ fn linuxLookupName( |
| 562 | 562 | try canon.resize(0); |
| 563 | 563 | try linuxLookupNameFromNull(addrs, family, flags, port); |
| 564 | 564 | } |
| 565 | if (addrs.len == 0) return error.UnknownHostName; | |
| 565 | if (addrs.items.len == 0) return error.UnknownHostName; | |
| 566 | 566 | |
| 567 | 567 | // No further processing is needed if there are fewer than 2 |
| 568 | 568 | // results or if there are only IPv4 results. |
| 569 | if (addrs.len == 1 or family == os.AF_INET) return; | |
| 569 | if (addrs.items.len == 1 or family == os.AF_INET) return; | |
| 570 | 570 | const all_ip4 = for (addrs.span()) |addr| { |
| 571 | 571 | if (addr.addr.any.family != os.AF_INET) break false; |
| 572 | 572 | } else true; |
| ... | ... | @@ -823,7 +823,7 @@ fn linuxLookupNameFromHosts( |
| 823 | 823 | }, |
| 824 | 824 | else => |e| return e, |
| 825 | 825 | }) |line| { |
| 826 | const no_comment_line = mem.separate(line, "#").next().?; | |
| 826 | const no_comment_line = mem.split(line, "#").next().?; | |
| 827 | 827 | |
| 828 | 828 | var line_it = mem.tokenize(no_comment_line, " \t"); |
| 829 | 829 | const ip_text = line_it.next() orelse continue; |
| ... | ... | @@ -908,7 +908,7 @@ fn linuxLookupNameFromDnsSearch( |
| 908 | 908 | canon.shrink(canon_name.len + 1); |
| 909 | 909 | try canon.appendSlice(tok); |
| 910 | 910 | try linuxLookupNameFromDns(addrs, canon, canon.span(), family, rc, port); |
| 911 | if (addrs.len != 0) return; | |
| 911 | if (addrs.items.len != 0) return; | |
| 912 | 912 | } |
| 913 | 913 | |
| 914 | 914 | canon.shrink(canon_name.len); |
| ... | ... | @@ -967,7 +967,7 @@ fn linuxLookupNameFromDns( |
| 967 | 967 | dnsParse(ap[i], ctx, dnsParseCallback) catch {}; |
| 968 | 968 | } |
| 969 | 969 | |
| 970 | if (addrs.len != 0) return; | |
| 970 | if (addrs.items.len != 0) return; | |
| 971 | 971 | if (ap[0].len < 4 or (ap[0][3] & 15) == 2) return error.TemporaryNameServerFailure; |
| 972 | 972 | if ((ap[0][3] & 15) == 0) return error.UnknownHostName; |
| 973 | 973 | if ((ap[0][3] & 15) == 3) return; |
| ... | ... | @@ -1020,13 +1020,13 @@ fn getResolvConf(allocator: *mem.Allocator, rc: *ResolvConf) !void { |
| 1020 | 1020 | }, |
| 1021 | 1021 | else => |e| return e, |
| 1022 | 1022 | }) |line| { |
| 1023 | const no_comment_line = mem.separate(line, "#").next().?; | |
| 1023 | const no_comment_line = mem.split(line, "#").next().?; | |
| 1024 | 1024 | var line_it = mem.tokenize(no_comment_line, " \t"); |
| 1025 | 1025 | |
| 1026 | 1026 | const token = line_it.next() orelse continue; |
| 1027 | 1027 | if (mem.eql(u8, token, "options")) { |
| 1028 | 1028 | while (line_it.next()) |sub_tok| { |
| 1029 | var colon_it = mem.separate(sub_tok, ":"); | |
| 1029 | var colon_it = mem.split(sub_tok, ":"); | |
| 1030 | 1030 | const name = colon_it.next().?; |
| 1031 | 1031 | const value_txt = colon_it.next() orelse continue; |
| 1032 | 1032 | const value = std.fmt.parseInt(u8, value_txt, 10) catch |err| switch (err) { |
| ... | ... | @@ -1049,7 +1049,7 @@ fn getResolvConf(allocator: *mem.Allocator, rc: *ResolvConf) !void { |
| 1049 | 1049 | } |
| 1050 | 1050 | } |
| 1051 | 1051 | |
| 1052 | if (rc.ns.len == 0) { | |
| 1052 | if (rc.ns.items.len == 0) { | |
| 1053 | 1053 | return linuxLookupNameFromNumericUnspec(&rc.ns, "127.0.0.1", 53); |
| 1054 | 1054 | } |
| 1055 | 1055 | } |
| ... | ... | @@ -1078,7 +1078,7 @@ fn resMSendRc( |
| 1078 | 1078 | var ns_list = std.ArrayList(Address).init(rc.ns.allocator); |
| 1079 | 1079 | defer ns_list.deinit(); |
| 1080 | 1080 | |
| 1081 | try ns_list.resize(rc.ns.len); | |
| 1081 | try ns_list.resize(rc.ns.items.len); | |
| 1082 | 1082 | const ns = ns_list.span(); |
| 1083 | 1083 | |
| 1084 | 1084 | for (rc.ns.span()) |iplit, i| { |
lib/std/process.zig+1-1| ... | ... | @@ -84,7 +84,7 @@ pub fn getEnvMap(allocator: *Allocator) !BufMap { |
| 84 | 84 | for (environ) |env| { |
| 85 | 85 | if (env) |ptr| { |
| 86 | 86 | const pair = mem.spanZ(ptr); |
| 87 | var parts = mem.separate(pair, "="); | |
| 87 | var parts = mem.split(pair, "="); | |
| 88 | 88 | const key = parts.next().?; |
| 89 | 89 | const value = parts.next().?; |
| 90 | 90 | try result.set(key, value); |
lib/std/special/build_runner.zig+1-1| ... | ... | @@ -171,7 +171,7 @@ fn usage(builder: *Builder, already_ran_build: bool, out_stream: var) !void { |
| 171 | 171 | \\ |
| 172 | 172 | ); |
| 173 | 173 | |
| 174 | if (builder.available_options_list.len == 0) { | |
| 174 | if (builder.available_options_list.items.len == 0) { | |
| 175 | 175 | try out_stream.print(" (none)\n", .{}); |
| 176 | 176 | } else { |
| 177 | 177 | for (builder.available_options_list.span()) |option| { |
lib/std/special/compiler_rt.zig+2| ... | ... | @@ -317,6 +317,8 @@ comptime { |
| 317 | 317 | @export(@import("compiler_rt/mulodi4.zig").__mulodi4, .{ .name = "__mulodi4", .linkage = linkage }); |
| 318 | 318 | } |
| 319 | 319 | |
| 320 | pub usingnamespace @import("compiler_rt/atomics.zig"); | |
| 321 | ||
| 320 | 322 | // Avoid dragging in the runtime safety mechanisms into this .o file, |
| 321 | 323 | // unless we're trying to test this file. |
| 322 | 324 | pub fn panic(msg: []const u8, error_return_trace: ?*builtin.StackTrace) noreturn { |
lib/std/special/compiler_rt/atomics.zig created+278| ... | ... | @@ -0,0 +1,278 @@ |
| 1 | const std = @import("std"); | |
| 2 | const builtin = std.builtin; | |
| 3 | ||
| 4 | const linkage: builtin.GlobalLinkage = if (builtin.is_test) .Internal else .Weak; | |
| 5 | ||
| 6 | const cache_line_size = 64; | |
| 7 | ||
| 8 | const SpinlockTable = struct { | |
| 9 | // Allocate ~4096 bytes of memory for the spinlock table | |
| 10 | const max_spinlocks = 64; | |
| 11 | ||
| 12 | const Spinlock = struct { | |
| 13 | // Prevent false sharing by providing enough padding between two | |
| 14 | // consecutive spinlock elements | |
| 15 | v: enum(usize) { Unlocked = 0, Locked } align(cache_line_size) = .Unlocked, | |
| 16 | ||
| 17 | fn acquire(self: *@This()) void { | |
| 18 | while (true) { | |
| 19 | switch (@atomicRmw(@TypeOf(self.v), &self.v, .Xchg, .Locked, .Acquire)) { | |
| 20 | .Unlocked => break, | |
| 21 | .Locked => {}, | |
| 22 | } | |
| 23 | } | |
| 24 | } | |
| 25 | fn release(self: *@This()) void { | |
| 26 | @atomicStore(@TypeOf(self.v), &self.v, .Unlocked, .Release); | |
| 27 | } | |
| 28 | }; | |
| 29 | ||
| 30 | list: [max_spinlocks]Spinlock = [_]Spinlock{.{}} ** max_spinlocks, | |
| 31 | ||
| 32 | // The spinlock table behaves as a really simple hash table, mapping | |
| 33 | // addresses to spinlocks. The mapping is not unique but that's only a | |
| 34 | // performance problem as the lock will be contended by more than a pair of | |
| 35 | // threads. | |
| 36 | fn get(self: *@This(), address: usize) *Spinlock { | |
| 37 | var sl = &self.list[(address >> 3) % max_spinlocks]; | |
| 38 | sl.acquire(); | |
| 39 | return sl; | |
| 40 | } | |
| 41 | }; | |
| 42 | ||
| 43 | var spinlocks: SpinlockTable = SpinlockTable{}; | |
| 44 | ||
| 45 | // The following builtins do not respect the specified memory model and instead | |
| 46 | // uses seq_cst, the strongest one, for simplicity sake. | |
| 47 | ||
| 48 | // Generic version of GCC atomic builtin functions. | |
| 49 | // Those work on any object no matter the pointer alignment nor its size. | |
| 50 | ||
| 51 | fn __atomic_load(size: u32, src: [*]u8, dest: [*]u8, model: i32) callconv(.C) void { | |
| 52 | var sl = spinlocks.get(@ptrToInt(src)); | |
| 53 | defer sl.release(); | |
| 54 | @memcpy(dest, src, size); | |
| 55 | } | |
| 56 | ||
| 57 | fn __atomic_store(size: u32, dest: [*]u8, src: [*]u8, model: i32) callconv(.C) void { | |
| 58 | var sl = spinlocks.get(@ptrToInt(dest)); | |
| 59 | defer sl.release(); | |
| 60 | @memcpy(dest, src, size); | |
| 61 | } | |
| 62 | ||
| 63 | fn __atomic_exchange(size: u32, ptr: [*]u8, val: [*]u8, old: [*]u8, model: i32) callconv(.C) void { | |
| 64 | var sl = spinlocks.get(@ptrToInt(ptr)); | |
| 65 | defer sl.release(); | |
| 66 | @memcpy(old, ptr, size); | |
| 67 | @memcpy(ptr, val, size); | |
| 68 | } | |
| 69 | ||
| 70 | fn __atomic_compare_exchange( | |
| 71 | size: u32, | |
| 72 | ptr: [*]u8, | |
| 73 | expected: [*]u8, | |
| 74 | desired: [*]u8, | |
| 75 | success: i32, | |
| 76 | failure: i32, | |
| 77 | ) callconv(.C) i32 { | |
| 78 | var sl = spinlocks.get(@ptrToInt(ptr)); | |
| 79 | defer sl.release(); | |
| 80 | for (ptr[0..size]) |b, i| { | |
| 81 | if (expected[i] != b) break; | |
| 82 | } else { | |
| 83 | // The two objects, ptr and expected, are equal | |
| 84 | @memcpy(ptr, desired, size); | |
| 85 | return 1; | |
| 86 | } | |
| 87 | @memcpy(expected, ptr, size); | |
| 88 | return 0; | |
| 89 | } | |
| 90 | ||
| 91 | comptime { | |
| 92 | @export(__atomic_load, .{ .name = "__atomic_load", .linkage = linkage }); | |
| 93 | @export(__atomic_store, .{ .name = "__atomic_store", .linkage = linkage }); | |
| 94 | @export(__atomic_exchange, .{ .name = "__atomic_exchange", .linkage = linkage }); | |
| 95 | @export(__atomic_compare_exchange, .{ .name = "__atomic_compare_exchange", .linkage = linkage }); | |
| 96 | } | |
| 97 | ||
| 98 | // Specialized versions of the GCC atomic builtin functions. | |
| 99 | // LLVM emits those iff the object size is known and the pointers are correctly | |
| 100 | // aligned. | |
| 101 | ||
| 102 | // The size (in bytes) of the biggest object that the architecture can | |
| 103 | // load/store atomically. | |
| 104 | // Objects bigger than this threshold require the use of a lock. | |
| 105 | const largest_atomic_size = switch (builtin.arch) { | |
| 106 | .x86_64 => 16, | |
| 107 | else => @sizeOf(usize), | |
| 108 | }; | |
| 109 | ||
| 110 | // The size (in bytes) of the biggest object that the architecture can perform | |
| 111 | // an atomic CAS operation with. | |
| 112 | // Objects bigger than this threshold require the use of a lock. | |
| 113 | const largest_atomic_cas_size = switch (builtin.arch) { | |
| 114 | .arm, .armeb, .thumb, .thumbeb => | |
| 115 | // The ARM v6m ISA has no ldrex/strex and so it's impossible to do CAS | |
| 116 | // operations unless we're targeting Linux or the user provides the missing | |
| 117 | // builtin functions. | |
| 118 | if (std.Target.arm.featureSetHas(std.Target.current.cpu.features, .has_v6m) and | |
| 119 | std.Target.current.os.tag != .linux) | |
| 120 | 0 | |
| 121 | else | |
| 122 | @sizeOf(usize), | |
| 123 | else => @sizeOf(usize), | |
| 124 | }; | |
| 125 | ||
| 126 | fn atomicLoadFn(comptime T: type) fn (*T, i32) callconv(.C) T { | |
| 127 | return struct { | |
| 128 | fn atomic_load_N(src: *T, model: i32) callconv(.C) T { | |
| 129 | if (@sizeOf(T) > largest_atomic_size) { | |
| 130 | var sl = spinlocks.get(@ptrToInt(src)); | |
| 131 | defer sl.release(); | |
| 132 | return src.*; | |
| 133 | } else { | |
| 134 | return @atomicLoad(T, src, .SeqCst); | |
| 135 | } | |
| 136 | } | |
| 137 | }.atomic_load_N; | |
| 138 | } | |
| 139 | ||
| 140 | comptime { | |
| 141 | @export(atomicLoadFn(u8), .{ .name = "__atomic_load_1", .linkage = linkage }); | |
| 142 | @export(atomicLoadFn(u16), .{ .name = "__atomic_load_2", .linkage = linkage }); | |
| 143 | @export(atomicLoadFn(u32), .{ .name = "__atomic_load_4", .linkage = linkage }); | |
| 144 | @export(atomicLoadFn(u64), .{ .name = "__atomic_load_8", .linkage = linkage }); | |
| 145 | } | |
| 146 | ||
| 147 | fn atomicStoreFn(comptime T: type) fn (*T, T, i32) callconv(.C) void { | |
| 148 | return struct { | |
| 149 | fn atomic_store_N(dst: *T, value: T, model: i32) callconv(.C) void { | |
| 150 | if (@sizeOf(T) > largest_atomic_size) { | |
| 151 | var sl = spinlocks.get(@ptrToInt(dst)); | |
| 152 | defer sl.release(); | |
| 153 | dst.* = value; | |
| 154 | } else { | |
| 155 | @atomicStore(T, dst, value, .SeqCst); | |
| 156 | } | |
| 157 | } | |
| 158 | }.atomic_store_N; | |
| 159 | } | |
| 160 | ||
| 161 | comptime { | |
| 162 | @export(atomicStoreFn(u8), .{ .name = "__atomic_store_1", .linkage = linkage }); | |
| 163 | @export(atomicStoreFn(u16), .{ .name = "__atomic_store_2", .linkage = linkage }); | |
| 164 | @export(atomicStoreFn(u32), .{ .name = "__atomic_store_4", .linkage = linkage }); | |
| 165 | @export(atomicStoreFn(u64), .{ .name = "__atomic_store_8", .linkage = linkage }); | |
| 166 | } | |
| 167 | ||
| 168 | fn atomicExchangeFn(comptime T: type) fn (*T, T, i32) callconv(.C) T { | |
| 169 | return struct { | |
| 170 | fn atomic_exchange_N(ptr: *T, val: T, model: i32) callconv(.C) T { | |
| 171 | if (@sizeOf(T) > largest_atomic_cas_size) { | |
| 172 | var sl = spinlocks.get(@ptrToInt(ptr)); | |
| 173 | defer sl.release(); | |
| 174 | const value = ptr.*; | |
| 175 | ptr.* = val; | |
| 176 | return value; | |
| 177 | } else { | |
| 178 | return @atomicRmw(T, ptr, .Xchg, val, .SeqCst); | |
| 179 | } | |
| 180 | } | |
| 181 | }.atomic_exchange_N; | |
| 182 | } | |
| 183 | ||
| 184 | comptime { | |
| 185 | @export(atomicExchangeFn(u8), .{ .name = "__atomic_exchange_1", .linkage = linkage }); | |
| 186 | @export(atomicExchangeFn(u16), .{ .name = "__atomic_exchange_2", .linkage = linkage }); | |
| 187 | @export(atomicExchangeFn(u32), .{ .name = "__atomic_exchange_4", .linkage = linkage }); | |
| 188 | @export(atomicExchangeFn(u64), .{ .name = "__atomic_exchange_8", .linkage = linkage }); | |
| 189 | } | |
| 190 | ||
| 191 | fn atomicCompareExchangeFn(comptime T: type) fn (*T, *T, T, i32, i32) callconv(.C) i32 { | |
| 192 | return struct { | |
| 193 | fn atomic_compare_exchange_N(ptr: *T, expected: *T, desired: T, success: i32, failure: i32) callconv(.C) i32 { | |
| 194 | if (@sizeOf(T) > largest_atomic_cas_size) { | |
| 195 | var sl = spinlocks.get(@ptrToInt(ptr)); | |
| 196 | defer sl.release(); | |
| 197 | const value = ptr.*; | |
| 198 | if (value == expected.*) { | |
| 199 | ptr.* = desired; | |
| 200 | return 1; | |
| 201 | } | |
| 202 | expected.* = value; | |
| 203 | return 0; | |
| 204 | } else { | |
| 205 | if (@cmpxchgStrong(T, ptr, expected.*, desired, .SeqCst, .SeqCst)) |old_value| { | |
| 206 | expected.* = old_value; | |
| 207 | return 0; | |
| 208 | } | |
| 209 | return 1; | |
| 210 | } | |
| 211 | } | |
| 212 | }.atomic_compare_exchange_N; | |
| 213 | } | |
| 214 | ||
| 215 | comptime { | |
| 216 | @export(atomicCompareExchangeFn(u8), .{ .name = "__atomic_compare_exchange_1", .linkage = linkage }); | |
| 217 | @export(atomicCompareExchangeFn(u16), .{ .name = "__atomic_compare_exchange_2", .linkage = linkage }); | |
| 218 | @export(atomicCompareExchangeFn(u32), .{ .name = "__atomic_compare_exchange_4", .linkage = linkage }); | |
| 219 | @export(atomicCompareExchangeFn(u64), .{ .name = "__atomic_compare_exchange_8", .linkage = linkage }); | |
| 220 | } | |
| 221 | ||
| 222 | fn fetchFn(comptime T: type, comptime op: builtin.AtomicRmwOp) fn (*T, T, i32) callconv(.C) T { | |
| 223 | return struct { | |
| 224 | pub fn fetch_op_N(ptr: *T, val: T, model: i32) callconv(.C) T { | |
| 225 | if (@sizeOf(T) > largest_atomic_cas_size) { | |
| 226 | var sl = spinlocks.get(@ptrToInt(ptr)); | |
| 227 | defer sl.release(); | |
| 228 | ||
| 229 | const value = ptr.*; | |
| 230 | ptr.* = switch (op) { | |
| 231 | .Add => value +% val, | |
| 232 | .Sub => value -% val, | |
| 233 | .And => value & val, | |
| 234 | .Nand => ~(value & val), | |
| 235 | .Or => value | val, | |
| 236 | .Xor => value ^ val, | |
| 237 | else => @compileError("unsupported atomic op"), | |
| 238 | }; | |
| 239 | ||
| 240 | return value; | |
| 241 | } | |
| 242 | ||
| 243 | return @atomicRmw(T, ptr, op, val, .SeqCst); | |
| 244 | } | |
| 245 | }.fetch_op_N; | |
| 246 | } | |
| 247 | ||
| 248 | comptime { | |
| 249 | @export(fetchFn(u8, .Add), .{ .name = "__atomic_fetch_add_1", .linkage = linkage }); | |
| 250 | @export(fetchFn(u16, .Add), .{ .name = "__atomic_fetch_add_2", .linkage = linkage }); | |
| 251 | @export(fetchFn(u32, .Add), .{ .name = "__atomic_fetch_add_4", .linkage = linkage }); | |
| 252 | @export(fetchFn(u64, .Add), .{ .name = "__atomic_fetch_add_8", .linkage = linkage }); | |
| 253 | ||
| 254 | @export(fetchFn(u8, .Sub), .{ .name = "__atomic_fetch_sub_1", .linkage = linkage }); | |
| 255 | @export(fetchFn(u16, .Sub), .{ .name = "__atomic_fetch_sub_2", .linkage = linkage }); | |
| 256 | @export(fetchFn(u32, .Sub), .{ .name = "__atomic_fetch_sub_4", .linkage = linkage }); | |
| 257 | @export(fetchFn(u64, .Sub), .{ .name = "__atomic_fetch_sub_8", .linkage = linkage }); | |
| 258 | ||
| 259 | @export(fetchFn(u8, .And), .{ .name = "__atomic_fetch_and_1", .linkage = linkage }); | |
| 260 | @export(fetchFn(u16, .And), .{ .name = "__atomic_fetch_and_2", .linkage = linkage }); | |
| 261 | @export(fetchFn(u32, .And), .{ .name = "__atomic_fetch_and_4", .linkage = linkage }); | |
| 262 | @export(fetchFn(u64, .And), .{ .name = "__atomic_fetch_and_8", .linkage = linkage }); | |
| 263 | ||
| 264 | @export(fetchFn(u8, .Or), .{ .name = "__atomic_fetch_or_1", .linkage = linkage }); | |
| 265 | @export(fetchFn(u16, .Or), .{ .name = "__atomic_fetch_or_2", .linkage = linkage }); | |
| 266 | @export(fetchFn(u32, .Or), .{ .name = "__atomic_fetch_or_4", .linkage = linkage }); | |
| 267 | @export(fetchFn(u64, .Or), .{ .name = "__atomic_fetch_or_8", .linkage = linkage }); | |
| 268 | ||
| 269 | @export(fetchFn(u8, .Xor), .{ .name = "__atomic_fetch_xor_1", .linkage = linkage }); | |
| 270 | @export(fetchFn(u16, .Xor), .{ .name = "__atomic_fetch_xor_2", .linkage = linkage }); | |
| 271 | @export(fetchFn(u32, .Xor), .{ .name = "__atomic_fetch_xor_4", .linkage = linkage }); | |
| 272 | @export(fetchFn(u64, .Xor), .{ .name = "__atomic_fetch_xor_8", .linkage = linkage }); | |
| 273 | ||
| 274 | @export(fetchFn(u8, .Nand), .{ .name = "__atomic_fetch_nand_1", .linkage = linkage }); | |
| 275 | @export(fetchFn(u16, .Nand), .{ .name = "__atomic_fetch_nand_2", .linkage = linkage }); | |
| 276 | @export(fetchFn(u32, .Nand), .{ .name = "__atomic_fetch_nand_4", .linkage = linkage }); | |
| 277 | @export(fetchFn(u64, .Nand), .{ .name = "__atomic_fetch_nand_8", .linkage = linkage }); | |
| 278 | } |
lib/std/target.zig+2-5| ... | ... | @@ -501,11 +501,8 @@ pub const Target = struct { |
| 501 | 501 | |
| 502 | 502 | /// Removes the specified feature but not its dependents. |
| 503 | 503 | pub fn removeFeatureSet(set: *Set, other_set: Set) void { |
| 504 | // TODO should be able to use binary not on @Vector type. | |
| 505 | // https://github.com/ziglang/zig/issues/903 | |
| 506 | for (set.ints) |*int, i| { | |
| 507 | int.* &= ~other_set.ints[i]; | |
| 508 | } | |
| 504 | set.ints = @as(@Vector(usize_count, usize), set.ints) & | |
| 505 | ~@as(@Vector(usize_count, usize), other_set.ints); | |
| 509 | 506 | } |
| 510 | 507 | |
| 511 | 508 | pub fn populateDependencies(set: *Set, all_features_list: []const Cpu.Feature) void { |
lib/std/unicode.zig+2-2| ... | ... | @@ -475,7 +475,7 @@ pub fn utf16leToUtf8Alloc(allocator: *mem.Allocator, utf16le: []const u16) ![]u8 |
| 475 | 475 | var it = Utf16LeIterator.init(utf16le); |
| 476 | 476 | while (try it.nextCodepoint()) |codepoint| { |
| 477 | 477 | const utf8_len = utf8CodepointSequenceLength(codepoint) catch unreachable; |
| 478 | try result.resize(result.len + utf8_len); | |
| 478 | try result.resize(result.items.len + utf8_len); | |
| 479 | 479 | assert((utf8Encode(codepoint, result.items[out_index..]) catch unreachable) == utf8_len); |
| 480 | 480 | out_index += utf8_len; |
| 481 | 481 | } |
| ... | ... | @@ -571,7 +571,7 @@ pub fn utf8ToUtf16LeWithNull(allocator: *mem.Allocator, utf8: []const u8) ![:0]u |
| 571 | 571 | } |
| 572 | 572 | } |
| 573 | 573 | |
| 574 | const len = result.len; | |
| 574 | const len = result.items.len; | |
| 575 | 575 | try result.append(0); |
| 576 | 576 | return result.toOwnedSlice()[0..len :0]; |
| 577 | 577 | } |
lib/std/unicode/throughput_test.zig+1-1| ... | ... | @@ -2,7 +2,7 @@ const builtin = @import("builtin"); |
| 2 | 2 | const std = @import("std"); |
| 3 | 3 | |
| 4 | 4 | pub fn main() !void { |
| 5 | const stdout = &std.io.getStdOut().outStream().stream; | |
| 5 | const stdout = std.io.getStdOut().outStream(); | |
| 6 | 6 | |
| 7 | 7 | const args = try std.process.argsAlloc(std.heap.page_allocator); |
| 8 | 8 |
lib/std/zig/cross_target.zig+5-5| ... | ... | @@ -224,7 +224,7 @@ pub const CrossTarget = struct { |
| 224 | 224 | .dynamic_linker = DynamicLinker.init(args.dynamic_linker), |
| 225 | 225 | }; |
| 226 | 226 | |
| 227 | var it = mem.separate(args.arch_os_abi, "-"); | |
| 227 | var it = mem.split(args.arch_os_abi, "-"); | |
| 228 | 228 | const arch_name = it.next().?; |
| 229 | 229 | const arch_is_native = mem.eql(u8, arch_name, "native"); |
| 230 | 230 | if (!arch_is_native) { |
| ... | ... | @@ -242,7 +242,7 @@ pub const CrossTarget = struct { |
| 242 | 242 | |
| 243 | 243 | const opt_abi_text = it.next(); |
| 244 | 244 | if (opt_abi_text) |abi_text| { |
| 245 | var abi_it = mem.separate(abi_text, "."); | |
| 245 | var abi_it = mem.split(abi_text, "."); | |
| 246 | 246 | const abi = std.meta.stringToEnum(Target.Abi, abi_it.next().?) orelse |
| 247 | 247 | return error.UnknownApplicationBinaryInterface; |
| 248 | 248 | result.abi = abi; |
| ... | ... | @@ -668,7 +668,7 @@ pub const CrossTarget = struct { |
| 668 | 668 | } |
| 669 | 669 | |
| 670 | 670 | fn parseOs(result: *CrossTarget, diags: *ParseOptions.Diagnostics, text: []const u8) !void { |
| 671 | var it = mem.separate(text, "."); | |
| 671 | var it = mem.split(text, "."); | |
| 672 | 672 | const os_name = it.next().?; |
| 673 | 673 | diags.os_name = os_name; |
| 674 | 674 | const os_is_native = mem.eql(u8, os_name, "native"); |
| ... | ... | @@ -722,7 +722,7 @@ pub const CrossTarget = struct { |
| 722 | 722 | .linux, |
| 723 | 723 | .dragonfly, |
| 724 | 724 | => { |
| 725 | var range_it = mem.separate(version_text, "..."); | |
| 725 | var range_it = mem.split(version_text, "..."); | |
| 726 | 726 | |
| 727 | 727 | const min_text = range_it.next().?; |
| 728 | 728 | const min_ver = SemVer.parse(min_text) catch |err| switch (err) { |
| ... | ... | @@ -742,7 +742,7 @@ pub const CrossTarget = struct { |
| 742 | 742 | }, |
| 743 | 743 | |
| 744 | 744 | .windows => { |
| 745 | var range_it = mem.separate(version_text, "..."); | |
| 745 | var range_it = mem.split(version_text, "..."); | |
| 746 | 746 | |
| 747 | 747 | const min_text = range_it.next().?; |
| 748 | 748 | const min_ver = std.meta.stringToEnum(Target.Os.WindowsVersion, min_text) orelse |
lib/std/zig/perf_test.zig+1-1| ... | ... | @@ -24,7 +24,7 @@ pub fn main() !void { |
| 24 | 24 | const mb_per_sec = bytes_per_sec / (1024 * 1024); |
| 25 | 25 | |
| 26 | 26 | var stdout_file = std.io.getStdOut(); |
| 27 | const stdout = &stdout_file.outStream().stream; | |
| 27 | const stdout = stdout_file.outStream(); | |
| 28 | 28 | try stdout.print("{:.3} MiB/s, {} KiB used \n", .{ mb_per_sec, memory_used / 1024 }); |
| 29 | 29 | } |
| 30 | 30 |
src-self-hosted/clang_options_data.zig+33-5| ... | ... | @@ -1725,7 +1725,7 @@ flagpsl("MT"), |
| 1725 | 1725 | .{ |
| 1726 | 1726 | .name = "no-standard-includes", |
| 1727 | 1727 | .syntax = .flag, |
| 1728 | .zig_equivalent = .other, | |
| 1728 | .zig_equivalent = .nostdlibinc, | |
| 1729 | 1729 | .pd1 = false, |
| 1730 | 1730 | .pd2 = true, |
| 1731 | 1731 | .psl = false, |
| ... | ... | @@ -3781,7 +3781,14 @@ flagpd1("nocudainc"), |
| 3781 | 3781 | flagpd1("nodefaultlibs"), |
| 3782 | 3782 | flagpd1("nofixprebinding"), |
| 3783 | 3783 | flagpd1("nogpulib"), |
| 3784 | flagpd1("nolibc"), | |
| 3784 | .{ | |
| 3785 | .name = "nolibc", | |
| 3786 | .syntax = .flag, | |
| 3787 | .zig_equivalent = .nostdlib, | |
| 3788 | .pd1 = true, | |
| 3789 | .pd2 = false, | |
| 3790 | .psl = false, | |
| 3791 | }, | |
| 3785 | 3792 | flagpd1("nomultidefs"), |
| 3786 | 3793 | flagpd1("fnon-call-exceptions"), |
| 3787 | 3794 | flagpd1("fno-non-call-exceptions"), |
| ... | ... | @@ -3790,8 +3797,22 @@ flagpd1("noprebind"), |
| 3790 | 3797 | flagpd1("noprofilelib"), |
| 3791 | 3798 | flagpd1("noseglinkedit"), |
| 3792 | 3799 | flagpd1("nostartfiles"), |
| 3793 | flagpd1("nostdinc"), | |
| 3794 | flagpd1("nostdinc++"), | |
| 3800 | .{ | |
| 3801 | .name = "nostdinc", | |
| 3802 | .syntax = .flag, | |
| 3803 | .zig_equivalent = .nostdlibinc, | |
| 3804 | .pd1 = true, | |
| 3805 | .pd2 = false, | |
| 3806 | .psl = false, | |
| 3807 | }, | |
| 3808 | .{ | |
| 3809 | .name = "nostdinc++", | |
| 3810 | .syntax = .flag, | |
| 3811 | .zig_equivalent = .nostdlib_cpp, | |
| 3812 | .pd1 = true, | |
| 3813 | .pd2 = false, | |
| 3814 | .psl = false, | |
| 3815 | }, | |
| 3795 | 3816 | .{ |
| 3796 | 3817 | .name = "nostdlib", |
| 3797 | 3818 | .syntax = .flag, |
| ... | ... | @@ -3800,7 +3821,14 @@ flagpd1("nostdinc++"), |
| 3800 | 3821 | .pd2 = false, |
| 3801 | 3822 | .psl = false, |
| 3802 | 3823 | }, |
| 3803 | flagpd1("nostdlibinc"), | |
| 3824 | .{ | |
| 3825 | .name = "nostdlibinc", | |
| 3826 | .syntax = .flag, | |
| 3827 | .zig_equivalent = .nostdlibinc, | |
| 3828 | .pd1 = true, | |
| 3829 | .pd2 = false, | |
| 3830 | .psl = false, | |
| 3831 | }, | |
| 3804 | 3832 | .{ |
| 3805 | 3833 | .name = "nostdlib++", |
| 3806 | 3834 | .syntax = .flag, |
src-self-hosted/libc_installation.zig+39-27| ... | ... | @@ -32,6 +32,7 @@ pub const LibCInstallation = struct { |
| 32 | 32 | LibCKernel32LibNotFound, |
| 33 | 33 | UnsupportedArchitecture, |
| 34 | 34 | WindowsSdkNotFound, |
| 35 | ZigIsTheCCompiler, | |
| 35 | 36 | }; |
| 36 | 37 | |
| 37 | 38 | pub fn parse( |
| ... | ... | @@ -60,7 +61,7 @@ pub const LibCInstallation = struct { |
| 60 | 61 | var it = std.mem.tokenize(contents, "\n"); |
| 61 | 62 | while (it.next()) |line| { |
| 62 | 63 | if (line.len == 0 or line[0] == '#') continue; |
| 63 | var line_it = std.mem.separate(line, "="); | |
| 64 | var line_it = std.mem.split(line, "="); | |
| 64 | 65 | const name = line_it.next() orelse { |
| 65 | 66 | try stderr.print("missing equal sign after field name\n", .{}); |
| 66 | 67 | return error.ParseError; |
| ... | ... | @@ -167,29 +168,22 @@ pub const LibCInstallation = struct { |
| 167 | 168 | var self: LibCInstallation = .{}; |
| 168 | 169 | |
| 169 | 170 | if (is_windows) { |
| 170 | if (is_gnu) { | |
| 171 | var batch = Batch(FindError!void, 3, .auto_async).init(); | |
| 172 | batch.add(&async self.findNativeIncludeDirPosix(args)); | |
| 173 | batch.add(&async self.findNativeCrtDirPosix(args)); | |
| 174 | try batch.wait(); | |
| 175 | } else { | |
| 176 | var sdk: *ZigWindowsSDK = undefined; | |
| 177 | switch (zig_find_windows_sdk(&sdk)) { | |
| 178 | .None => { | |
| 179 | defer zig_free_windows_sdk(sdk); | |
| 180 | ||
| 181 | var batch = Batch(FindError!void, 5, .auto_async).init(); | |
| 182 | batch.add(&async self.findNativeMsvcIncludeDir(args, sdk)); | |
| 183 | batch.add(&async self.findNativeMsvcLibDir(args, sdk)); | |
| 184 | batch.add(&async self.findNativeKernel32LibDir(args, sdk)); | |
| 185 | batch.add(&async self.findNativeIncludeDirWindows(args, sdk)); | |
| 186 | batch.add(&async self.findNativeCrtDirWindows(args, sdk)); | |
| 187 | try batch.wait(); | |
| 188 | }, | |
| 189 | .OutOfMemory => return error.OutOfMemory, | |
| 190 | .NotFound => return error.WindowsSdkNotFound, | |
| 191 | .PathTooLong => return error.WindowsSdkNotFound, | |
| 192 | } | |
| 171 | var sdk: *ZigWindowsSDK = undefined; | |
| 172 | switch (zig_find_windows_sdk(&sdk)) { | |
| 173 | .None => { | |
| 174 | defer zig_free_windows_sdk(sdk); | |
| 175 | ||
| 176 | var batch = Batch(FindError!void, 5, .auto_async).init(); | |
| 177 | batch.add(&async self.findNativeMsvcIncludeDir(args, sdk)); | |
| 178 | batch.add(&async self.findNativeMsvcLibDir(args, sdk)); | |
| 179 | batch.add(&async self.findNativeKernel32LibDir(args, sdk)); | |
| 180 | batch.add(&async self.findNativeIncludeDirWindows(args, sdk)); | |
| 181 | batch.add(&async self.findNativeCrtDirWindows(args, sdk)); | |
| 182 | try batch.wait(); | |
| 183 | }, | |
| 184 | .OutOfMemory => return error.OutOfMemory, | |
| 185 | .NotFound => return error.WindowsSdkNotFound, | |
| 186 | .PathTooLong => return error.WindowsSdkNotFound, | |
| 193 | 187 | } |
| 194 | 188 | } else { |
| 195 | 189 | try blk: { |
| ... | ... | @@ -229,10 +223,19 @@ pub const LibCInstallation = struct { |
| 229 | 223 | "-xc", |
| 230 | 224 | dev_null, |
| 231 | 225 | }; |
| 226 | var env_map = try std.process.getEnvMap(allocator); | |
| 227 | defer env_map.deinit(); | |
| 228 | ||
| 229 | // Detect infinite loops. | |
| 230 | const inf_loop_env_key = "ZIG_IS_DETECTING_LIBC_PATHS"; | |
| 231 | if (env_map.get(inf_loop_env_key) != null) return error.ZigIsTheCCompiler; | |
| 232 | try env_map.set(inf_loop_env_key, "1"); | |
| 233 | ||
| 232 | 234 | const exec_res = std.ChildProcess.exec(.{ |
| 233 | 235 | .allocator = allocator, |
| 234 | 236 | .argv = &argv, |
| 235 | 237 | .max_output_bytes = 1024 * 1024, |
| 238 | .env_map = &env_map, | |
| 236 | 239 | // Some C compilers, such as Clang, are known to rely on argv[0] to find the path |
| 237 | 240 | // to their own executable, without even bothering to resolve PATH. This results in the message: |
| 238 | 241 | // error: unable to execute command: Executable "" doesn't exist! |
| ... | ... | @@ -268,7 +271,7 @@ pub const LibCInstallation = struct { |
| 268 | 271 | try search_paths.append(line); |
| 269 | 272 | } |
| 270 | 273 | } |
| 271 | if (search_paths.len == 0) { | |
| 274 | if (search_paths.items.len == 0) { | |
| 272 | 275 | return error.CCompilerCannotFindHeaders; |
| 273 | 276 | } |
| 274 | 277 | |
| ... | ... | @@ -276,9 +279,9 @@ pub const LibCInstallation = struct { |
| 276 | 279 | const sys_include_dir_example_file = if (is_windows) "sys\\types.h" else "sys/errno.h"; |
| 277 | 280 | |
| 278 | 281 | var path_i: usize = 0; |
| 279 | while (path_i < search_paths.len) : (path_i += 1) { | |
| 282 | while (path_i < search_paths.items.len) : (path_i += 1) { | |
| 280 | 283 | // search in reverse order |
| 281 | const search_path_untrimmed = search_paths.at(search_paths.len - path_i - 1); | |
| 284 | const search_path_untrimmed = search_paths.at(search_paths.items.len - path_i - 1); | |
| 282 | 285 | const search_path = std.mem.trimLeft(u8, search_path_untrimmed, " "); |
| 283 | 286 | var search_dir = fs.cwd().openDir(search_path, .{}) catch |err| switch (err) { |
| 284 | 287 | error.FileNotFound, |
| ... | ... | @@ -518,10 +521,19 @@ fn ccPrintFileName(args: CCPrintFileNameOptions) ![:0]u8 { |
| 518 | 521 | defer allocator.free(arg1); |
| 519 | 522 | const argv = [_][]const u8{ cc_exe, arg1 }; |
| 520 | 523 | |
| 524 | var env_map = try std.process.getEnvMap(allocator); | |
| 525 | defer env_map.deinit(); | |
| 526 | ||
| 527 | // Detect infinite loops. | |
| 528 | const inf_loop_env_key = "ZIG_IS_DETECTING_LIBC_PATHS"; | |
| 529 | if (env_map.get(inf_loop_env_key) != null) return error.ZigIsTheCCompiler; | |
| 530 | try env_map.set(inf_loop_env_key, "1"); | |
| 531 | ||
| 521 | 532 | const exec_res = std.ChildProcess.exec(.{ |
| 522 | 533 | .allocator = allocator, |
| 523 | 534 | .argv = &argv, |
| 524 | 535 | .max_output_bytes = 1024 * 1024, |
| 536 | .env_map = &env_map, | |
| 525 | 537 | // Some C compilers, such as Clang, are known to rely on argv[0] to find the path |
| 526 | 538 | // to their own executable, without even bothering to resolve PATH. This results in the message: |
| 527 | 539 | // error: unable to execute command: Executable "" doesn't exist! |
src-self-hosted/main.zig+1-1| ... | ... | @@ -403,7 +403,7 @@ fn buildOutputType(allocator: *Allocator, args: []const []const u8, out_type: Co |
| 403 | 403 | const root_name = if (provided_name) |n| n else blk: { |
| 404 | 404 | if (root_src_file) |file| { |
| 405 | 405 | const basename = fs.path.basename(file); |
| 406 | var it = mem.separate(basename, "."); | |
| 406 | var it = mem.split(basename, "."); | |
| 407 | 407 | break :blk it.next() orelse basename; |
| 408 | 408 | } else { |
| 409 | 409 | try stderr.writeAll("--name [name] not provided and unable to infer\n"); |
src-self-hosted/stage2.zig+5-2| ... | ... | @@ -115,6 +115,7 @@ const Error = extern enum { |
| 115 | 115 | InvalidOperatingSystemVersion, |
| 116 | 116 | UnknownClangOption, |
| 117 | 117 | NestedResponseFile, |
| 118 | ZigIsTheCCompiler, | |
| 118 | 119 | FileBusy, |
| 119 | 120 | Locked, |
| 120 | 121 | }; |
| ... | ... | @@ -241,7 +242,7 @@ fn fmtMain(argc: c_int, argv: [*]const [*:0]const u8) !void { |
| 241 | 242 | } |
| 242 | 243 | |
| 243 | 244 | if (stdin_flag) { |
| 244 | if (input_files.len != 0) { | |
| 245 | if (input_files.items.len != 0) { | |
| 245 | 246 | try stderr.writeAll("cannot use --stdin with positional arguments\n"); |
| 246 | 247 | process.exit(1); |
| 247 | 248 | } |
| ... | ... | @@ -275,7 +276,7 @@ fn fmtMain(argc: c_int, argv: [*]const [*:0]const u8) !void { |
| 275 | 276 | return; |
| 276 | 277 | } |
| 277 | 278 | |
| 278 | if (input_files.len == 0) { | |
| 279 | if (input_files.items.len == 0) { | |
| 279 | 280 | try stderr.writeAll("expected at least one source file argument\n"); |
| 280 | 281 | process.exit(1); |
| 281 | 282 | } |
| ... | ... | @@ -871,6 +872,7 @@ export fn stage2_libc_find_native(stage1_libc: *Stage2LibCInstallation) Error { |
| 871 | 872 | error.LibCKernel32LibNotFound => return .LibCKernel32LibNotFound, |
| 872 | 873 | error.UnsupportedArchitecture => return .UnsupportedArchitecture, |
| 873 | 874 | error.WindowsSdkNotFound => return .WindowsSdkNotFound, |
| 875 | error.ZigIsTheCCompiler => return .ZigIsTheCCompiler, | |
| 874 | 876 | }; |
| 875 | 877 | stage1_libc.initFromStage2(libc); |
| 876 | 878 | return .None; |
| ... | ... | @@ -1296,6 +1298,7 @@ pub const ClangArgIterator = extern struct { |
| 1296 | 1298 | dep_file, |
| 1297 | 1299 | framework_dir, |
| 1298 | 1300 | framework, |
| 1301 | nostdlibinc, | |
| 1299 | 1302 | }; |
| 1300 | 1303 | |
| 1301 | 1304 | const Args = struct { |
src-self-hosted/translate_c.zig+83-28| ... | ... | @@ -1170,7 +1170,7 @@ fn transBinaryOperator( |
| 1170 | 1170 | } |
| 1171 | 1171 | }, |
| 1172 | 1172 | .Div => { |
| 1173 | if (!cIsUnsignedInteger(qt)) { | |
| 1173 | if (cIsSignedInteger(qt)) { | |
| 1174 | 1174 | // signed integer division uses @divTrunc |
| 1175 | 1175 | const div_trunc_node = try transCreateNodeBuiltinFnCall(rp.c, "@divTrunc"); |
| 1176 | 1176 | try div_trunc_node.params.push(try transExpr(rp, scope, ZigClangBinaryOperator_getLHS(stmt), .used, .l_value)); |
| ... | ... | @@ -1182,7 +1182,7 @@ fn transBinaryOperator( |
| 1182 | 1182 | } |
| 1183 | 1183 | }, |
| 1184 | 1184 | .Rem => { |
| 1185 | if (!cIsUnsignedInteger(qt)) { | |
| 1185 | if (cIsSignedInteger(qt)) { | |
| 1186 | 1186 | // signed integer division uses @rem |
| 1187 | 1187 | const rem_node = try transCreateNodeBuiltinFnCall(rp.c, "@rem"); |
| 1188 | 1188 | try rem_node.params.push(try transExpr(rp, scope, ZigClangBinaryOperator_getLHS(stmt), .used, .l_value)); |
| ... | ... | @@ -3018,6 +3018,8 @@ fn transCompoundAssignOperator(rp: RestorePoint, scope: *Scope, stmt: *const Zig |
| 3018 | 3018 | return transCreateCompoundAssign(rp, scope, stmt, .AssignSubWrap, .MinusPercentEqual, "-%=", .SubWrap, .MinusPercent, "-%", used) |
| 3019 | 3019 | else |
| 3020 | 3020 | return transCreateCompoundAssign(rp, scope, stmt, .AssignSub, .MinusPercentEqual, "-=", .Sub, .Minus, "-", used), |
| 3021 | .DivAssign => return transCreateCompoundAssign(rp, scope, stmt, .AssignDiv, .SlashEqual, "/=", .Div, .Slash, "/", used), | |
| 3022 | .RemAssign => return transCreateCompoundAssign(rp, scope, stmt, .AssignMod, .PercentEqual, "%=", .Mod, .Percent, "%", used), | |
| 3021 | 3023 | .ShlAssign => return transCreateCompoundAssign(rp, scope, stmt, .AssignBitShiftLeft, .AngleBracketAngleBracketLeftEqual, "<<=", .BitShiftLeft, .AngleBracketAngleBracketLeft, "<<", used), |
| 3022 | 3024 | .ShrAssign => return transCreateCompoundAssign(rp, scope, stmt, .AssignBitShiftRight, .AngleBracketAngleBracketRightEqual, ">>=", .BitShiftRight, .AngleBracketAngleBracketRight, ">>", used), |
| 3023 | 3025 | .AndAssign => return transCreateCompoundAssign(rp, scope, stmt, .AssignBitAnd, .AmpersandEqual, "&=", .BitAnd, .Ampersand, "&", used), |
| ... | ... | @@ -3046,13 +3048,37 @@ fn transCreateCompoundAssign( |
| 3046 | 3048 | used: ResultUsed, |
| 3047 | 3049 | ) TransError!*ast.Node { |
| 3048 | 3050 | const is_shift = bin_op == .BitShiftLeft or bin_op == .BitShiftRight; |
| 3051 | const is_div = bin_op == .Div; | |
| 3052 | const is_mod = bin_op == .Mod; | |
| 3049 | 3053 | const lhs = ZigClangCompoundAssignOperator_getLHS(stmt); |
| 3050 | 3054 | const rhs = ZigClangCompoundAssignOperator_getRHS(stmt); |
| 3051 | 3055 | const loc = ZigClangCompoundAssignOperator_getBeginLoc(stmt); |
| 3056 | const is_signed = cIsSignedInteger(getExprQualType(rp.c, lhs)); | |
| 3052 | 3057 | if (used == .unused) { |
| 3053 | 3058 | // common case |
| 3054 | 3059 | // c: lhs += rhs |
| 3055 | 3060 | // zig: lhs += rhs |
| 3061 | ||
| 3062 | if ((is_mod or is_div) and is_signed) { | |
| 3063 | const op_token = try appendToken(rp.c, .Equal, "="); | |
| 3064 | const op_node = try rp.c.a().create(ast.Node.InfixOp); | |
| 3065 | const builtin = if (is_mod) "@rem" else "@divTrunc"; | |
| 3066 | const builtin_node = try transCreateNodeBuiltinFnCall(rp.c, builtin); | |
| 3067 | const lhs_node = try transExpr(rp, scope, lhs, .used, .l_value); | |
| 3068 | try builtin_node.params.push(lhs_node); | |
| 3069 | _ = try appendToken(rp.c, .Comma, ","); | |
| 3070 | try builtin_node.params.push(try transExpr(rp, scope, rhs, .used, .r_value)); | |
| 3071 | builtin_node.rparen_token = try appendToken(rp.c, .RParen, ")"); | |
| 3072 | op_node.* = .{ | |
| 3073 | .op_token = op_token, | |
| 3074 | .lhs = lhs_node, | |
| 3075 | .op = .Assign, | |
| 3076 | .rhs = &builtin_node.base, | |
| 3077 | }; | |
| 3078 | _ = try appendToken(rp.c, .Semicolon, ";"); | |
| 3079 | return &op_node.base; | |
| 3080 | } | |
| 3081 | ||
| 3056 | 3082 | const lhs_node = try transExpr(rp, scope, lhs, .used, .l_value); |
| 3057 | 3083 | const eq_token = try appendToken(rp.c, assign_tok_id, assign_bytes); |
| 3058 | 3084 | var rhs_node = if (is_shift) |
| ... | ... | @@ -3095,31 +3121,51 @@ fn transCreateCompoundAssign( |
| 3095 | 3121 | const lhs_node = try transCreateNodeIdentifier(rp.c, ref); |
| 3096 | 3122 | const ref_node = try transCreateNodePtrDeref(rp.c, lhs_node); |
| 3097 | 3123 | _ = try appendToken(rp.c, .Semicolon, ";"); |
| 3098 | const bin_token = try appendToken(rp.c, bin_tok_id, bin_bytes); | |
| 3099 | var rhs_node = try transExpr(rp, scope, rhs, .used, .r_value); | |
| 3100 | if (is_shift) { | |
| 3101 | const cast_node = try transCreateNodeBuiltinFnCall(rp.c, "@intCast"); | |
| 3102 | const rhs_type = try qualTypeToLog2IntRef(rp, getExprQualType(rp.c, rhs), loc); | |
| 3103 | try cast_node.params.push(rhs_type); | |
| 3124 | ||
| 3125 | if ((is_mod or is_div) and is_signed) { | |
| 3126 | const op_token = try appendToken(rp.c, .Equal, "="); | |
| 3127 | const op_node = try rp.c.a().create(ast.Node.InfixOp); | |
| 3128 | const builtin = if (is_mod) "@rem" else "@divTrunc"; | |
| 3129 | const builtin_node = try transCreateNodeBuiltinFnCall(rp.c, builtin); | |
| 3130 | try builtin_node.params.push(try transCreateNodePtrDeref(rp.c, lhs_node)); | |
| 3104 | 3131 | _ = try appendToken(rp.c, .Comma, ","); |
| 3105 | try cast_node.params.push(rhs_node); | |
| 3106 | cast_node.rparen_token = try appendToken(rp.c, .RParen, ")"); | |
| 3107 | rhs_node = &cast_node.base; | |
| 3108 | } | |
| 3109 | const rhs_bin = try transCreateNodeInfixOp(rp, scope, ref_node, bin_op, bin_token, rhs_node, .used, false); | |
| 3132 | try builtin_node.params.push(try transExpr(rp, scope, rhs, .used, .r_value)); | |
| 3133 | builtin_node.rparen_token = try appendToken(rp.c, .RParen, ")"); | |
| 3134 | _ = try appendToken(rp.c, .Semicolon, ";"); | |
| 3135 | op_node.* = .{ | |
| 3136 | .op_token = op_token, | |
| 3137 | .lhs = ref_node, | |
| 3138 | .op = .Assign, | |
| 3139 | .rhs = &builtin_node.base, | |
| 3140 | }; | |
| 3141 | _ = try appendToken(rp.c, .Semicolon, ";"); | |
| 3142 | try block_scope.block_node.statements.push(&op_node.base); | |
| 3143 | } else { | |
| 3144 | const bin_token = try appendToken(rp.c, bin_tok_id, bin_bytes); | |
| 3145 | var rhs_node = try transExpr(rp, scope, rhs, .used, .r_value); | |
| 3110 | 3146 | |
| 3111 | _ = try appendToken(rp.c, .Semicolon, ";"); | |
| 3147 | if (is_shift) { | |
| 3148 | const cast_node = try transCreateNodeBuiltinFnCall(rp.c, "@intCast"); | |
| 3149 | const rhs_type = try qualTypeToLog2IntRef(rp, getExprQualType(rp.c, rhs), loc); | |
| 3150 | try cast_node.params.push(rhs_type); | |
| 3151 | _ = try appendToken(rp.c, .Comma, ","); | |
| 3152 | try cast_node.params.push(rhs_node); | |
| 3153 | cast_node.rparen_token = try appendToken(rp.c, .RParen, ")"); | |
| 3154 | rhs_node = &cast_node.base; | |
| 3155 | } | |
| 3112 | 3156 | |
| 3113 | const eq_token = try appendToken(rp.c, .Equal, "="); | |
| 3114 | const assign = try transCreateNodeInfixOp(rp, scope, ref_node, .Assign, eq_token, rhs_bin, .used, false); | |
| 3115 | try block_scope.block_node.statements.push(assign); | |
| 3157 | const rhs_bin = try transCreateNodeInfixOp(rp, scope, ref_node, bin_op, bin_token, rhs_node, .used, false); | |
| 3158 | _ = try appendToken(rp.c, .Semicolon, ";"); | |
| 3159 | ||
| 3160 | const eq_token = try appendToken(rp.c, .Equal, "="); | |
| 3161 | const assign = try transCreateNodeInfixOp(rp, scope, ref_node, .Assign, eq_token, rhs_bin, .used, false); | |
| 3162 | try block_scope.block_node.statements.push(assign); | |
| 3163 | } | |
| 3116 | 3164 | |
| 3117 | 3165 | const break_node = try transCreateNodeBreak(rp.c, block_scope.label); |
| 3118 | 3166 | break_node.rhs = ref_node; |
| 3119 | 3167 | try block_scope.block_node.statements.push(&break_node.base); |
| 3120 | 3168 | block_scope.block_node.rbrace = try appendToken(rp.c, .RBrace, "}"); |
| 3121 | // semicolon must immediately follow rbrace because it is the last token in a block | |
| 3122 | _ = try appendToken(rp.c, .Semicolon, ";"); | |
| 3123 | 3169 | const grouped_expr = try rp.c.a().create(ast.Node.GroupedExpression); |
| 3124 | 3170 | grouped_expr.* = .{ |
| 3125 | 3171 | .lparen = try appendToken(rp.c, .LParen, "("), |
| ... | ... | @@ -4309,7 +4355,7 @@ fn makeRestorePoint(c: *Context) RestorePoint { |
| 4309 | 4355 | return RestorePoint{ |
| 4310 | 4356 | .c = c, |
| 4311 | 4357 | .token_index = c.tree.tokens.len, |
| 4312 | .src_buf_index = c.source_buffer.len, | |
| 4358 | .src_buf_index = c.source_buffer.items.len, | |
| 4313 | 4359 | }; |
| 4314 | 4360 | } |
| 4315 | 4361 | |
| ... | ... | @@ -4771,11 +4817,11 @@ fn appendToken(c: *Context, token_id: Token.Id, bytes: []const u8) !ast.TokenInd |
| 4771 | 4817 | |
| 4772 | 4818 | fn appendTokenFmt(c: *Context, token_id: Token.Id, comptime format: []const u8, args: var) !ast.TokenIndex { |
| 4773 | 4819 | assert(token_id != .Invalid); |
| 4774 | const start_index = c.source_buffer.len; | |
| 4820 | const start_index = c.source_buffer.items.len; | |
| 4775 | 4821 | errdefer c.source_buffer.shrink(start_index); |
| 4776 | 4822 | |
| 4777 | 4823 | try c.source_buffer.outStream().print(format, args); |
| 4778 | const end_index = c.source_buffer.len; | |
| 4824 | const end_index = c.source_buffer.items.len; | |
| 4779 | 4825 | const token_index = c.tree.tokens.len; |
| 4780 | 4826 | const new_token = try c.tree.tokens.addOne(); |
| 4781 | 4827 | errdefer c.tree.tokens.shrink(token_index); |
| ... | ... | @@ -5387,12 +5433,21 @@ fn parseCPrimaryExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8, |
| 5387 | 5433 | switch (tok.id) { |
| 5388 | 5434 | .CharLiteral => { |
| 5389 | 5435 | const first_tok = it.list.at(0); |
| 5390 | const token = try appendToken(c, .CharLiteral, try zigifyEscapeSequences(c, source[tok.start..tok.end], source[first_tok.start..first_tok.end], source_loc)); | |
| 5391 | const node = try c.a().create(ast.Node.CharLiteral); | |
| 5392 | node.* = .{ | |
| 5393 | .token = token, | |
| 5394 | }; | |
| 5395 | return &node.base; | |
| 5436 | if (source[tok.start] != '\'' or source[tok.start + 1] == '\\' or tok.end - tok.start == 3) { | |
| 5437 | const token = try appendToken(c, .CharLiteral, try zigifyEscapeSequences(c, source[tok.start..tok.end], source[first_tok.start..first_tok.end], source_loc)); | |
| 5438 | const node = try c.a().create(ast.Node.CharLiteral); | |
| 5439 | node.* = .{ | |
| 5440 | .token = token, | |
| 5441 | }; | |
| 5442 | return &node.base; | |
| 5443 | } else { | |
| 5444 | const token = try appendTokenFmt(c, .IntegerLiteral, "0x{x}", .{source[tok.start+1..tok.end-1]}); | |
| 5445 | const node = try c.a().create(ast.Node.IntegerLiteral); | |
| 5446 | node.* = .{ | |
| 5447 | .token = token, | |
| 5448 | }; | |
| 5449 | return &node.base; | |
| 5450 | } | |
| 5396 | 5451 | }, |
| 5397 | 5452 | .StringLiteral => { |
| 5398 | 5453 | const first_tok = it.list.at(0); |
src/all_types.hpp+1| ... | ... | @@ -2259,6 +2259,7 @@ struct CodeGen { |
| 2259 | 2259 | size_t version_minor; |
| 2260 | 2260 | size_t version_patch; |
| 2261 | 2261 | const char *linker_script; |
| 2262 | size_t stack_size_override; | |
| 2262 | 2263 | |
| 2263 | 2264 | BuildMode build_mode; |
| 2264 | 2265 | OutType out_type; |
src/analyze.cpp+8| ... | ... | @@ -5769,6 +5769,10 @@ OnePossibleValue type_has_one_possible_value(CodeGen *g, ZigType *type_entry) { |
| 5769 | 5769 | type_entry->one_possible_value = OnePossibleValueNo; |
| 5770 | 5770 | for (size_t i = 0; i < type_entry->data.structure.src_field_count; i += 1) { |
| 5771 | 5771 | TypeStructField *field = type_entry->data.structure.fields[i]; |
| 5772 | if (field->is_comptime) { | |
| 5773 | // If this field is comptime then the field can only be one possible value | |
| 5774 | continue; | |
| 5775 | } | |
| 5772 | 5776 | OnePossibleValue opv = (field->type_entry != nullptr) ? |
| 5773 | 5777 | type_has_one_possible_value(g, field->type_entry) : |
| 5774 | 5778 | type_val_resolve_has_one_possible_value(g, field->type_val); |
| ... | ... | @@ -5825,6 +5829,10 @@ ZigValue *get_the_one_possible_value(CodeGen *g, ZigType *type_entry) { |
| 5825 | 5829 | result->data.x_struct.fields = alloc_const_vals_ptrs(g, field_count); |
| 5826 | 5830 | for (size_t i = 0; i < field_count; i += 1) { |
| 5827 | 5831 | TypeStructField *field = struct_type->data.structure.fields[i]; |
| 5832 | if (field->is_comptime) { | |
| 5833 | copy_const_val(g, result->data.x_struct.fields[i], field->init_val); | |
| 5834 | continue; | |
| 5835 | } | |
| 5828 | 5836 | ZigType *field_type = resolve_struct_field_type(g, field); |
| 5829 | 5837 | assert(field_type != nullptr); |
| 5830 | 5838 | result->data.x_struct.fields[i] = get_the_one_possible_value(g, field_type); |
src/codegen.cpp+171-136| ... | ... | @@ -2535,19 +2535,51 @@ static LLVMValueRef ir_render_return(CodeGen *g, IrExecutableGen *executable, Ir |
| 2535 | 2535 | return nullptr; |
| 2536 | 2536 | } |
| 2537 | 2537 | |
| 2538 | static LLVMValueRef gen_overflow_shl_op(CodeGen *g, ZigType *type_entry, | |
| 2539 | LLVMValueRef val1, LLVMValueRef val2) | |
| 2538 | enum class ScalarizePredicate { | |
| 2539 | // Returns true iff all the elements in the vector are 1. | |
| 2540 | // Equivalent to folding all the bits with `and`. | |
| 2541 | All, | |
| 2542 | // Returns true iff there's at least one element in the vector that is 1. | |
| 2543 | // Equivalent to folding all the bits with `or`. | |
| 2544 | Any, | |
| 2545 | }; | |
| 2546 | ||
| 2547 | // Collapses a <N x i1> vector into a single i1 according to the given predicate | |
| 2548 | static LLVMValueRef scalarize_cmp_result(CodeGen *g, LLVMValueRef val, ScalarizePredicate predicate) { | |
| 2549 | assert(LLVMGetTypeKind(LLVMTypeOf(val)) == LLVMVectorTypeKind); | |
| 2550 | LLVMTypeRef scalar_type = LLVMIntType(LLVMGetVectorSize(LLVMTypeOf(val))); | |
| 2551 | LLVMValueRef casted = LLVMBuildBitCast(g->builder, val, scalar_type, ""); | |
| 2552 | ||
| 2553 | switch (predicate) { | |
| 2554 | case ScalarizePredicate::Any: { | |
| 2555 | LLVMValueRef all_zeros = LLVMConstNull(scalar_type); | |
| 2556 | return LLVMBuildICmp(g->builder, LLVMIntNE, casted, all_zeros, ""); | |
| 2557 | } | |
| 2558 | case ScalarizePredicate::All: { | |
| 2559 | LLVMValueRef all_ones = LLVMConstAllOnes(scalar_type); | |
| 2560 | return LLVMBuildICmp(g->builder, LLVMIntEQ, casted, all_ones, ""); | |
| 2561 | } | |
| 2562 | } | |
| 2563 | ||
| 2564 | zig_unreachable(); | |
| 2565 | } | |
| 2566 | ||
| 2567 | ||
| 2568 | static LLVMValueRef gen_overflow_shl_op(CodeGen *g, ZigType *operand_type, | |
| 2569 | LLVMValueRef val1, LLVMValueRef val2) | |
| 2540 | 2570 | { |
| 2541 | 2571 | // for unsigned left shifting, we do the lossy shift, then logically shift |
| 2542 | 2572 | // right the same number of bits |
| 2543 | 2573 | // if the values don't match, we have an overflow |
| 2544 | 2574 | // for signed left shifting we do the same except arithmetic shift right |
| 2575 | ZigType *scalar_type = (operand_type->id == ZigTypeIdVector) ? | |
| 2576 | operand_type->data.vector.elem_type : operand_type; | |
| 2545 | 2577 | |
| 2546 | assert(type_entry->id == ZigTypeIdInt); | |
| 2578 | assert(scalar_type->id == ZigTypeIdInt); | |
| 2547 | 2579 | |
| 2548 | 2580 | LLVMValueRef result = LLVMBuildShl(g->builder, val1, val2, ""); |
| 2549 | 2581 | LLVMValueRef orig_val; |
| 2550 | if (type_entry->data.integral.is_signed) { | |
| 2582 | if (scalar_type->data.integral.is_signed) { | |
| 2551 | 2583 | orig_val = LLVMBuildAShr(g->builder, result, val2, ""); |
| 2552 | 2584 | } else { |
| 2553 | 2585 | orig_val = LLVMBuildLShr(g->builder, result, val2, ""); |
| ... | ... | @@ -2556,6 +2588,9 @@ static LLVMValueRef gen_overflow_shl_op(CodeGen *g, ZigType *type_entry, |
| 2556 | 2588 | |
| 2557 | 2589 | LLVMBasicBlockRef ok_block = LLVMAppendBasicBlock(g->cur_fn_val, "OverflowOk"); |
| 2558 | 2590 | LLVMBasicBlockRef fail_block = LLVMAppendBasicBlock(g->cur_fn_val, "OverflowFail"); |
| 2591 | if (operand_type->id == ZigTypeIdVector) { | |
| 2592 | ok_bit = scalarize_cmp_result(g, ok_bit, ScalarizePredicate::All); | |
| 2593 | } | |
| 2559 | 2594 | LLVMBuildCondBr(g->builder, ok_bit, ok_block, fail_block); |
| 2560 | 2595 | |
| 2561 | 2596 | LLVMPositionBuilderAtEnd(g->builder, fail_block); |
| ... | ... | @@ -2565,13 +2600,16 @@ static LLVMValueRef gen_overflow_shl_op(CodeGen *g, ZigType *type_entry, |
| 2565 | 2600 | return result; |
| 2566 | 2601 | } |
| 2567 | 2602 | |
| 2568 | static LLVMValueRef gen_overflow_shr_op(CodeGen *g, ZigType *type_entry, | |
| 2569 | LLVMValueRef val1, LLVMValueRef val2) | |
| 2603 | static LLVMValueRef gen_overflow_shr_op(CodeGen *g, ZigType *operand_type, | |
| 2604 | LLVMValueRef val1, LLVMValueRef val2) | |
| 2570 | 2605 | { |
| 2571 | assert(type_entry->id == ZigTypeIdInt); | |
| 2606 | ZigType *scalar_type = (operand_type->id == ZigTypeIdVector) ? | |
| 2607 | operand_type->data.vector.elem_type : operand_type; | |
| 2608 | ||
| 2609 | assert(scalar_type->id == ZigTypeIdInt); | |
| 2572 | 2610 | |
| 2573 | 2611 | LLVMValueRef result; |
| 2574 | if (type_entry->data.integral.is_signed) { | |
| 2612 | if (scalar_type->data.integral.is_signed) { | |
| 2575 | 2613 | result = LLVMBuildAShr(g->builder, val1, val2, ""); |
| 2576 | 2614 | } else { |
| 2577 | 2615 | result = LLVMBuildLShr(g->builder, val1, val2, ""); |
| ... | ... | @@ -2581,6 +2619,9 @@ static LLVMValueRef gen_overflow_shr_op(CodeGen *g, ZigType *type_entry, |
| 2581 | 2619 | |
| 2582 | 2620 | LLVMBasicBlockRef ok_block = LLVMAppendBasicBlock(g->cur_fn_val, "OverflowOk"); |
| 2583 | 2621 | LLVMBasicBlockRef fail_block = LLVMAppendBasicBlock(g->cur_fn_val, "OverflowFail"); |
| 2622 | if (operand_type->id == ZigTypeIdVector) { | |
| 2623 | ok_bit = scalarize_cmp_result(g, ok_bit, ScalarizePredicate::All); | |
| 2624 | } | |
| 2584 | 2625 | LLVMBuildCondBr(g->builder, ok_bit, ok_block, fail_block); |
| 2585 | 2626 | |
| 2586 | 2627 | LLVMPositionBuilderAtEnd(g->builder, fail_block); |
| ... | ... | @@ -2591,12 +2632,7 @@ static LLVMValueRef gen_overflow_shr_op(CodeGen *g, ZigType *type_entry, |
| 2591 | 2632 | } |
| 2592 | 2633 | |
| 2593 | 2634 | static LLVMValueRef gen_float_op(CodeGen *g, LLVMValueRef val, ZigType *type_entry, BuiltinFnId op) { |
| 2594 | if ((op == BuiltinFnIdCeil || | |
| 2595 | op == BuiltinFnIdFloor) && | |
| 2596 | type_entry->id == ZigTypeIdInt) | |
| 2597 | return val; | |
| 2598 | assert(type_entry->id == ZigTypeIdFloat); | |
| 2599 | ||
| 2635 | assert(type_entry->id == ZigTypeIdFloat || type_entry->id == ZigTypeIdVector); | |
| 2600 | 2636 | LLVMValueRef floor_fn = get_float_fn(g, type_entry, ZigLLVMFnIdFloatOp, op); |
| 2601 | 2637 | return LLVMBuildCall(g->builder, floor_fn, &val, 1, ""); |
| 2602 | 2638 | } |
| ... | ... | @@ -2612,6 +2648,21 @@ static LLVMValueRef bigint_to_llvm_const(LLVMTypeRef type_ref, BigInt *bigint) { |
| 2612 | 2648 | if (bigint->digit_count == 0) { |
| 2613 | 2649 | return LLVMConstNull(type_ref); |
| 2614 | 2650 | } |
| 2651 | ||
| 2652 | if (LLVMGetTypeKind(type_ref) == LLVMVectorTypeKind) { | |
| 2653 | const unsigned vector_len = LLVMGetVectorSize(type_ref); | |
| 2654 | LLVMTypeRef elem_type = LLVMGetElementType(type_ref); | |
| 2655 | ||
| 2656 | LLVMValueRef *values = heap::c_allocator.allocate_nonzero<LLVMValueRef>(vector_len); | |
| 2657 | // Create a vector with all the elements having the same value | |
| 2658 | for (unsigned i = 0; i < vector_len; i++) { | |
| 2659 | values[i] = bigint_to_llvm_const(elem_type, bigint); | |
| 2660 | } | |
| 2661 | LLVMValueRef result = LLVMConstVector(values, vector_len); | |
| 2662 | heap::c_allocator.deallocate(values, vector_len); | |
| 2663 | return result; | |
| 2664 | } | |
| 2665 | ||
| 2615 | 2666 | LLVMValueRef unsigned_val; |
| 2616 | 2667 | if (bigint->digit_count == 1) { |
| 2617 | 2668 | unsigned_val = LLVMConstInt(type_ref, bigint_ptr(bigint)[0], false); |
| ... | ... | @@ -2626,21 +2677,29 @@ static LLVMValueRef bigint_to_llvm_const(LLVMTypeRef type_ref, BigInt *bigint) { |
| 2626 | 2677 | } |
| 2627 | 2678 | |
| 2628 | 2679 | static LLVMValueRef gen_div(CodeGen *g, bool want_runtime_safety, bool want_fast_math, |
| 2629 | LLVMValueRef val1, LLVMValueRef val2, | |
| 2630 | ZigType *type_entry, DivKind div_kind) | |
| 2680 | LLVMValueRef val1, LLVMValueRef val2, ZigType *operand_type, DivKind div_kind) | |
| 2631 | 2681 | { |
| 2682 | ZigType *scalar_type = (operand_type->id == ZigTypeIdVector) ? | |
| 2683 | operand_type->data.vector.elem_type : operand_type; | |
| 2684 | ||
| 2632 | 2685 | ZigLLVMSetFastMath(g->builder, want_fast_math); |
| 2633 | 2686 | |
| 2634 | LLVMValueRef zero = LLVMConstNull(get_llvm_type(g, type_entry)); | |
| 2635 | if (want_runtime_safety && (want_fast_math || type_entry->id != ZigTypeIdFloat)) { | |
| 2687 | LLVMValueRef zero = LLVMConstNull(get_llvm_type(g, operand_type)); | |
| 2688 | if (want_runtime_safety && (want_fast_math || scalar_type->id != ZigTypeIdFloat)) { | |
| 2689 | // Safety check: divisor != 0 | |
| 2636 | 2690 | LLVMValueRef is_zero_bit; |
| 2637 | if (type_entry->id == ZigTypeIdInt) { | |
| 2691 | if (scalar_type->id == ZigTypeIdInt) { | |
| 2638 | 2692 | is_zero_bit = LLVMBuildICmp(g->builder, LLVMIntEQ, val2, zero, ""); |
| 2639 | } else if (type_entry->id == ZigTypeIdFloat) { | |
| 2693 | } else if (scalar_type->id == ZigTypeIdFloat) { | |
| 2640 | 2694 | is_zero_bit = LLVMBuildFCmp(g->builder, LLVMRealOEQ, val2, zero, ""); |
| 2641 | 2695 | } else { |
| 2642 | 2696 | zig_unreachable(); |
| 2643 | 2697 | } |
| 2698 | ||
| 2699 | if (operand_type->id == ZigTypeIdVector) { | |
| 2700 | is_zero_bit = scalarize_cmp_result(g, is_zero_bit, ScalarizePredicate::Any); | |
| 2701 | } | |
| 2702 | ||
| 2644 | 2703 | LLVMBasicBlockRef div_zero_fail_block = LLVMAppendBasicBlock(g->cur_fn_val, "DivZeroFail"); |
| 2645 | 2704 | LLVMBasicBlockRef div_zero_ok_block = LLVMAppendBasicBlock(g->cur_fn_val, "DivZeroOk"); |
| 2646 | 2705 | LLVMBuildCondBr(g->builder, is_zero_bit, div_zero_fail_block, div_zero_ok_block); |
| ... | ... | @@ -2650,16 +2709,21 @@ static LLVMValueRef gen_div(CodeGen *g, bool want_runtime_safety, bool want_fast |
| 2650 | 2709 | |
| 2651 | 2710 | LLVMPositionBuilderAtEnd(g->builder, div_zero_ok_block); |
| 2652 | 2711 | |
| 2653 | if (type_entry->id == ZigTypeIdInt && type_entry->data.integral.is_signed) { | |
| 2654 | LLVMValueRef neg_1_value = LLVMConstInt(get_llvm_type(g, type_entry), -1, true); | |
| 2712 | // Safety check: check for overflow (dividend = minInt and divisor = -1) | |
| 2713 | if (scalar_type->id == ZigTypeIdInt && scalar_type->data.integral.is_signed) { | |
| 2714 | LLVMValueRef neg_1_value = LLVMConstAllOnes(get_llvm_type(g, operand_type)); | |
| 2655 | 2715 | BigInt int_min_bi = {0}; |
| 2656 | eval_min_max_value_int(g, type_entry, &int_min_bi, false); | |
| 2657 | LLVMValueRef int_min_value = bigint_to_llvm_const(get_llvm_type(g, type_entry), &int_min_bi); | |
| 2716 | eval_min_max_value_int(g, scalar_type, &int_min_bi, false); | |
| 2717 | LLVMValueRef int_min_value = bigint_to_llvm_const(get_llvm_type(g, operand_type), &int_min_bi); | |
| 2718 | ||
| 2658 | 2719 | LLVMBasicBlockRef overflow_fail_block = LLVMAppendBasicBlock(g->cur_fn_val, "DivOverflowFail"); |
| 2659 | 2720 | LLVMBasicBlockRef overflow_ok_block = LLVMAppendBasicBlock(g->cur_fn_val, "DivOverflowOk"); |
| 2660 | 2721 | LLVMValueRef num_is_int_min = LLVMBuildICmp(g->builder, LLVMIntEQ, val1, int_min_value, ""); |
| 2661 | 2722 | LLVMValueRef den_is_neg_1 = LLVMBuildICmp(g->builder, LLVMIntEQ, val2, neg_1_value, ""); |
| 2662 | 2723 | LLVMValueRef overflow_fail_bit = LLVMBuildAnd(g->builder, num_is_int_min, den_is_neg_1, ""); |
| 2724 | if (operand_type->id == ZigTypeIdVector) { | |
| 2725 | overflow_fail_bit = scalarize_cmp_result(g, overflow_fail_bit, ScalarizePredicate::Any); | |
| 2726 | } | |
| 2663 | 2727 | LLVMBuildCondBr(g->builder, overflow_fail_bit, overflow_fail_block, overflow_ok_block); |
| 2664 | 2728 | |
| 2665 | 2729 | LLVMPositionBuilderAtEnd(g->builder, overflow_fail_block); |
| ... | ... | @@ -2669,18 +2733,22 @@ static LLVMValueRef gen_div(CodeGen *g, bool want_runtime_safety, bool want_fast |
| 2669 | 2733 | } |
| 2670 | 2734 | } |
| 2671 | 2735 | |
| 2672 | if (type_entry->id == ZigTypeIdFloat) { | |
| 2736 | if (scalar_type->id == ZigTypeIdFloat) { | |
| 2673 | 2737 | LLVMValueRef result = LLVMBuildFDiv(g->builder, val1, val2, ""); |
| 2674 | 2738 | switch (div_kind) { |
| 2675 | 2739 | case DivKindFloat: |
| 2676 | 2740 | return result; |
| 2677 | 2741 | case DivKindExact: |
| 2678 | 2742 | if (want_runtime_safety) { |
| 2679 | LLVMValueRef floored = gen_float_op(g, result, type_entry, BuiltinFnIdFloor); | |
| 2743 | // Safety check: a / b == floor(a / b) | |
| 2744 | LLVMValueRef floored = gen_float_op(g, result, operand_type, BuiltinFnIdFloor); | |
| 2745 | ||
| 2680 | 2746 | LLVMBasicBlockRef ok_block = LLVMAppendBasicBlock(g->cur_fn_val, "DivExactOk"); |
| 2681 | 2747 | LLVMBasicBlockRef fail_block = LLVMAppendBasicBlock(g->cur_fn_val, "DivExactFail"); |
| 2682 | 2748 | LLVMValueRef ok_bit = LLVMBuildFCmp(g->builder, LLVMRealOEQ, floored, result, ""); |
| 2683 | ||
| 2749 | if (operand_type->id == ZigTypeIdVector) { | |
| 2750 | ok_bit = scalarize_cmp_result(g, ok_bit, ScalarizePredicate::All); | |
| 2751 | } | |
| 2684 | 2752 | LLVMBuildCondBr(g->builder, ok_bit, ok_block, fail_block); |
| 2685 | 2753 | |
| 2686 | 2754 | LLVMPositionBuilderAtEnd(g->builder, fail_block); |
| ... | ... | @@ -2695,54 +2763,61 @@ static LLVMValueRef gen_div(CodeGen *g, bool want_runtime_safety, bool want_fast |
| 2695 | 2763 | LLVMBasicBlockRef gez_block = LLVMAppendBasicBlock(g->cur_fn_val, "DivTruncGEZero"); |
| 2696 | 2764 | LLVMBasicBlockRef end_block = LLVMAppendBasicBlock(g->cur_fn_val, "DivTruncEnd"); |
| 2697 | 2765 | LLVMValueRef ltz = LLVMBuildFCmp(g->builder, LLVMRealOLT, val1, zero, ""); |
| 2766 | if (operand_type->id == ZigTypeIdVector) { | |
| 2767 | ltz = scalarize_cmp_result(g, ltz, ScalarizePredicate::Any); | |
| 2768 | } | |
| 2698 | 2769 | LLVMBuildCondBr(g->builder, ltz, ltz_block, gez_block); |
| 2699 | 2770 | |
| 2700 | 2771 | LLVMPositionBuilderAtEnd(g->builder, ltz_block); |
| 2701 | LLVMValueRef ceiled = gen_float_op(g, result, type_entry, BuiltinFnIdCeil); | |
| 2772 | LLVMValueRef ceiled = gen_float_op(g, result, operand_type, BuiltinFnIdCeil); | |
| 2702 | 2773 | LLVMBasicBlockRef ceiled_end_block = LLVMGetInsertBlock(g->builder); |
| 2703 | 2774 | LLVMBuildBr(g->builder, end_block); |
| 2704 | 2775 | |
| 2705 | 2776 | LLVMPositionBuilderAtEnd(g->builder, gez_block); |
| 2706 | LLVMValueRef floored = gen_float_op(g, result, type_entry, BuiltinFnIdFloor); | |
| 2777 | LLVMValueRef floored = gen_float_op(g, result, operand_type, BuiltinFnIdFloor); | |
| 2707 | 2778 | LLVMBasicBlockRef floored_end_block = LLVMGetInsertBlock(g->builder); |
| 2708 | 2779 | LLVMBuildBr(g->builder, end_block); |
| 2709 | 2780 | |
| 2710 | 2781 | LLVMPositionBuilderAtEnd(g->builder, end_block); |
| 2711 | LLVMValueRef phi = LLVMBuildPhi(g->builder, get_llvm_type(g, type_entry), ""); | |
| 2782 | LLVMValueRef phi = LLVMBuildPhi(g->builder, get_llvm_type(g, operand_type), ""); | |
| 2712 | 2783 | LLVMValueRef incoming_values[] = { ceiled, floored }; |
| 2713 | 2784 | LLVMBasicBlockRef incoming_blocks[] = { ceiled_end_block, floored_end_block }; |
| 2714 | 2785 | LLVMAddIncoming(phi, incoming_values, incoming_blocks, 2); |
| 2715 | 2786 | return phi; |
| 2716 | 2787 | } |
| 2717 | 2788 | case DivKindFloor: |
| 2718 | return gen_float_op(g, result, type_entry, BuiltinFnIdFloor); | |
| 2789 | return gen_float_op(g, result, operand_type, BuiltinFnIdFloor); | |
| 2719 | 2790 | } |
| 2720 | 2791 | zig_unreachable(); |
| 2721 | 2792 | } |
| 2722 | 2793 | |
| 2723 | assert(type_entry->id == ZigTypeIdInt); | |
| 2794 | assert(scalar_type->id == ZigTypeIdInt); | |
| 2724 | 2795 | |
| 2725 | 2796 | switch (div_kind) { |
| 2726 | 2797 | case DivKindFloat: |
| 2727 | 2798 | zig_unreachable(); |
| 2728 | 2799 | case DivKindTrunc: |
| 2729 | if (type_entry->data.integral.is_signed) { | |
| 2800 | if (scalar_type->data.integral.is_signed) { | |
| 2730 | 2801 | return LLVMBuildSDiv(g->builder, val1, val2, ""); |
| 2731 | 2802 | } else { |
| 2732 | 2803 | return LLVMBuildUDiv(g->builder, val1, val2, ""); |
| 2733 | 2804 | } |
| 2734 | 2805 | case DivKindExact: |
| 2735 | 2806 | if (want_runtime_safety) { |
| 2807 | // Safety check: a % b == 0 | |
| 2736 | 2808 | LLVMValueRef remainder_val; |
| 2737 | if (type_entry->data.integral.is_signed) { | |
| 2809 | if (scalar_type->data.integral.is_signed) { | |
| 2738 | 2810 | remainder_val = LLVMBuildSRem(g->builder, val1, val2, ""); |
| 2739 | 2811 | } else { |
| 2740 | 2812 | remainder_val = LLVMBuildURem(g->builder, val1, val2, ""); |
| 2741 | 2813 | } |
| 2742 | LLVMValueRef ok_bit = LLVMBuildICmp(g->builder, LLVMIntEQ, remainder_val, zero, ""); | |
| 2743 | 2814 | |
| 2744 | 2815 | LLVMBasicBlockRef ok_block = LLVMAppendBasicBlock(g->cur_fn_val, "DivExactOk"); |
| 2745 | 2816 | LLVMBasicBlockRef fail_block = LLVMAppendBasicBlock(g->cur_fn_val, "DivExactFail"); |
| 2817 | LLVMValueRef ok_bit = LLVMBuildICmp(g->builder, LLVMIntEQ, remainder_val, zero, ""); | |
| 2818 | if (operand_type->id == ZigTypeIdVector) { | |
| 2819 | ok_bit = scalarize_cmp_result(g, ok_bit, ScalarizePredicate::All); | |
| 2820 | } | |
| 2746 | 2821 | LLVMBuildCondBr(g->builder, ok_bit, ok_block, fail_block); |
| 2747 | 2822 | |
| 2748 | 2823 | LLVMPositionBuilderAtEnd(g->builder, fail_block); |
| ... | ... | @@ -2750,14 +2825,14 @@ static LLVMValueRef gen_div(CodeGen *g, bool want_runtime_safety, bool want_fast |
| 2750 | 2825 | |
| 2751 | 2826 | LLVMPositionBuilderAtEnd(g->builder, ok_block); |
| 2752 | 2827 | } |
| 2753 | if (type_entry->data.integral.is_signed) { | |
| 2828 | if (scalar_type->data.integral.is_signed) { | |
| 2754 | 2829 | return LLVMBuildExactSDiv(g->builder, val1, val2, ""); |
| 2755 | 2830 | } else { |
| 2756 | 2831 | return LLVMBuildExactUDiv(g->builder, val1, val2, ""); |
| 2757 | 2832 | } |
| 2758 | 2833 | case DivKindFloor: |
| 2759 | 2834 | { |
| 2760 | if (!type_entry->data.integral.is_signed) { | |
| 2835 | if (!scalar_type->data.integral.is_signed) { | |
| 2761 | 2836 | return LLVMBuildUDiv(g->builder, val1, val2, ""); |
| 2762 | 2837 | } |
| 2763 | 2838 | // const d = @divTrunc(a, b); |
| ... | ... | @@ -2784,22 +2859,30 @@ enum RemKind { |
| 2784 | 2859 | }; |
| 2785 | 2860 | |
| 2786 | 2861 | static LLVMValueRef gen_rem(CodeGen *g, bool want_runtime_safety, bool want_fast_math, |
| 2787 | LLVMValueRef val1, LLVMValueRef val2, | |
| 2788 | ZigType *type_entry, RemKind rem_kind) | |
| 2862 | LLVMValueRef val1, LLVMValueRef val2, ZigType *operand_type, RemKind rem_kind) | |
| 2789 | 2863 | { |
| 2864 | ZigType *scalar_type = (operand_type->id == ZigTypeIdVector) ? | |
| 2865 | operand_type->data.vector.elem_type : operand_type; | |
| 2866 | ||
| 2790 | 2867 | ZigLLVMSetFastMath(g->builder, want_fast_math); |
| 2791 | 2868 | |
| 2792 | LLVMValueRef zero = LLVMConstNull(get_llvm_type(g, type_entry)); | |
| 2869 | LLVMValueRef zero = LLVMConstNull(get_llvm_type(g, operand_type)); | |
| 2793 | 2870 | if (want_runtime_safety) { |
| 2871 | // Safety check: divisor != 0 | |
| 2794 | 2872 | LLVMValueRef is_zero_bit; |
| 2795 | if (type_entry->id == ZigTypeIdInt) { | |
| 2796 | LLVMIntPredicate pred = type_entry->data.integral.is_signed ? LLVMIntSLE : LLVMIntEQ; | |
| 2873 | if (scalar_type->id == ZigTypeIdInt) { | |
| 2874 | LLVMIntPredicate pred = scalar_type->data.integral.is_signed ? LLVMIntSLE : LLVMIntEQ; | |
| 2797 | 2875 | is_zero_bit = LLVMBuildICmp(g->builder, pred, val2, zero, ""); |
| 2798 | } else if (type_entry->id == ZigTypeIdFloat) { | |
| 2876 | } else if (scalar_type->id == ZigTypeIdFloat) { | |
| 2799 | 2877 | is_zero_bit = LLVMBuildFCmp(g->builder, LLVMRealOEQ, val2, zero, ""); |
| 2800 | 2878 | } else { |
| 2801 | 2879 | zig_unreachable(); |
| 2802 | 2880 | } |
| 2881 | ||
| 2882 | if (operand_type->id == ZigTypeIdVector) { | |
| 2883 | is_zero_bit = scalarize_cmp_result(g, is_zero_bit, ScalarizePredicate::Any); | |
| 2884 | } | |
| 2885 | ||
| 2803 | 2886 | LLVMBasicBlockRef rem_zero_ok_block = LLVMAppendBasicBlock(g->cur_fn_val, "RemZeroOk"); |
| 2804 | 2887 | LLVMBasicBlockRef rem_zero_fail_block = LLVMAppendBasicBlock(g->cur_fn_val, "RemZeroFail"); |
| 2805 | 2888 | LLVMBuildCondBr(g->builder, is_zero_bit, rem_zero_fail_block, rem_zero_ok_block); |
| ... | ... | @@ -2810,7 +2893,7 @@ static LLVMValueRef gen_rem(CodeGen *g, bool want_runtime_safety, bool want_fast |
| 2810 | 2893 | LLVMPositionBuilderAtEnd(g->builder, rem_zero_ok_block); |
| 2811 | 2894 | } |
| 2812 | 2895 | |
| 2813 | if (type_entry->id == ZigTypeIdFloat) { | |
| 2896 | if (scalar_type->id == ZigTypeIdFloat) { | |
| 2814 | 2897 | if (rem_kind == RemKindRem) { |
| 2815 | 2898 | return LLVMBuildFRem(g->builder, val1, val2, ""); |
| 2816 | 2899 | } else { |
| ... | ... | @@ -2821,8 +2904,8 @@ static LLVMValueRef gen_rem(CodeGen *g, bool want_runtime_safety, bool want_fast |
| 2821 | 2904 | return LLVMBuildSelect(g->builder, ltz, c, a, ""); |
| 2822 | 2905 | } |
| 2823 | 2906 | } else { |
| 2824 | assert(type_entry->id == ZigTypeIdInt); | |
| 2825 | if (type_entry->data.integral.is_signed) { | |
| 2907 | assert(scalar_type->id == ZigTypeIdInt); | |
| 2908 | if (scalar_type->data.integral.is_signed) { | |
| 2826 | 2909 | if (rem_kind == RemKindRem) { |
| 2827 | 2910 | return LLVMBuildSRem(g->builder, val1, val2, ""); |
| 2828 | 2911 | } else { |
| ... | ... | @@ -2845,11 +2928,17 @@ static void gen_shift_rhs_check(CodeGen *g, ZigType *lhs_type, ZigType *rhs_type |
| 2845 | 2928 | // otherwise the check is useful as the allowed values are limited by the |
| 2846 | 2929 | // operand type itself |
| 2847 | 2930 | if (!is_power_of_2(lhs_type->data.integral.bit_count)) { |
| 2848 | LLVMValueRef bit_count_value = LLVMConstInt(get_llvm_type(g, rhs_type), | |
| 2849 | lhs_type->data.integral.bit_count, false); | |
| 2850 | LLVMValueRef less_than_bit = LLVMBuildICmp(g->builder, LLVMIntULT, value, bit_count_value, ""); | |
| 2931 | BigInt bit_count_bi = {0}; | |
| 2932 | bigint_init_unsigned(&bit_count_bi, lhs_type->data.integral.bit_count); | |
| 2933 | LLVMValueRef bit_count_value = bigint_to_llvm_const(get_llvm_type(g, rhs_type), | |
| 2934 | &bit_count_bi); | |
| 2935 | ||
| 2851 | 2936 | LLVMBasicBlockRef fail_block = LLVMAppendBasicBlock(g->cur_fn_val, "CheckFail"); |
| 2852 | 2937 | LLVMBasicBlockRef ok_block = LLVMAppendBasicBlock(g->cur_fn_val, "CheckOk"); |
| 2938 | LLVMValueRef less_than_bit = LLVMBuildICmp(g->builder, LLVMIntULT, value, bit_count_value, ""); | |
| 2939 | if (rhs_type->id == ZigTypeIdVector) { | |
| 2940 | less_than_bit = scalarize_cmp_result(g, less_than_bit, ScalarizePredicate::Any); | |
| 2941 | } | |
| 2853 | 2942 | LLVMBuildCondBr(g->builder, less_than_bit, ok_block, fail_block); |
| 2854 | 2943 | |
| 2855 | 2944 | LLVMPositionBuilderAtEnd(g->builder, fail_block); |
| ... | ... | @@ -2966,7 +3055,8 @@ static LLVMValueRef ir_render_bin_op(CodeGen *g, IrExecutableGen *executable, |
| 2966 | 3055 | case IrBinOpBitShiftLeftExact: |
| 2967 | 3056 | { |
| 2968 | 3057 | assert(scalar_type->id == ZigTypeIdInt); |
| 2969 | LLVMValueRef op2_casted = gen_widen_or_shorten(g, false, op2->value->type, scalar_type, op2_value); | |
| 3058 | LLVMValueRef op2_casted = LLVMBuildZExt(g->builder, op2_value, | |
| 3059 | LLVMTypeOf(op1_value), ""); | |
| 2970 | 3060 | |
| 2971 | 3061 | if (want_runtime_safety) { |
| 2972 | 3062 | gen_shift_rhs_check(g, scalar_type, op2->value->type, op2_value); |
| ... | ... | @@ -2976,7 +3066,7 @@ static LLVMValueRef ir_render_bin_op(CodeGen *g, IrExecutableGen *executable, |
| 2976 | 3066 | if (is_sloppy) { |
| 2977 | 3067 | return LLVMBuildShl(g->builder, op1_value, op2_casted, ""); |
| 2978 | 3068 | } else if (want_runtime_safety) { |
| 2979 | return gen_overflow_shl_op(g, scalar_type, op1_value, op2_casted); | |
| 3069 | return gen_overflow_shl_op(g, operand_type, op1_value, op2_casted); | |
| 2980 | 3070 | } else if (scalar_type->data.integral.is_signed) { |
| 2981 | 3071 | return ZigLLVMBuildNSWShl(g->builder, op1_value, op2_casted, ""); |
| 2982 | 3072 | } else { |
| ... | ... | @@ -2987,7 +3077,8 @@ static LLVMValueRef ir_render_bin_op(CodeGen *g, IrExecutableGen *executable, |
| 2987 | 3077 | case IrBinOpBitShiftRightExact: |
| 2988 | 3078 | { |
| 2989 | 3079 | assert(scalar_type->id == ZigTypeIdInt); |
| 2990 | LLVMValueRef op2_casted = gen_widen_or_shorten(g, false, op2->value->type, scalar_type, op2_value); | |
| 3080 | LLVMValueRef op2_casted = LLVMBuildZExt(g->builder, op2_value, | |
| 3081 | LLVMTypeOf(op1_value), ""); | |
| 2991 | 3082 | |
| 2992 | 3083 | if (want_runtime_safety) { |
| 2993 | 3084 | gen_shift_rhs_check(g, scalar_type, op2->value->type, op2_value); |
| ... | ... | @@ -3001,7 +3092,7 @@ static LLVMValueRef ir_render_bin_op(CodeGen *g, IrExecutableGen *executable, |
| 3001 | 3092 | return LLVMBuildLShr(g->builder, op1_value, op2_casted, ""); |
| 3002 | 3093 | } |
| 3003 | 3094 | } else if (want_runtime_safety) { |
| 3004 | return gen_overflow_shr_op(g, scalar_type, op1_value, op2_casted); | |
| 3095 | return gen_overflow_shr_op(g, operand_type, op1_value, op2_casted); | |
| 3005 | 3096 | } else if (scalar_type->data.integral.is_signed) { |
| 3006 | 3097 | return ZigLLVMBuildAShrExact(g->builder, op1_value, op2_casted, ""); |
| 3007 | 3098 | } else { |
| ... | ... | @@ -3010,22 +3101,22 @@ static LLVMValueRef ir_render_bin_op(CodeGen *g, IrExecutableGen *executable, |
| 3010 | 3101 | } |
| 3011 | 3102 | case IrBinOpDivUnspecified: |
| 3012 | 3103 | return gen_div(g, want_runtime_safety, ir_want_fast_math(g, &bin_op_instruction->base), |
| 3013 | op1_value, op2_value, scalar_type, DivKindFloat); | |
| 3104 | op1_value, op2_value, operand_type, DivKindFloat); | |
| 3014 | 3105 | case IrBinOpDivExact: |
| 3015 | 3106 | return gen_div(g, want_runtime_safety, ir_want_fast_math(g, &bin_op_instruction->base), |
| 3016 | op1_value, op2_value, scalar_type, DivKindExact); | |
| 3107 | op1_value, op2_value, operand_type, DivKindExact); | |
| 3017 | 3108 | case IrBinOpDivTrunc: |
| 3018 | 3109 | return gen_div(g, want_runtime_safety, ir_want_fast_math(g, &bin_op_instruction->base), |
| 3019 | op1_value, op2_value, scalar_type, DivKindTrunc); | |
| 3110 | op1_value, op2_value, operand_type, DivKindTrunc); | |
| 3020 | 3111 | case IrBinOpDivFloor: |
| 3021 | 3112 | return gen_div(g, want_runtime_safety, ir_want_fast_math(g, &bin_op_instruction->base), |
| 3022 | op1_value, op2_value, scalar_type, DivKindFloor); | |
| 3113 | op1_value, op2_value, operand_type, DivKindFloor); | |
| 3023 | 3114 | case IrBinOpRemRem: |
| 3024 | 3115 | return gen_rem(g, want_runtime_safety, ir_want_fast_math(g, &bin_op_instruction->base), |
| 3025 | op1_value, op2_value, scalar_type, RemKindRem); | |
| 3116 | op1_value, op2_value, operand_type, RemKindRem); | |
| 3026 | 3117 | case IrBinOpRemMod: |
| 3027 | 3118 | return gen_rem(g, want_runtime_safety, ir_want_fast_math(g, &bin_op_instruction->base), |
| 3028 | op1_value, op2_value, scalar_type, RemKindMod); | |
| 3119 | op1_value, op2_value, operand_type, RemKindMod); | |
| 3029 | 3120 | } |
| 3030 | 3121 | zig_unreachable(); |
| 3031 | 3122 | } |
| ... | ... | @@ -8940,10 +9031,24 @@ static void init(CodeGen *g) { |
| 8940 | 9031 | fprintf(stderr, "name=%s target_specific_cpu_args=%s\n", buf_ptr(g->root_out_name), target_specific_cpu_args); |
| 8941 | 9032 | fprintf(stderr, "name=%s target_specific_features=%s\n", buf_ptr(g->root_out_name), target_specific_features); |
| 8942 | 9033 | } |
| 9034 | ||
| 9035 | // TODO handle float ABI better- it should depend on the ABI portion of std.Target | |
| 9036 | ZigLLVMABIType float_abi = ZigLLVMABITypeDefault; | |
| 9037 | ||
| 9038 | // TODO a way to override this as part of std.Target ABI? | |
| 9039 | const char *abi_name = nullptr; | |
| 9040 | if (target_is_riscv(g->zig_target)) { | |
| 9041 | // RISC-V Linux defaults to ilp32d/lp64d | |
| 9042 | if (g->zig_target->os == OsLinux) { | |
| 9043 | abi_name = (g->zig_target->arch == ZigLLVM_riscv32) ? "ilp32d" : "lp64d"; | |
| 9044 | } else { | |
| 9045 | abi_name = (g->zig_target->arch == ZigLLVM_riscv32) ? "ilp32" : "lp64"; | |
| 9046 | } | |
| 9047 | } | |
| 8943 | 9048 | |
| 8944 | 9049 | g->target_machine = ZigLLVMCreateTargetMachine(target_ref, buf_ptr(&g->llvm_triple_str), |
| 8945 | 9050 | target_specific_cpu_args, target_specific_features, opt_level, reloc_mode, |
| 8946 | to_llvm_code_model(g), g->function_sections); | |
| 9051 | to_llvm_code_model(g), g->function_sections, float_abi, abi_name); | |
| 8947 | 9052 | |
| 8948 | 9053 | g->target_data_ref = LLVMCreateTargetDataLayout(g->target_machine); |
| 8949 | 9054 | |
| ... | ... | @@ -9043,80 +9148,13 @@ static void detect_libc(CodeGen *g) { |
| 9043 | 9148 | if (g->zig_target->is_native_os) { |
| 9044 | 9149 | g->libc = heap::c_allocator.create<Stage2LibCInstallation>(); |
| 9045 | 9150 | |
| 9046 | // search for native_libc.txt in following dirs: | |
| 9047 | // - LOCAL_CACHE_DIR | |
| 9048 | // - GLOBAL_CACHE_DIR | |
| 9049 | // if not found create at: | |
| 9050 | // - GLOBAL_CACHE_DIR | |
| 9051 | // be mindful local/global caches may be the same dir | |
| 9052 | ||
| 9053 | Buf basename = BUF_INIT; | |
| 9054 | buf_init_from_str(&basename, "native_libc.txt"); | |
| 9055 | ||
| 9056 | Buf local_libc_txt = BUF_INIT; | |
| 9057 | os_path_join(g->cache_dir, &basename, &local_libc_txt); | |
| 9058 | ||
| 9059 | Buf global_libc_txt = BUF_INIT; | |
| 9060 | os_path_join(get_global_cache_dir(), &basename, &global_libc_txt); | |
| 9061 | ||
| 9062 | Buf *pathnames[3] = { nullptr }; | |
| 9063 | size_t pathnames_idx = 0; | |
| 9064 | ||
| 9065 | pathnames[pathnames_idx] = &local_libc_txt; | |
| 9066 | pathnames_idx += 1; | |
| 9067 | ||
| 9068 | if (!buf_eql_buf(pathnames[0], &global_libc_txt)) { | |
| 9069 | pathnames[pathnames_idx] = &global_libc_txt; | |
| 9070 | pathnames_idx += 1; | |
| 9071 | } | |
| 9072 | ||
| 9073 | Buf* libc_txt = nullptr; | |
| 9074 | for (auto name : pathnames) { | |
| 9075 | if (name == nullptr) | |
| 9076 | break; | |
| 9077 | ||
| 9078 | bool result; | |
| 9079 | if (os_file_exists(name, &result) != ErrorNone || !result) | |
| 9080 | continue; | |
| 9081 | ||
| 9082 | libc_txt = name; | |
| 9083 | break; | |
| 9151 | if ((err = stage2_libc_find_native(g->libc))) { | |
| 9152 | fprintf(stderr, | |
| 9153 | "Unable to link against libc: Unable to find libc installation: %s\n" | |
| 9154 | "See `zig libc --help` for more details.\n", err_str(err)); | |
| 9155 | exit(1); | |
| 9084 | 9156 | } |
| 9085 | 9157 | |
| 9086 | if (libc_txt == nullptr) | |
| 9087 | libc_txt = &global_libc_txt; | |
| 9088 | ||
| 9089 | if ((err = stage2_libc_parse(g->libc, buf_ptr(libc_txt)))) { | |
| 9090 | if ((err = stage2_libc_find_native(g->libc))) { | |
| 9091 | fprintf(stderr, | |
| 9092 | "Unable to link against libc: Unable to find libc installation: %s\n" | |
| 9093 | "See `zig libc --help` for more details.\n", err_str(err)); | |
| 9094 | exit(1); | |
| 9095 | } | |
| 9096 | Buf libc_txt_dir = BUF_INIT; | |
| 9097 | os_path_dirname(libc_txt, &libc_txt_dir); | |
| 9098 | buf_deinit(&libc_txt_dir); | |
| 9099 | if ((err = os_make_path(&libc_txt_dir))) { | |
| 9100 | fprintf(stderr, "Unable to create %s directory: %s\n", | |
| 9101 | buf_ptr(g->cache_dir), err_str(err)); | |
| 9102 | exit(1); | |
| 9103 | } | |
| 9104 | Buf *native_libc_tmp = buf_sprintf("%s.tmp", buf_ptr(libc_txt)); | |
| 9105 | FILE *file = fopen(buf_ptr(native_libc_tmp), "wb"); | |
| 9106 | if (file == nullptr) { | |
| 9107 | fprintf(stderr, "Unable to open %s: %s\n", buf_ptr(native_libc_tmp), strerror(errno)); | |
| 9108 | exit(1); | |
| 9109 | } | |
| 9110 | stage2_libc_render(g->libc, file); | |
| 9111 | if (fclose(file) != 0) { | |
| 9112 | fprintf(stderr, "Unable to save %s: %s\n", buf_ptr(native_libc_tmp), strerror(errno)); | |
| 9113 | exit(1); | |
| 9114 | } | |
| 9115 | if ((err = os_rename(native_libc_tmp, libc_txt))) { | |
| 9116 | fprintf(stderr, "Unable to create %s: %s\n", buf_ptr(libc_txt), err_str(err)); | |
| 9117 | exit(1); | |
| 9118 | } | |
| 9119 | } | |
| 9120 | 9158 | bool want_sys_dir = !mem_eql_mem(g->libc->include_dir, g->libc->include_dir_len, |
| 9121 | 9159 | g->libc->sys_include_dir, g->libc->sys_include_dir_len); |
| 9122 | 9160 | size_t want_um_and_shared_dirs = (g->zig_target->os == OsWindows) ? 2 : 0; |
| ... | ... | @@ -9150,10 +9188,6 @@ static void detect_libc(CodeGen *g) { |
| 9150 | 9188 | g->libc_include_dir_len += 1; |
| 9151 | 9189 | } |
| 9152 | 9190 | assert(g->libc_include_dir_len == dir_count); |
| 9153 | ||
| 9154 | buf_deinit(&global_libc_txt); | |
| 9155 | buf_deinit(&local_libc_txt); | |
| 9156 | buf_deinit(&basename); | |
| 9157 | 9191 | } else if ((g->out_type == OutTypeExe || (g->out_type == OutTypeLib && g->is_dynamic)) && |
| 9158 | 9192 | !target_os_is_darwin(g->zig_target->os)) |
| 9159 | 9193 | { |
| ... | ... | @@ -10563,6 +10597,7 @@ static Error check_cache(CodeGen *g, Buf *manifest_dir, Buf *digest) { |
| 10563 | 10597 | cache_int(ch, g->linker_allow_shlib_undefined); |
| 10564 | 10598 | cache_bool(ch, g->linker_z_nodelete); |
| 10565 | 10599 | cache_bool(ch, g->linker_z_defs); |
| 10600 | cache_usize(ch, g->stack_size_override); | |
| 10566 | 10601 | |
| 10567 | 10602 | // gen_c_objects appends objects to g->link_objects which we want to include in the hash |
| 10568 | 10603 | gen_c_objects(g); |
src/error.cpp+1| ... | ... | @@ -85,6 +85,7 @@ const char *err_str(Error err) { |
| 85 | 85 | case ErrorInvalidOperatingSystemVersion: return "invalid operating system version"; |
| 86 | 86 | case ErrorUnknownClangOption: return "unknown Clang option"; |
| 87 | 87 | case ErrorNestedResponseFile: return "nested response file"; |
| 88 | case ErrorZigIsTheCCompiler: return "Zig was not provided with libc installation information, and so it does not know where the libc paths are on the system. Zig attempted to use the system C compiler to find out where the libc paths are, but discovered that Zig is being used as the system C compiler."; | |
| 88 | 89 | case ErrorFileBusy: return "file is busy"; |
| 89 | 90 | case ErrorLocked: return "file is locked by another process"; |
| 90 | 91 | } |
src/glibc.cpp+1| ... | ... | @@ -17,6 +17,7 @@ static const ZigGLibCLib glibc_libs[] = { |
| 17 | 17 | {"dl", 2}, |
| 18 | 18 | {"rt", 1}, |
| 19 | 19 | {"ld", 2}, |
| 20 | {"util", 1}, | |
| 20 | 21 | }; |
| 21 | 22 | |
| 22 | 23 | Error glibc_load_metadata(ZigGLibCAbi **out_result, Buf *zig_lib_dir, bool verbose) { |
src/ir.cpp+547-205| ... | ... | @@ -283,6 +283,8 @@ static IrInstGen *ir_analyze_union_init(IrAnalyze *ira, IrInst* source_instructi |
| 283 | 283 | IrInstGen *result_loc); |
| 284 | 284 | static IrInstGen *ir_analyze_struct_value_field_value(IrAnalyze *ira, IrInst* source_instr, |
| 285 | 285 | IrInstGen *struct_operand, TypeStructField *field); |
| 286 | static bool value_cmp_numeric_val_any(ZigValue *left, Cmp predicate, ZigValue *right); | |
| 287 | static bool value_cmp_numeric_val_all(ZigValue *left, Cmp predicate, ZigValue *right); | |
| 286 | 288 | |
| 287 | 289 | static void destroy_instruction_src(IrInstSrc *inst) { |
| 288 | 290 | switch (inst->id) { |
| ... | ... | @@ -10993,48 +10995,77 @@ static void float_negate(ZigValue *out_val, ZigValue *op) { |
| 10993 | 10995 | } |
| 10994 | 10996 | |
| 10995 | 10997 | void float_write_ieee597(ZigValue *op, uint8_t *buf, bool is_big_endian) { |
| 10996 | if (op->type->id == ZigTypeIdFloat) { | |
| 10997 | switch (op->type->data.floating.bit_count) { | |
| 10998 | case 16: | |
| 10999 | memcpy(buf, &op->data.x_f16, 2); // TODO wrong when compiler is big endian | |
| 11000 | return; | |
| 11001 | case 32: | |
| 11002 | memcpy(buf, &op->data.x_f32, 4); // TODO wrong when compiler is big endian | |
| 11003 | return; | |
| 11004 | case 64: | |
| 11005 | memcpy(buf, &op->data.x_f64, 8); // TODO wrong when compiler is big endian | |
| 11006 | return; | |
| 11007 | case 128: | |
| 11008 | memcpy(buf, &op->data.x_f128, 16); // TODO wrong when compiler is big endian | |
| 11009 | return; | |
| 11010 | default: | |
| 11011 | zig_unreachable(); | |
| 11012 | } | |
| 11013 | } else { | |
| 10998 | if (op->type->id != ZigTypeIdFloat) | |
| 11014 | 10999 | zig_unreachable(); |
| 11000 | ||
| 11001 | const unsigned n = op->type->data.floating.bit_count / 8; | |
| 11002 | assert(n <= 16); | |
| 11003 | ||
| 11004 | switch (op->type->data.floating.bit_count) { | |
| 11005 | case 16: | |
| 11006 | memcpy(buf, &op->data.x_f16, 2); | |
| 11007 | break; | |
| 11008 | case 32: | |
| 11009 | memcpy(buf, &op->data.x_f32, 4); | |
| 11010 | break; | |
| 11011 | case 64: | |
| 11012 | memcpy(buf, &op->data.x_f64, 8); | |
| 11013 | break; | |
| 11014 | case 128: | |
| 11015 | memcpy(buf, &op->data.x_f128, 16); | |
| 11016 | break; | |
| 11017 | default: | |
| 11018 | zig_unreachable(); | |
| 11019 | } | |
| 11020 | ||
| 11021 | if (is_big_endian) { | |
| 11022 | // Byteswap in place if needed | |
| 11023 | for (size_t i = 0; i < n / 2; i++) { | |
| 11024 | uint8_t u = buf[i]; | |
| 11025 | buf[i] = buf[n - 1 - i]; | |
| 11026 | buf[n - 1 - i] = u; | |
| 11027 | } | |
| 11015 | 11028 | } |
| 11016 | 11029 | } |
| 11017 | 11030 | |
| 11018 | 11031 | void float_read_ieee597(ZigValue *val, uint8_t *buf, bool is_big_endian) { |
| 11019 | if (val->type->id == ZigTypeIdFloat) { | |
| 11020 | switch (val->type->data.floating.bit_count) { | |
| 11021 | case 16: | |
| 11022 | memcpy(&val->data.x_f16, buf, 2); // TODO wrong when compiler is big endian | |
| 11023 | return; | |
| 11024 | case 32: | |
| 11025 | memcpy(&val->data.x_f32, buf, 4); // TODO wrong when compiler is big endian | |
| 11026 | return; | |
| 11027 | case 64: | |
| 11028 | memcpy(&val->data.x_f64, buf, 8); // TODO wrong when compiler is big endian | |
| 11029 | return; | |
| 11030 | case 128: | |
| 11031 | memcpy(&val->data.x_f128, buf, 16); // TODO wrong when compiler is big endian | |
| 11032 | return; | |
| 11033 | default: | |
| 11034 | zig_unreachable(); | |
| 11035 | } | |
| 11036 | } else { | |
| 11032 | if (val->type->id != ZigTypeIdFloat) | |
| 11037 | 11033 | zig_unreachable(); |
| 11034 | ||
| 11035 | const unsigned n = val->type->data.floating.bit_count / 8; | |
| 11036 | assert(n <= 16); | |
| 11037 | ||
| 11038 | uint8_t tmp[16]; | |
| 11039 | uint8_t *ptr = buf; | |
| 11040 | ||
| 11041 | if (is_big_endian) { | |
| 11042 | memcpy(tmp, buf, n); | |
| 11043 | ||
| 11044 | // Byteswap if needed | |
| 11045 | for (size_t i = 0; i < n / 2; i++) { | |
| 11046 | uint8_t u = tmp[i]; | |
| 11047 | tmp[i] = tmp[n - 1 - i]; | |
| 11048 | tmp[n - 1 - i] = u; | |
| 11049 | } | |
| 11050 | ||
| 11051 | ptr = tmp; | |
| 11052 | } | |
| 11053 | ||
| 11054 | switch (val->type->data.floating.bit_count) { | |
| 11055 | case 16: | |
| 11056 | memcpy(&val->data.x_f16, ptr, 2); | |
| 11057 | return; | |
| 11058 | case 32: | |
| 11059 | memcpy(&val->data.x_f32, ptr, 4); | |
| 11060 | return; | |
| 11061 | case 64: | |
| 11062 | memcpy(&val->data.x_f64, ptr, 8); | |
| 11063 | return; | |
| 11064 | case 128: | |
| 11065 | memcpy(&val->data.x_f128, ptr, 16); | |
| 11066 | return; | |
| 11067 | default: | |
| 11068 | zig_unreachable(); | |
| 11038 | 11069 | } |
| 11039 | 11070 | } |
| 11040 | 11071 | |
| ... | ... | @@ -16774,7 +16805,6 @@ static IrInstGen *ir_analyze_math_op(IrAnalyze *ira, IrInst* source_instr, |
| 16774 | 16805 | ZigValue *scalar_op2_val = &op2_val->data.x_array.data.s_none.elements[i]; |
| 16775 | 16806 | ZigValue *scalar_out_val = &out_val->data.x_array.data.s_none.elements[i]; |
| 16776 | 16807 | assert(scalar_op1_val->type == scalar_type); |
| 16777 | assert(scalar_op2_val->type == scalar_type); | |
| 16778 | 16808 | assert(scalar_out_val->type == scalar_type); |
| 16779 | 16809 | ErrorMsg *msg = ir_eval_math_op_scalar(ira, source_instr, scalar_type, |
| 16780 | 16810 | scalar_op1_val, op_id, scalar_op2_val, scalar_out_val); |
| ... | ... | @@ -16799,27 +16829,49 @@ static IrInstGen *ir_analyze_bit_shift(IrAnalyze *ira, IrInstSrcBinOp *bin_op_in |
| 16799 | 16829 | if (type_is_invalid(op1->value->type)) |
| 16800 | 16830 | return ira->codegen->invalid_inst_gen; |
| 16801 | 16831 | |
| 16802 | if (op1->value->type->id != ZigTypeIdInt && op1->value->type->id != ZigTypeIdComptimeInt) { | |
| 16832 | IrInstGen *op2 = bin_op_instruction->op2->child; | |
| 16833 | if (type_is_invalid(op2->value->type)) | |
| 16834 | return ira->codegen->invalid_inst_gen; | |
| 16835 | ||
| 16836 | ZigType *op1_type = op1->value->type; | |
| 16837 | ZigType *op2_type = op2->value->type; | |
| 16838 | ||
| 16839 | if (op1_type->id == ZigTypeIdVector && op2_type->id != ZigTypeIdVector) { | |
| 16803 | 16840 | ir_add_error(ira, &bin_op_instruction->op1->base, |
| 16804 | buf_sprintf("bit shifting operation expected integer type, found '%s'", | |
| 16805 | buf_ptr(&op1->value->type->name))); | |
| 16841 | buf_sprintf("bit shifting operation expected vector type, found '%s'", | |
| 16842 | buf_ptr(&op2_type->name))); | |
| 16806 | 16843 | return ira->codegen->invalid_inst_gen; |
| 16807 | 16844 | } |
| 16808 | 16845 | |
| 16809 | IrInstGen *op2 = bin_op_instruction->op2->child; | |
| 16810 | if (type_is_invalid(op2->value->type)) | |
| 16846 | if (op1_type->id != ZigTypeIdVector && op2_type->id == ZigTypeIdVector) { | |
| 16847 | ir_add_error(ira, &bin_op_instruction->op1->base, | |
| 16848 | buf_sprintf("bit shifting operation expected vector type, found '%s'", | |
| 16849 | buf_ptr(&op1_type->name))); | |
| 16850 | return ira->codegen->invalid_inst_gen; | |
| 16851 | } | |
| 16852 | ||
| 16853 | ZigType *op1_scalar_type = (op1_type->id == ZigTypeIdVector) ? | |
| 16854 | op1_type->data.vector.elem_type : op1_type; | |
| 16855 | ZigType *op2_scalar_type = (op2_type->id == ZigTypeIdVector) ? | |
| 16856 | op2_type->data.vector.elem_type : op2_type; | |
| 16857 | ||
| 16858 | if (op1_scalar_type->id != ZigTypeIdInt && op1_scalar_type->id != ZigTypeIdComptimeInt) { | |
| 16859 | ir_add_error(ira, &bin_op_instruction->op1->base, | |
| 16860 | buf_sprintf("bit shifting operation expected integer type, found '%s'", | |
| 16861 | buf_ptr(&op1_scalar_type->name))); | |
| 16811 | 16862 | return ira->codegen->invalid_inst_gen; |
| 16863 | } | |
| 16812 | 16864 | |
| 16813 | if (op2->value->type->id != ZigTypeIdInt && op2->value->type->id != ZigTypeIdComptimeInt) { | |
| 16865 | if (op2_scalar_type->id != ZigTypeIdInt && op2_scalar_type->id != ZigTypeIdComptimeInt) { | |
| 16814 | 16866 | ir_add_error(ira, &bin_op_instruction->op2->base, |
| 16815 | 16867 | buf_sprintf("shift amount has to be an integer type, but found '%s'", |
| 16816 | buf_ptr(&op2->value->type->name))); | |
| 16868 | buf_ptr(&op2_scalar_type->name))); | |
| 16817 | 16869 | return ira->codegen->invalid_inst_gen; |
| 16818 | 16870 | } |
| 16819 | 16871 | |
| 16820 | 16872 | IrInstGen *casted_op2; |
| 16821 | 16873 | IrBinOp op_id = bin_op_instruction->op_id; |
| 16822 | if (op1->value->type->id == ZigTypeIdComptimeInt) { | |
| 16874 | if (op1_scalar_type->id == ZigTypeIdComptimeInt) { | |
| 16823 | 16875 | // comptime_int has no finite bit width |
| 16824 | 16876 | casted_op2 = op2; |
| 16825 | 16877 | |
| ... | ... | @@ -16845,10 +16897,15 @@ static IrInstGen *ir_analyze_bit_shift(IrAnalyze *ira, IrInstSrcBinOp *bin_op_in |
| 16845 | 16897 | return ira->codegen->invalid_inst_gen; |
| 16846 | 16898 | } |
| 16847 | 16899 | } else { |
| 16848 | const unsigned bit_count = op1->value->type->data.integral.bit_count; | |
| 16900 | const unsigned bit_count = op1_scalar_type->data.integral.bit_count; | |
| 16849 | 16901 | ZigType *shift_amt_type = get_smallest_unsigned_int_type(ira->codegen, |
| 16850 | 16902 | bit_count > 0 ? bit_count - 1 : 0); |
| 16851 | 16903 | |
| 16904 | if (op1_type->id == ZigTypeIdVector) { | |
| 16905 | shift_amt_type = get_vector_type(ira->codegen, op1_type->data.vector.len, | |
| 16906 | shift_amt_type); | |
| 16907 | } | |
| 16908 | ||
| 16852 | 16909 | casted_op2 = ir_implicit_cast(ira, op2, shift_amt_type); |
| 16853 | 16910 | if (type_is_invalid(casted_op2->value->type)) |
| 16854 | 16911 | return ira->codegen->invalid_inst_gen; |
| ... | ... | @@ -16859,10 +16916,10 @@ static IrInstGen *ir_analyze_bit_shift(IrAnalyze *ira, IrInstSrcBinOp *bin_op_in |
| 16859 | 16916 | if (op2_val == nullptr) |
| 16860 | 16917 | return ira->codegen->invalid_inst_gen; |
| 16861 | 16918 | |
| 16862 | BigInt bit_count_value = {0}; | |
| 16863 | bigint_init_unsigned(&bit_count_value, bit_count); | |
| 16919 | ZigValue bit_count_value; | |
| 16920 | init_const_usize(ira->codegen, &bit_count_value, bit_count); | |
| 16864 | 16921 | |
| 16865 | if (bigint_cmp(&op2_val->data.x_bigint, &bit_count_value) != CmpLT) { | |
| 16922 | if (!value_cmp_numeric_val_all(op2_val, CmpLT, &bit_count_value)) { | |
| 16866 | 16923 | ErrorMsg* msg = ir_add_error(ira, |
| 16867 | 16924 | &bin_op_instruction->base.base, |
| 16868 | 16925 | buf_sprintf("RHS of shift is too large for LHS type")); |
| ... | ... | @@ -16881,7 +16938,7 @@ static IrInstGen *ir_analyze_bit_shift(IrAnalyze *ira, IrInstSrcBinOp *bin_op_in |
| 16881 | 16938 | if (op2_val == nullptr) |
| 16882 | 16939 | return ira->codegen->invalid_inst_gen; |
| 16883 | 16940 | |
| 16884 | if (bigint_cmp_zero(&op2_val->data.x_bigint) == CmpEQ) | |
| 16941 | if (value_cmp_numeric_val_all(op2_val, CmpEQ, nullptr)) | |
| 16885 | 16942 | return ir_analyze_cast(ira, &bin_op_instruction->base.base, op1->value->type, op1); |
| 16886 | 16943 | } |
| 16887 | 16944 | |
| ... | ... | @@ -16894,7 +16951,7 @@ static IrInstGen *ir_analyze_bit_shift(IrAnalyze *ira, IrInstSrcBinOp *bin_op_in |
| 16894 | 16951 | if (op2_val == nullptr) |
| 16895 | 16952 | return ira->codegen->invalid_inst_gen; |
| 16896 | 16953 | |
| 16897 | return ir_analyze_math_op(ira, &bin_op_instruction->base.base, op1->value->type, op1_val, op_id, op2_val); | |
| 16954 | return ir_analyze_math_op(ira, &bin_op_instruction->base.base, op1_type, op1_val, op_id, op2_val); | |
| 16898 | 16955 | } |
| 16899 | 16956 | |
| 16900 | 16957 | return ir_build_bin_op_gen(ira, &bin_op_instruction->base.base, op1->value->type, |
| ... | ... | @@ -16914,6 +16971,7 @@ static bool ok_float_op(IrBinOp op) { |
| 16914 | 16971 | case IrBinOpDivExact: |
| 16915 | 16972 | case IrBinOpRemRem: |
| 16916 | 16973 | case IrBinOpRemMod: |
| 16974 | case IrBinOpRemUnspecified: | |
| 16917 | 16975 | return true; |
| 16918 | 16976 | |
| 16919 | 16977 | case IrBinOpBoolOr: |
| ... | ... | @@ -16934,7 +16992,6 @@ static bool ok_float_op(IrBinOp op) { |
| 16934 | 16992 | case IrBinOpAddWrap: |
| 16935 | 16993 | case IrBinOpSubWrap: |
| 16936 | 16994 | case IrBinOpMultWrap: |
| 16937 | case IrBinOpRemUnspecified: | |
| 16938 | 16995 | case IrBinOpArrayCat: |
| 16939 | 16996 | case IrBinOpArrayMult: |
| 16940 | 16997 | return false; |
| ... | ... | @@ -16962,6 +17019,53 @@ static bool is_pointer_arithmetic_allowed(ZigType *lhs_type, IrBinOp op) { |
| 16962 | 17019 | zig_unreachable(); |
| 16963 | 17020 | } |
| 16964 | 17021 | |
| 17022 | static bool value_cmp_numeric_val(ZigValue *left, Cmp predicate, ZigValue *right, bool any) { | |
| 17023 | assert(left->special == ConstValSpecialStatic); | |
| 17024 | assert(right == nullptr || right->special == ConstValSpecialStatic); | |
| 17025 | ||
| 17026 | switch (left->type->id) { | |
| 17027 | case ZigTypeIdComptimeInt: | |
| 17028 | case ZigTypeIdInt: { | |
| 17029 | const Cmp result = right ? | |
| 17030 | bigint_cmp(&left->data.x_bigint, &right->data.x_bigint) : | |
| 17031 | bigint_cmp_zero(&left->data.x_bigint); | |
| 17032 | return result == predicate; | |
| 17033 | } | |
| 17034 | case ZigTypeIdComptimeFloat: | |
| 17035 | case ZigTypeIdFloat: { | |
| 17036 | if (float_is_nan(left)) | |
| 17037 | return false; | |
| 17038 | if (right != nullptr && float_is_nan(right)) | |
| 17039 | return false; | |
| 17040 | ||
| 17041 | const Cmp result = right ? float_cmp(left, right) : float_cmp_zero(left); | |
| 17042 | return result == predicate; | |
| 17043 | } | |
| 17044 | case ZigTypeIdVector: { | |
| 17045 | for (size_t i = 0; i < left->type->data.vector.len; i++) { | |
| 17046 | ZigValue *scalar_val = &left->data.x_array.data.s_none.elements[i]; | |
| 17047 | const bool result = value_cmp_numeric_val(scalar_val, predicate, right, any); | |
| 17048 | ||
| 17049 | if (any && result) | |
| 17050 | return true; // This element satisfies the predicate | |
| 17051 | else if (!any && !result) | |
| 17052 | return false; // This element doesn't satisfy the predicate | |
| 17053 | } | |
| 17054 | return any ? false : true; | |
| 17055 | } | |
| 17056 | default: | |
| 17057 | zig_unreachable(); | |
| 17058 | } | |
| 17059 | } | |
| 17060 | ||
| 17061 | static bool value_cmp_numeric_val_any(ZigValue *left, Cmp predicate, ZigValue *right) { | |
| 17062 | return value_cmp_numeric_val(left, predicate, right, true); | |
| 17063 | } | |
| 17064 | ||
| 17065 | static bool value_cmp_numeric_val_all(ZigValue *left, Cmp predicate, ZigValue *right) { | |
| 17066 | return value_cmp_numeric_val(left, predicate, right, false); | |
| 17067 | } | |
| 17068 | ||
| 16965 | 17069 | static IrInstGen *ir_analyze_bin_op_math(IrAnalyze *ira, IrInstSrcBinOp *instruction) { |
| 16966 | 17070 | Error err; |
| 16967 | 17071 | |
| ... | ... | @@ -17067,127 +17171,13 @@ static IrInstGen *ir_analyze_bin_op_math(IrAnalyze *ira, IrInstSrcBinOp *instruc |
| 17067 | 17171 | if (type_is_invalid(resolved_type)) |
| 17068 | 17172 | return ira->codegen->invalid_inst_gen; |
| 17069 | 17173 | |
| 17070 | bool is_int = resolved_type->id == ZigTypeIdInt || resolved_type->id == ZigTypeIdComptimeInt; | |
| 17071 | bool is_float = resolved_type->id == ZigTypeIdFloat || resolved_type->id == ZigTypeIdComptimeFloat; | |
| 17072 | bool is_signed_div = ( | |
| 17073 | (resolved_type->id == ZigTypeIdInt && resolved_type->data.integral.is_signed) || | |
| 17074 | resolved_type->id == ZigTypeIdFloat || | |
| 17075 | (resolved_type->id == ZigTypeIdComptimeFloat && | |
| 17076 | ((bigfloat_cmp_zero(&op1->value->data.x_bigfloat) != CmpGT) != | |
| 17077 | (bigfloat_cmp_zero(&op2->value->data.x_bigfloat) != CmpGT))) || | |
| 17078 | (resolved_type->id == ZigTypeIdComptimeInt && | |
| 17079 | ((bigint_cmp_zero(&op1->value->data.x_bigint) != CmpGT) != | |
| 17080 | (bigint_cmp_zero(&op2->value->data.x_bigint) != CmpGT))) | |
| 17081 | ); | |
| 17082 | if (op_id == IrBinOpDivUnspecified && is_int) { | |
| 17083 | if (is_signed_div) { | |
| 17084 | bool ok = false; | |
| 17085 | if (instr_is_comptime(op1) && instr_is_comptime(op2)) { | |
| 17086 | ZigValue *op1_val = ir_resolve_const(ira, op1, UndefBad); | |
| 17087 | if (op1_val == nullptr) | |
| 17088 | return ira->codegen->invalid_inst_gen; | |
| 17089 | ||
| 17090 | ZigValue *op2_val = ir_resolve_const(ira, op2, UndefBad); | |
| 17091 | if (op2_val == nullptr) | |
| 17092 | return ira->codegen->invalid_inst_gen; | |
| 17093 | ||
| 17094 | if (bigint_cmp_zero(&op2_val->data.x_bigint) == CmpEQ) { | |
| 17095 | // the division by zero error will be caught later, but we don't have a | |
| 17096 | // division function ambiguity problem. | |
| 17097 | op_id = IrBinOpDivTrunc; | |
| 17098 | ok = true; | |
| 17099 | } else { | |
| 17100 | BigInt trunc_result; | |
| 17101 | BigInt floor_result; | |
| 17102 | bigint_div_trunc(&trunc_result, &op1_val->data.x_bigint, &op2_val->data.x_bigint); | |
| 17103 | bigint_div_floor(&floor_result, &op1_val->data.x_bigint, &op2_val->data.x_bigint); | |
| 17104 | if (bigint_cmp(&trunc_result, &floor_result) == CmpEQ) { | |
| 17105 | ok = true; | |
| 17106 | op_id = IrBinOpDivTrunc; | |
| 17107 | } | |
| 17108 | } | |
| 17109 | } | |
| 17110 | if (!ok) { | |
| 17111 | ir_add_error(ira, &instruction->base.base, | |
| 17112 | buf_sprintf("division with '%s' and '%s': signed integers must use @divTrunc, @divFloor, or @divExact", | |
| 17113 | buf_ptr(&op1->value->type->name), | |
| 17114 | buf_ptr(&op2->value->type->name))); | |
| 17115 | return ira->codegen->invalid_inst_gen; | |
| 17116 | } | |
| 17117 | } else { | |
| 17118 | op_id = IrBinOpDivTrunc; | |
| 17119 | } | |
| 17120 | } else if (op_id == IrBinOpRemUnspecified) { | |
| 17121 | if (is_signed_div && (is_int || is_float)) { | |
| 17122 | bool ok = false; | |
| 17123 | if (instr_is_comptime(op1) && instr_is_comptime(op2)) { | |
| 17124 | ZigValue *op1_val = ir_resolve_const(ira, op1, UndefBad); | |
| 17125 | if (op1_val == nullptr) | |
| 17126 | return ira->codegen->invalid_inst_gen; | |
| 17174 | ZigType *scalar_type = (resolved_type->id == ZigTypeIdVector) ? | |
| 17175 | resolved_type->data.vector.elem_type : resolved_type; | |
| 17127 | 17176 | |
| 17128 | if (is_int) { | |
| 17129 | ZigValue *op2_val = ir_resolve_const(ira, op2, UndefBad); | |
| 17130 | if (op2_val == nullptr) | |
| 17131 | return ira->codegen->invalid_inst_gen; | |
| 17177 | bool is_int = scalar_type->id == ZigTypeIdInt || scalar_type->id == ZigTypeIdComptimeInt; | |
| 17178 | bool is_float = scalar_type->id == ZigTypeIdFloat || scalar_type->id == ZigTypeIdComptimeFloat; | |
| 17132 | 17179 | |
| 17133 | if (bigint_cmp_zero(&op2->value->data.x_bigint) == CmpEQ) { | |
| 17134 | // the division by zero error will be caught later, but we don't | |
| 17135 | // have a remainder function ambiguity problem | |
| 17136 | ok = true; | |
| 17137 | } else { | |
| 17138 | BigInt rem_result; | |
| 17139 | BigInt mod_result; | |
| 17140 | bigint_rem(&rem_result, &op1_val->data.x_bigint, &op2_val->data.x_bigint); | |
| 17141 | bigint_mod(&mod_result, &op1_val->data.x_bigint, &op2_val->data.x_bigint); | |
| 17142 | ok = bigint_cmp(&rem_result, &mod_result) == CmpEQ; | |
| 17143 | } | |
| 17144 | } else { | |
| 17145 | IrInstGen *casted_op2 = ir_implicit_cast(ira, op2, resolved_type); | |
| 17146 | if (type_is_invalid(casted_op2->value->type)) | |
| 17147 | return ira->codegen->invalid_inst_gen; | |
| 17148 | ||
| 17149 | ZigValue *op2_val = ir_resolve_const(ira, casted_op2, UndefBad); | |
| 17150 | if (op2_val == nullptr) | |
| 17151 | return ira->codegen->invalid_inst_gen; | |
| 17152 | ||
| 17153 | if (float_cmp_zero(casted_op2->value) == CmpEQ) { | |
| 17154 | // the division by zero error will be caught later, but we don't | |
| 17155 | // have a remainder function ambiguity problem | |
| 17156 | ok = true; | |
| 17157 | } else { | |
| 17158 | ZigValue rem_result = {}; | |
| 17159 | ZigValue mod_result = {}; | |
| 17160 | float_rem(&rem_result, op1_val, op2_val); | |
| 17161 | float_mod(&mod_result, op1_val, op2_val); | |
| 17162 | ok = float_cmp(&rem_result, &mod_result) == CmpEQ; | |
| 17163 | } | |
| 17164 | } | |
| 17165 | } | |
| 17166 | if (!ok) { | |
| 17167 | ir_add_error(ira, &instruction->base.base, | |
| 17168 | buf_sprintf("remainder division with '%s' and '%s': signed integers and floats must use @rem or @mod", | |
| 17169 | buf_ptr(&op1->value->type->name), | |
| 17170 | buf_ptr(&op2->value->type->name))); | |
| 17171 | return ira->codegen->invalid_inst_gen; | |
| 17172 | } | |
| 17173 | } | |
| 17174 | op_id = IrBinOpRemRem; | |
| 17175 | } | |
| 17176 | ||
| 17177 | bool ok = false; | |
| 17178 | if (is_int) { | |
| 17179 | ok = true; | |
| 17180 | } else if (is_float && ok_float_op(op_id)) { | |
| 17181 | ok = true; | |
| 17182 | } else if (resolved_type->id == ZigTypeIdVector) { | |
| 17183 | ZigType *elem_type = resolved_type->data.vector.elem_type; | |
| 17184 | if (elem_type->id == ZigTypeIdInt || elem_type->id == ZigTypeIdComptimeInt) { | |
| 17185 | ok = true; | |
| 17186 | } else if ((elem_type->id == ZigTypeIdFloat || elem_type->id == ZigTypeIdComptimeFloat) && ok_float_op(op_id)) { | |
| 17187 | ok = true; | |
| 17188 | } | |
| 17189 | } | |
| 17190 | if (!ok) { | |
| 17180 | if (!is_int && !(is_float && ok_float_op(op_id))) { | |
| 17191 | 17181 | AstNode *source_node = instruction->base.base.source_node; |
| 17192 | 17182 | ir_add_error_node(ira, source_node, |
| 17193 | 17183 | buf_sprintf("invalid operands to binary expression: '%s' and '%s'", |
| ... | ... | @@ -17196,7 +17186,16 @@ static IrInstGen *ir_analyze_bin_op_math(IrAnalyze *ira, IrInstSrcBinOp *instruc |
| 17196 | 17186 | return ira->codegen->invalid_inst_gen; |
| 17197 | 17187 | } |
| 17198 | 17188 | |
| 17199 | if (resolved_type->id == ZigTypeIdComptimeInt) { | |
| 17189 | IrInstGen *casted_op1 = ir_implicit_cast(ira, op1, resolved_type); | |
| 17190 | if (type_is_invalid(casted_op1->value->type)) | |
| 17191 | return ira->codegen->invalid_inst_gen; | |
| 17192 | ||
| 17193 | IrInstGen *casted_op2 = ir_implicit_cast(ira, op2, resolved_type); | |
| 17194 | if (type_is_invalid(casted_op2->value->type)) | |
| 17195 | return ira->codegen->invalid_inst_gen; | |
| 17196 | ||
| 17197 | // Comptime integers have no fixed size | |
| 17198 | if (scalar_type->id == ZigTypeIdComptimeInt) { | |
| 17200 | 17199 | if (op_id == IrBinOpAddWrap) { |
| 17201 | 17200 | op_id = IrBinOpAdd; |
| 17202 | 17201 | } else if (op_id == IrBinOpSubWrap) { |
| ... | ... | @@ -17206,25 +17205,131 @@ static IrInstGen *ir_analyze_bin_op_math(IrAnalyze *ira, IrInstSrcBinOp *instruc |
| 17206 | 17205 | } |
| 17207 | 17206 | } |
| 17208 | 17207 | |
| 17209 | IrInstGen *casted_op1 = ir_implicit_cast(ira, op1, resolved_type); | |
| 17210 | if (type_is_invalid(casted_op1->value->type)) | |
| 17211 | return ira->codegen->invalid_inst_gen; | |
| 17212 | ||
| 17213 | IrInstGen *casted_op2 = ir_implicit_cast(ira, op2, resolved_type); | |
| 17214 | if (type_is_invalid(casted_op2->value->type)) | |
| 17215 | return ira->codegen->invalid_inst_gen; | |
| 17216 | ||
| 17217 | 17208 | if (instr_is_comptime(casted_op1) && instr_is_comptime(casted_op2)) { |
| 17218 | 17209 | ZigValue *op1_val = ir_resolve_const(ira, casted_op1, UndefBad); |
| 17219 | 17210 | if (op1_val == nullptr) |
| 17220 | 17211 | return ira->codegen->invalid_inst_gen; |
| 17212 | ||
| 17221 | 17213 | ZigValue *op2_val = ir_resolve_const(ira, casted_op2, UndefBad); |
| 17222 | 17214 | if (op2_val == nullptr) |
| 17223 | 17215 | return ira->codegen->invalid_inst_gen; |
| 17224 | 17216 | |
| 17217 | // Promote division with negative numbers to signed | |
| 17218 | bool is_signed_div = value_cmp_numeric_val_any(op1_val, CmpLT, nullptr) || | |
| 17219 | value_cmp_numeric_val_any(op2_val, CmpLT, nullptr); | |
| 17220 | ||
| 17221 | if (op_id == IrBinOpDivUnspecified && is_int) { | |
| 17222 | // Default to truncating division and check if it's valid for the | |
| 17223 | // given operands if signed | |
| 17224 | op_id = IrBinOpDivTrunc; | |
| 17225 | ||
| 17226 | if (is_signed_div) { | |
| 17227 | bool ok = false; | |
| 17228 | ||
| 17229 | if (value_cmp_numeric_val_any(op2_val, CmpEQ, nullptr)) { | |
| 17230 | // the division by zero error will be caught later, but we don't have a | |
| 17231 | // division function ambiguity problem. | |
| 17232 | ok = true; | |
| 17233 | } else { | |
| 17234 | IrInstGen *trunc_val = ir_analyze_math_op(ira, &instruction->base.base, resolved_type, | |
| 17235 | op1_val, IrBinOpDivTrunc, op2_val); | |
| 17236 | if (type_is_invalid(trunc_val->value->type)) | |
| 17237 | return ira->codegen->invalid_inst_gen; | |
| 17238 | ||
| 17239 | IrInstGen *floor_val = ir_analyze_math_op(ira, &instruction->base.base, resolved_type, | |
| 17240 | op1_val, IrBinOpDivFloor, op2_val); | |
| 17241 | if (type_is_invalid(floor_val->value->type)) | |
| 17242 | return ira->codegen->invalid_inst_gen; | |
| 17243 | ||
| 17244 | IrInstGen *cmp_val = ir_analyze_bin_op_cmp_numeric(ira, &instruction->base.base, | |
| 17245 | trunc_val, floor_val, IrBinOpCmpEq); | |
| 17246 | if (type_is_invalid(cmp_val->value->type)) | |
| 17247 | return ira->codegen->invalid_inst_gen; | |
| 17248 | ||
| 17249 | // We can "upgrade" the operator only if trunc(a/b) == floor(a/b) | |
| 17250 | if (!ir_resolve_bool(ira, cmp_val, &ok)) | |
| 17251 | return ira->codegen->invalid_inst_gen; | |
| 17252 | } | |
| 17253 | ||
| 17254 | if (!ok) { | |
| 17255 | ir_add_error(ira, &instruction->base.base, | |
| 17256 | buf_sprintf("division with '%s' and '%s': signed integers must use @divTrunc, @divFloor, or @divExact", | |
| 17257 | buf_ptr(&op1->value->type->name), | |
| 17258 | buf_ptr(&op2->value->type->name))); | |
| 17259 | return ira->codegen->invalid_inst_gen; | |
| 17260 | } | |
| 17261 | } | |
| 17262 | } else if (op_id == IrBinOpRemUnspecified) { | |
| 17263 | op_id = IrBinOpRemRem; | |
| 17264 | ||
| 17265 | if (is_signed_div) { | |
| 17266 | bool ok = false; | |
| 17267 | ||
| 17268 | if (value_cmp_numeric_val_any(op2_val, CmpEQ, nullptr)) { | |
| 17269 | // the division by zero error will be caught later, but we don't have a | |
| 17270 | // division function ambiguity problem. | |
| 17271 | ok = true; | |
| 17272 | } else { | |
| 17273 | IrInstGen *rem_val = ir_analyze_math_op(ira, &instruction->base.base, resolved_type, | |
| 17274 | op1_val, IrBinOpRemRem, op2_val); | |
| 17275 | if (type_is_invalid(rem_val->value->type)) | |
| 17276 | return ira->codegen->invalid_inst_gen; | |
| 17277 | ||
| 17278 | IrInstGen *mod_val = ir_analyze_math_op(ira, &instruction->base.base, resolved_type, | |
| 17279 | op1_val, IrBinOpRemMod, op2_val); | |
| 17280 | if (type_is_invalid(mod_val->value->type)) | |
| 17281 | return ira->codegen->invalid_inst_gen; | |
| 17282 | ||
| 17283 | IrInstGen *cmp_val = ir_analyze_bin_op_cmp_numeric(ira, &instruction->base.base, | |
| 17284 | rem_val, mod_val, IrBinOpCmpEq); | |
| 17285 | if (type_is_invalid(cmp_val->value->type)) | |
| 17286 | return ira->codegen->invalid_inst_gen; | |
| 17287 | ||
| 17288 | // We can "upgrade" the operator only if mod(a,b) == rem(a,b) | |
| 17289 | if (!ir_resolve_bool(ira, cmp_val, &ok)) | |
| 17290 | return ira->codegen->invalid_inst_gen; | |
| 17291 | } | |
| 17292 | ||
| 17293 | if (!ok) { | |
| 17294 | ir_add_error(ira, &instruction->base.base, | |
| 17295 | buf_sprintf("remainder division with '%s' and '%s': signed integers and floats must use @rem or @mod", | |
| 17296 | buf_ptr(&op1->value->type->name), | |
| 17297 | buf_ptr(&op2->value->type->name))); | |
| 17298 | return ira->codegen->invalid_inst_gen; | |
| 17299 | } | |
| 17300 | } | |
| 17301 | } | |
| 17302 | ||
| 17225 | 17303 | return ir_analyze_math_op(ira, &instruction->base.base, resolved_type, op1_val, op_id, op2_val); |
| 17226 | 17304 | } |
| 17227 | 17305 | |
| 17306 | const bool is_signed_div = | |
| 17307 | (scalar_type->id == ZigTypeIdInt && scalar_type->data.integral.is_signed) || | |
| 17308 | scalar_type->id == ZigTypeIdFloat; | |
| 17309 | ||
| 17310 | // Warn the user to use the proper operators here | |
| 17311 | if (op_id == IrBinOpDivUnspecified && is_int) { | |
| 17312 | op_id = IrBinOpDivTrunc; | |
| 17313 | ||
| 17314 | if (is_signed_div) { | |
| 17315 | ir_add_error(ira, &instruction->base.base, | |
| 17316 | buf_sprintf("division with '%s' and '%s': signed integers must use @divTrunc, @divFloor, or @divExact", | |
| 17317 | buf_ptr(&op1->value->type->name), | |
| 17318 | buf_ptr(&op2->value->type->name))); | |
| 17319 | return ira->codegen->invalid_inst_gen; | |
| 17320 | } | |
| 17321 | } else if (op_id == IrBinOpRemUnspecified) { | |
| 17322 | op_id = IrBinOpRemRem; | |
| 17323 | ||
| 17324 | if (is_signed_div) { | |
| 17325 | ir_add_error(ira, &instruction->base.base, | |
| 17326 | buf_sprintf("remainder division with '%s' and '%s': signed integers and floats must use @rem or @mod", | |
| 17327 | buf_ptr(&op1->value->type->name), | |
| 17328 | buf_ptr(&op2->value->type->name))); | |
| 17329 | return ira->codegen->invalid_inst_gen; | |
| 17330 | } | |
| 17331 | } | |
| 17332 | ||
| 17228 | 17333 | return ir_build_bin_op_gen(ira, &instruction->base.base, resolved_type, |
| 17229 | 17334 | op_id, casted_op1, casted_op2, instruction->safety_check_on); |
| 17230 | 17335 | } |
| ... | ... | @@ -17246,14 +17351,15 @@ static IrInstGen *ir_analyze_tuple_cat(IrAnalyze *ira, IrInst* source_instr, |
| 17246 | 17351 | ContainerKindStruct, source_instr->source_node, buf_ptr(name), bare_name, ContainerLayoutAuto); |
| 17247 | 17352 | new_type->data.structure.special = StructSpecialInferredTuple; |
| 17248 | 17353 | new_type->data.structure.resolve_status = ResolveStatusBeingInferred; |
| 17249 | ||
| 17250 | IrInstGen *new_struct_ptr = ir_resolve_result(ira, source_instr, no_result_loc(), | |
| 17251 | new_type, nullptr, false, true); | |
| 17252 | 17354 | uint32_t new_field_count = op1_field_count + op2_field_count; |
| 17253 | 17355 | |
| 17254 | 17356 | new_type->data.structure.src_field_count = new_field_count; |
| 17255 | 17357 | new_type->data.structure.fields = realloc_type_struct_fields(new_type->data.structure.fields, |
| 17256 | 17358 | 0, new_field_count); |
| 17359 | ||
| 17360 | IrInstGen *new_struct_ptr = ir_resolve_result(ira, source_instr, no_result_loc(), | |
| 17361 | new_type, nullptr, false, true); | |
| 17362 | ||
| 17257 | 17363 | for (uint32_t i = 0; i < new_field_count; i += 1) { |
| 17258 | 17364 | TypeStructField *src_field; |
| 17259 | 17365 | if (i < op1_field_count) { |
| ... | ... | @@ -17317,8 +17423,10 @@ static IrInstGen *ir_analyze_tuple_cat(IrAnalyze *ira, IrInst* source_instr, |
| 17317 | 17423 | ir_analyze_store_ptr(ira, &elem_result_loc->base, elem_result_loc, deref, true); |
| 17318 | 17424 | } |
| 17319 | 17425 | } |
| 17320 | IrInstGen *result = ir_get_deref(ira, source_instr, new_struct_ptr, nullptr); | |
| 17321 | return result; | |
| 17426 | ||
| 17427 | const_ptrs.deinit(); | |
| 17428 | ||
| 17429 | return ir_get_deref(ira, source_instr, new_struct_ptr, nullptr); | |
| 17322 | 17430 | } |
| 17323 | 17431 | |
| 17324 | 17432 | static IrInstGen *ir_analyze_array_cat(IrAnalyze *ira, IrInstSrcBinOp *instruction) { |
| ... | ... | @@ -17375,8 +17483,9 @@ static IrInstGen *ir_analyze_array_cat(IrAnalyze *ira, IrInstSrcBinOp *instructi |
| 17375 | 17483 | ZigValue *len_val = op1_val->data.x_struct.fields[slice_len_index]; |
| 17376 | 17484 | op1_array_end = op1_array_index + bigint_as_usize(&len_val->data.x_bigint); |
| 17377 | 17485 | sentinel1 = ptr_type->data.pointer.sentinel; |
| 17378 | } else if (op1_type->id == ZigTypeIdPointer && op1_type->data.pointer.ptr_len == PtrLenSingle && | |
| 17379 | op1_type->data.pointer.child_type->id == ZigTypeIdArray) | |
| 17486 | } else if (op1_type->id == ZigTypeIdPointer && | |
| 17487 | op1_type->data.pointer.ptr_len == PtrLenSingle && | |
| 17488 | op1_type->data.pointer.child_type->id == ZigTypeIdArray) | |
| 17380 | 17489 | { |
| 17381 | 17490 | ZigType *array_type = op1_type->data.pointer.child_type; |
| 17382 | 17491 | child_type = array_type->data.array.child_type; |
| ... | ... | @@ -17549,6 +17658,103 @@ static IrInstGen *ir_analyze_array_cat(IrAnalyze *ira, IrInstSrcBinOp *instructi |
| 17549 | 17658 | return result; |
| 17550 | 17659 | } |
| 17551 | 17660 | |
| 17661 | static IrInstGen *ir_analyze_tuple_mult(IrAnalyze *ira, IrInst* source_instr, | |
| 17662 | IrInstGen *op1, IrInstGen *op2) | |
| 17663 | { | |
| 17664 | Error err; | |
| 17665 | ZigType *op1_type = op1->value->type; | |
| 17666 | uint64_t op1_field_count = op1_type->data.structure.src_field_count; | |
| 17667 | ||
| 17668 | uint64_t mult_amt; | |
| 17669 | if (!ir_resolve_usize(ira, op2, &mult_amt)) | |
| 17670 | return ira->codegen->invalid_inst_gen; | |
| 17671 | ||
| 17672 | uint64_t new_field_count; | |
| 17673 | if (mul_u64_overflow(op1_field_count, mult_amt, &new_field_count)) { | |
| 17674 | ir_add_error(ira, source_instr, buf_sprintf("operation results in overflow")); | |
| 17675 | return ira->codegen->invalid_inst_gen; | |
| 17676 | } | |
| 17677 | ||
| 17678 | Buf *bare_name = buf_alloc(); | |
| 17679 | Buf *name = get_anon_type_name(ira->codegen, nullptr, container_string(ContainerKindStruct), | |
| 17680 | source_instr->scope, source_instr->source_node, bare_name); | |
| 17681 | ZigType *new_type = get_partial_container_type(ira->codegen, source_instr->scope, | |
| 17682 | ContainerKindStruct, source_instr->source_node, buf_ptr(name), bare_name, ContainerLayoutAuto); | |
| 17683 | new_type->data.structure.special = StructSpecialInferredTuple; | |
| 17684 | new_type->data.structure.resolve_status = ResolveStatusBeingInferred; | |
| 17685 | new_type->data.structure.src_field_count = new_field_count; | |
| 17686 | new_type->data.structure.fields = realloc_type_struct_fields( | |
| 17687 | new_type->data.structure.fields, 0, new_field_count); | |
| 17688 | ||
| 17689 | IrInstGen *new_struct_ptr = ir_resolve_result(ira, source_instr, no_result_loc(), | |
| 17690 | new_type, nullptr, false, true); | |
| 17691 | ||
| 17692 | for (uint64_t i = 0; i < new_field_count; i += 1) { | |
| 17693 | TypeStructField *src_field = op1_type->data.structure.fields[i % op1_field_count]; | |
| 17694 | TypeStructField *new_field = new_type->data.structure.fields[i]; | |
| 17695 | ||
| 17696 | new_field->name = buf_sprintf("%lu", i); | |
| 17697 | new_field->type_entry = src_field->type_entry; | |
| 17698 | new_field->type_val = src_field->type_val; | |
| 17699 | new_field->src_index = i; | |
| 17700 | new_field->decl_node = src_field->decl_node; | |
| 17701 | new_field->init_val = src_field->init_val; | |
| 17702 | new_field->is_comptime = src_field->is_comptime; | |
| 17703 | } | |
| 17704 | ||
| 17705 | if ((err = type_resolve(ira->codegen, new_type, ResolveStatusZeroBitsKnown))) | |
| 17706 | return ira->codegen->invalid_inst_gen; | |
| 17707 | ||
| 17708 | ZigList<IrInstGen *> const_ptrs = {}; | |
| 17709 | for (uint64_t i = 0; i < new_field_count; i += 1) { | |
| 17710 | TypeStructField *src_field = op1_type->data.structure.fields[i % op1_field_count]; | |
| 17711 | TypeStructField *dst_field = new_type->data.structure.fields[i]; | |
| 17712 | ||
| 17713 | IrInstGen *field_value = ir_analyze_struct_value_field_value( | |
| 17714 | ira, source_instr, op1, src_field); | |
| 17715 | if (type_is_invalid(field_value->value->type)) | |
| 17716 | return ira->codegen->invalid_inst_gen; | |
| 17717 | ||
| 17718 | IrInstGen *dest_ptr = ir_analyze_struct_field_ptr( | |
| 17719 | ira, source_instr, dst_field, new_struct_ptr, new_type, true); | |
| 17720 | if (type_is_invalid(dest_ptr->value->type)) | |
| 17721 | return ira->codegen->invalid_inst_gen; | |
| 17722 | ||
| 17723 | if (instr_is_comptime(field_value)) { | |
| 17724 | const_ptrs.append(dest_ptr); | |
| 17725 | } | |
| 17726 | ||
| 17727 | IrInstGen *store_ptr_inst = ir_analyze_store_ptr( | |
| 17728 | ira, source_instr, dest_ptr, field_value, true); | |
| 17729 | if (type_is_invalid(store_ptr_inst->value->type)) | |
| 17730 | return ira->codegen->invalid_inst_gen; | |
| 17731 | } | |
| 17732 | ||
| 17733 | if (const_ptrs.length != new_field_count) { | |
| 17734 | new_struct_ptr->value->special = ConstValSpecialRuntime; | |
| 17735 | for (size_t i = 0; i < const_ptrs.length; i += 1) { | |
| 17736 | IrInstGen *elem_result_loc = const_ptrs.at(i); | |
| 17737 | assert(elem_result_loc->value->special == ConstValSpecialStatic); | |
| 17738 | if (elem_result_loc->value->type->data.pointer.inferred_struct_field != nullptr) { | |
| 17739 | // This field will be generated comptime; no need to do this. | |
| 17740 | continue; | |
| 17741 | } | |
| 17742 | IrInstGen *deref = ir_get_deref(ira, &elem_result_loc->base, elem_result_loc, nullptr); | |
| 17743 | if (!type_requires_comptime(ira->codegen, elem_result_loc->value->type->data.pointer.child_type)) { | |
| 17744 | elem_result_loc->value->special = ConstValSpecialRuntime; | |
| 17745 | } | |
| 17746 | IrInstGen *store_ptr_inst = ir_analyze_store_ptr( | |
| 17747 | ira, &elem_result_loc->base, elem_result_loc, deref, true); | |
| 17748 | if (type_is_invalid(store_ptr_inst->value->type)) | |
| 17749 | return ira->codegen->invalid_inst_gen; | |
| 17750 | } | |
| 17751 | } | |
| 17752 | ||
| 17753 | const_ptrs.deinit(); | |
| 17754 | ||
| 17755 | return ir_get_deref(ira, source_instr, new_struct_ptr, nullptr); | |
| 17756 | } | |
| 17757 | ||
| 17552 | 17758 | static IrInstGen *ir_analyze_array_mult(IrAnalyze *ira, IrInstSrcBinOp *instruction) { |
| 17553 | 17759 | IrInstGen *op1 = instruction->op1->child; |
| 17554 | 17760 | if (type_is_invalid(op1->value->type)) |
| ... | ... | @@ -17566,8 +17772,9 @@ static IrInstGen *ir_analyze_array_mult(IrAnalyze *ira, IrInstSrcBinOp *instruct |
| 17566 | 17772 | array_val = ir_resolve_const(ira, op1, UndefOk); |
| 17567 | 17773 | if (array_val == nullptr) |
| 17568 | 17774 | return ira->codegen->invalid_inst_gen; |
| 17569 | } else if (op1->value->type->id == ZigTypeIdPointer && op1->value->type->data.pointer.ptr_len == PtrLenSingle && | |
| 17570 | op1->value->type->data.pointer.child_type->id == ZigTypeIdArray) | |
| 17775 | } else if (op1->value->type->id == ZigTypeIdPointer && | |
| 17776 | op1->value->type->data.pointer.ptr_len == PtrLenSingle && | |
| 17777 | op1->value->type->data.pointer.child_type->id == ZigTypeIdArray) | |
| 17571 | 17778 | { |
| 17572 | 17779 | array_type = op1->value->type->data.pointer.child_type; |
| 17573 | 17780 | IrInstGen *array_inst = ir_get_deref(ira, &op1->base, op1, nullptr); |
| ... | ... | @@ -17577,6 +17784,8 @@ static IrInstGen *ir_analyze_array_mult(IrAnalyze *ira, IrInstSrcBinOp *instruct |
| 17577 | 17784 | if (array_val == nullptr) |
| 17578 | 17785 | return ira->codegen->invalid_inst_gen; |
| 17579 | 17786 | want_ptr_to_array = true; |
| 17787 | } else if (is_tuple(op1->value->type)) { | |
| 17788 | return ir_analyze_tuple_mult(ira, &instruction->base.base, op1, op2); | |
| 17580 | 17789 | } else { |
| 17581 | 17790 | ir_add_error(ira, &op1->base, buf_sprintf("expected array type, found '%s'", buf_ptr(&op1->value->type->name))); |
| 17582 | 17791 | return ira->codegen->invalid_inst_gen; |
| ... | ... | @@ -20308,24 +20517,45 @@ static IrInstGen *ir_analyze_bin_not(IrAnalyze *ira, IrInstSrcUnOp *instruction) |
| 20308 | 20517 | if (type_is_invalid(expr_type)) |
| 20309 | 20518 | return ira->codegen->invalid_inst_gen; |
| 20310 | 20519 | |
| 20311 | if (expr_type->id == ZigTypeIdInt) { | |
| 20312 | if (instr_is_comptime(value)) { | |
| 20313 | ZigValue *target_const_val = ir_resolve_const(ira, value, UndefBad); | |
| 20314 | if (target_const_val == nullptr) | |
| 20315 | return ira->codegen->invalid_inst_gen; | |
| 20520 | ZigType *scalar_type = (expr_type->id == ZigTypeIdVector) ? | |
| 20521 | expr_type->data.vector.elem_type : expr_type; | |
| 20316 | 20522 | |
| 20317 | IrInstGen *result = ir_const(ira, &instruction->base.base, expr_type); | |
| 20318 | bigint_not(&result->value->data.x_bigint, &target_const_val->data.x_bigint, | |
| 20319 | expr_type->data.integral.bit_count, expr_type->data.integral.is_signed); | |
| 20320 | return result; | |
| 20523 | if (scalar_type->id != ZigTypeIdInt) { | |
| 20524 | ir_add_error(ira, &instruction->base.base, | |
| 20525 | buf_sprintf("unable to perform binary not operation on type '%s'", buf_ptr(&expr_type->name))); | |
| 20526 | return ira->codegen->invalid_inst_gen; | |
| 20527 | } | |
| 20528 | ||
| 20529 | if (instr_is_comptime(value)) { | |
| 20530 | ZigValue *expr_val = ir_resolve_const(ira, value, UndefBad); | |
| 20531 | if (expr_val == nullptr) | |
| 20532 | return ira->codegen->invalid_inst_gen; | |
| 20533 | ||
| 20534 | IrInstGen *result = ir_const(ira, &instruction->base.base, expr_type); | |
| 20535 | ||
| 20536 | if (expr_type->id == ZigTypeIdVector) { | |
| 20537 | expand_undef_array(ira->codegen, expr_val); | |
| 20538 | result->value->special = ConstValSpecialUndef; | |
| 20539 | expand_undef_array(ira->codegen, result->value); | |
| 20540 | ||
| 20541 | for (size_t i = 0; i < expr_type->data.vector.len; i++) { | |
| 20542 | ZigValue *src_val = &expr_val->data.x_array.data.s_none.elements[i]; | |
| 20543 | ZigValue *dst_val = &result->value->data.x_array.data.s_none.elements[i]; | |
| 20544 | ||
| 20545 | dst_val->type = scalar_type; | |
| 20546 | dst_val->special = ConstValSpecialStatic; | |
| 20547 | bigint_not(&dst_val->data.x_bigint, &src_val->data.x_bigint, | |
| 20548 | scalar_type->data.integral.bit_count, scalar_type->data.integral.is_signed); | |
| 20549 | } | |
| 20550 | } else { | |
| 20551 | bigint_not(&result->value->data.x_bigint, &expr_val->data.x_bigint, | |
| 20552 | scalar_type->data.integral.bit_count, scalar_type->data.integral.is_signed); | |
| 20321 | 20553 | } |
| 20322 | 20554 | |
| 20323 | return ir_build_binary_not(ira, &instruction->base.base, value, expr_type); | |
| 20555 | return result; | |
| 20324 | 20556 | } |
| 20325 | 20557 | |
| 20326 | ir_add_error(ira, &instruction->base.base, | |
| 20327 | buf_sprintf("unable to perform binary not operation on type '%s'", buf_ptr(&expr_type->name))); | |
| 20328 | return ira->codegen->invalid_inst_gen; | |
| 20558 | return ir_build_binary_not(ira, &instruction->base.base, value, expr_type); | |
| 20329 | 20559 | } |
| 20330 | 20560 | |
| 20331 | 20561 | static IrInstGen *ir_analyze_instruction_un_op(IrAnalyze *ira, IrInstSrcUnOp *instruction) { |
| ... | ... | @@ -26583,7 +26813,6 @@ done_with_return_type: |
| 26583 | 26813 | if (parent_ptr == nullptr) |
| 26584 | 26814 | return ira->codegen->invalid_inst_gen; |
| 26585 | 26815 | |
| 26586 | ||
| 26587 | 26816 | if (parent_ptr->special == ConstValSpecialUndef) { |
| 26588 | 26817 | array_val = nullptr; |
| 26589 | 26818 | abs_offset = 0; |
| ... | ... | @@ -26746,6 +26975,113 @@ done_with_return_type: |
| 26746 | 26975 | return ira->codegen->invalid_inst_gen; |
| 26747 | 26976 | } |
| 26748 | 26977 | |
| 26978 | // check sentinel when target is comptime-known | |
| 26979 | { | |
| 26980 | if (!sentinel_val) | |
| 26981 | goto exit_check_sentinel; | |
| 26982 | ||
| 26983 | switch (ptr_ptr->value->data.x_ptr.mut) { | |
| 26984 | case ConstPtrMutComptimeConst: | |
| 26985 | case ConstPtrMutComptimeVar: | |
| 26986 | break; | |
| 26987 | case ConstPtrMutRuntimeVar: | |
| 26988 | case ConstPtrMutInfer: | |
| 26989 | goto exit_check_sentinel; | |
| 26990 | } | |
| 26991 | ||
| 26992 | // prepare check parameters | |
| 26993 | ZigValue *target = const_ptr_pointee(ira, ira->codegen, ptr_ptr->value, instruction->base.base.source_node); | |
| 26994 | if (target == nullptr) | |
| 26995 | return ira->codegen->invalid_inst_gen; | |
| 26996 | ||
| 26997 | uint64_t target_len = 0; | |
| 26998 | ZigValue *target_sentinel = nullptr; | |
| 26999 | ZigValue *target_elements = nullptr; | |
| 27000 | ||
| 27001 | for (;;) { | |
| 27002 | if (target->type->id == ZigTypeIdArray) { | |
| 27003 | // handle `[N]T` | |
| 27004 | target_len = target->type->data.array.len; | |
| 27005 | target_sentinel = target->type->data.array.sentinel; | |
| 27006 | target_elements = target->data.x_array.data.s_none.elements; | |
| 27007 | break; | |
| 27008 | } else if (target->type->id == ZigTypeIdPointer && target->type->data.pointer.child_type->id == ZigTypeIdArray) { | |
| 27009 | // handle `*[N]T` | |
| 27010 | target = const_ptr_pointee(ira, ira->codegen, target, instruction->base.base.source_node); | |
| 27011 | if (target == nullptr) | |
| 27012 | return ira->codegen->invalid_inst_gen; | |
| 27013 | assert(target->type->id == ZigTypeIdArray); | |
| 27014 | continue; | |
| 27015 | } else if (target->type->id == ZigTypeIdPointer) { | |
| 27016 | // handle `[*]T` | |
| 27017 | // handle `[*c]T` | |
| 27018 | switch (target->data.x_ptr.special) { | |
| 27019 | case ConstPtrSpecialInvalid: | |
| 27020 | case ConstPtrSpecialDiscard: | |
| 27021 | zig_unreachable(); | |
| 27022 | case ConstPtrSpecialRef: | |
| 27023 | target = target->data.x_ptr.data.ref.pointee; | |
| 27024 | assert(target->type->id == ZigTypeIdArray); | |
| 27025 | continue; | |
| 27026 | case ConstPtrSpecialBaseArray: | |
| 27027 | case ConstPtrSpecialSubArray: | |
| 27028 | target = target->data.x_ptr.data.base_array.array_val; | |
| 27029 | assert(target->type->id == ZigTypeIdArray); | |
| 27030 | continue; | |
| 27031 | case ConstPtrSpecialBaseStruct: | |
| 27032 | zig_panic("TODO slice const inner struct"); | |
| 27033 | case ConstPtrSpecialBaseErrorUnionCode: | |
| 27034 | zig_panic("TODO slice const inner error union code"); | |
| 27035 | case ConstPtrSpecialBaseErrorUnionPayload: | |
| 27036 | zig_panic("TODO slice const inner error union payload"); | |
| 27037 | case ConstPtrSpecialBaseOptionalPayload: | |
| 27038 | zig_panic("TODO slice const inner optional payload"); | |
| 27039 | case ConstPtrSpecialHardCodedAddr: | |
| 27040 | // skip check | |
| 27041 | goto exit_check_sentinel; | |
| 27042 | case ConstPtrSpecialFunction: | |
| 27043 | zig_panic("TODO slice of ptr cast from function"); | |
| 27044 | case ConstPtrSpecialNull: | |
| 27045 | zig_panic("TODO slice of null ptr"); | |
| 27046 | } | |
| 27047 | break; | |
| 27048 | } else if (is_slice(target->type)) { | |
| 27049 | // handle `[]T` | |
| 27050 | target = target->data.x_struct.fields[slice_ptr_index]; | |
| 27051 | assert(target->type->id == ZigTypeIdPointer); | |
| 27052 | continue; | |
| 27053 | } | |
| 27054 | ||
| 27055 | zig_unreachable(); | |
| 27056 | } | |
| 27057 | ||
| 27058 | // perform check | |
| 27059 | if (target_sentinel == nullptr) { | |
| 27060 | if (end_scalar >= target_len) { | |
| 27061 | ir_add_error(ira, &instruction->base.base, buf_sprintf("slice-sentinel is out of bounds")); | |
| 27062 | return ira->codegen->invalid_inst_gen; | |
| 27063 | } | |
| 27064 | if (!const_values_equal(ira->codegen, sentinel_val, &target_elements[end_scalar])) { | |
| 27065 | ir_add_error(ira, &instruction->base.base, buf_sprintf("slice-sentinel does not match memory at target index")); | |
| 27066 | return ira->codegen->invalid_inst_gen; | |
| 27067 | } | |
| 27068 | } else { | |
| 27069 | assert(end_scalar <= target_len); | |
| 27070 | if (end_scalar == target_len) { | |
| 27071 | if (!const_values_equal(ira->codegen, sentinel_val, target_sentinel)) { | |
| 27072 | ir_add_error(ira, &instruction->base.base, buf_sprintf("slice-sentinel does not match target-sentinel")); | |
| 27073 | return ira->codegen->invalid_inst_gen; | |
| 27074 | } | |
| 27075 | } else { | |
| 27076 | if (!const_values_equal(ira->codegen, sentinel_val, &target_elements[end_scalar])) { | |
| 27077 | ir_add_error(ira, &instruction->base.base, buf_sprintf("slice-sentinel does not match memory at target index")); | |
| 27078 | return ira->codegen->invalid_inst_gen; | |
| 27079 | } | |
| 27080 | } | |
| 27081 | } | |
| 27082 | } | |
| 27083 | exit_check_sentinel: | |
| 27084 | ||
| 26749 | 27085 | IrInstGen *result = ir_const(ira, &instruction->base.base, return_type); |
| 26750 | 27086 | |
| 26751 | 27087 | ZigValue *ptr_val; |
| ... | ... | @@ -28311,6 +28647,7 @@ static Error buf_read_value_bytes(IrAnalyze *ira, CodeGen *codegen, AstNode *sou |
| 28311 | 28647 | } |
| 28312 | 28648 | BigInt big_int; |
| 28313 | 28649 | bigint_read_twos_complement(&big_int, buf + offset, big_int_byte_count * 8, is_big_endian, false); |
| 28650 | uint64_t bit_offset = 0; | |
| 28314 | 28651 | while (src_i < src_field_count) { |
| 28315 | 28652 | TypeStructField *field = val->type->data.structure.fields[src_i]; |
| 28316 | 28653 | src_assert(field->gen_index != SIZE_MAX, source_node); |
| ... | ... | @@ -28323,7 +28660,11 @@ static Error buf_read_value_bytes(IrAnalyze *ira, CodeGen *codegen, AstNode *sou |
| 28323 | 28660 | |
| 28324 | 28661 | BigInt child_val; |
| 28325 | 28662 | if (is_big_endian) { |
| 28326 | zig_panic("TODO buf_read_value_bytes packed struct big endian"); | |
| 28663 | BigInt packed_bits_size_bi; | |
| 28664 | bigint_init_unsigned(&packed_bits_size_bi, big_int_byte_count * 8 - packed_bits_size - bit_offset); | |
| 28665 | BigInt tmp; | |
| 28666 | bigint_shr(&tmp, &big_int, &packed_bits_size_bi); | |
| 28667 | bigint_truncate(&child_val, &tmp, packed_bits_size, false); | |
| 28327 | 28668 | } else { |
| 28328 | 28669 | BigInt packed_bits_size_bi; |
| 28329 | 28670 | bigint_init_unsigned(&packed_bits_size_bi, packed_bits_size); |
| ... | ... | @@ -28333,11 +28674,12 @@ static Error buf_read_value_bytes(IrAnalyze *ira, CodeGen *codegen, AstNode *sou |
| 28333 | 28674 | big_int = tmp; |
| 28334 | 28675 | } |
| 28335 | 28676 | |
| 28336 | bigint_write_twos_complement(&child_val, child_buf, big_int_byte_count * 8, is_big_endian); | |
| 28677 | bigint_write_twos_complement(&child_val, child_buf, packed_bits_size, is_big_endian); | |
| 28337 | 28678 | if ((err = buf_read_value_bytes(ira, codegen, source_node, child_buf, field_val))) { |
| 28338 | 28679 | return err; |
| 28339 | 28680 | } |
| 28340 | 28681 | |
| 28682 | bit_offset += packed_bits_size; | |
| 28341 | 28683 | src_i += 1; |
| 28342 | 28684 | } |
| 28343 | 28685 | offset += big_int_byte_count; |
src/link.cpp+97-12| ... | ... | @@ -72,7 +72,7 @@ static const char *msvcrt_common_src[] = { |
| 72 | 72 | |
| 73 | 73 | static const char *msvcrt_i386_src[] = { |
| 74 | 74 | "misc" OS_SEP "lc_locale_func.c", |
| 75 | ||
| 75 | "misc" OS_SEP "___mb_cur_max_func.c", | |
| 76 | 76 | }; |
| 77 | 77 | |
| 78 | 78 | static const char *msvcrt_other_src[] = { |
| ... | ... | @@ -517,6 +517,52 @@ static const char *mingwex_arm64_src[] = { |
| 517 | 517 | "math" OS_SEP "arm64" OS_SEP "trunc.S", |
| 518 | 518 | }; |
| 519 | 519 | |
| 520 | static const char *mingw_uuid_src[] = { | |
| 521 | "libsrc/ativscp-uuid.c", | |
| 522 | "libsrc/atsmedia-uuid.c", | |
| 523 | "libsrc/bth-uuid.c", | |
| 524 | "libsrc/cguid-uuid.c", | |
| 525 | "libsrc/comcat-uuid.c", | |
| 526 | "libsrc/devguid.c", | |
| 527 | "libsrc/docobj-uuid.c", | |
| 528 | "libsrc/dxva-uuid.c", | |
| 529 | "libsrc/exdisp-uuid.c", | |
| 530 | "libsrc/extras-uuid.c", | |
| 531 | "libsrc/fwp-uuid.c", | |
| 532 | "libsrc/guid_nul.c", | |
| 533 | "libsrc/hlguids-uuid.c", | |
| 534 | "libsrc/hlink-uuid.c", | |
| 535 | "libsrc/mlang-uuid.c", | |
| 536 | "libsrc/msctf-uuid.c", | |
| 537 | "libsrc/mshtmhst-uuid.c", | |
| 538 | "libsrc/mshtml-uuid.c", | |
| 539 | "libsrc/msxml-uuid.c", | |
| 540 | "libsrc/netcon-uuid.c", | |
| 541 | "libsrc/ntddkbd-uuid.c", | |
| 542 | "libsrc/ntddmou-uuid.c", | |
| 543 | "libsrc/ntddpar-uuid.c", | |
| 544 | "libsrc/ntddscsi-uuid.c", | |
| 545 | "libsrc/ntddser-uuid.c", | |
| 546 | "libsrc/ntddstor-uuid.c", | |
| 547 | "libsrc/ntddvdeo-uuid.c", | |
| 548 | "libsrc/oaidl-uuid.c", | |
| 549 | "libsrc/objidl-uuid.c", | |
| 550 | "libsrc/objsafe-uuid.c", | |
| 551 | "libsrc/ocidl-uuid.c", | |
| 552 | "libsrc/oleacc-uuid.c", | |
| 553 | "libsrc/olectlid-uuid.c", | |
| 554 | "libsrc/oleidl-uuid.c", | |
| 555 | "libsrc/power-uuid.c", | |
| 556 | "libsrc/powrprof-uuid.c", | |
| 557 | "libsrc/uianimation-uuid.c", | |
| 558 | "libsrc/usbcamdi-uuid.c", | |
| 559 | "libsrc/usbiodef-uuid.c", | |
| 560 | "libsrc/uuid.c", | |
| 561 | "libsrc/vds-uuid.c", | |
| 562 | "libsrc/virtdisk-uuid.c", | |
| 563 | "libsrc/wia-uuid.c", | |
| 564 | }; | |
| 565 | ||
| 520 | 566 | struct MinGWDef { |
| 521 | 567 | const char *name; |
| 522 | 568 | bool always_link; |
| ... | ... | @@ -541,6 +587,7 @@ static const MinGWDef mingw_def_list[] = { |
| 541 | 587 | {"ole32", false}, |
| 542 | 588 | {"oleaut32",false}, |
| 543 | 589 | {"opengl32",false}, |
| 590 | {"psapi", false}, | |
| 544 | 591 | {"rpcns4", false}, |
| 545 | 592 | {"rpcrt4", false}, |
| 546 | 593 | {"scarddlg",false}, |
| ... | ... | @@ -1261,7 +1308,32 @@ static void add_msvcrt_os_dep(CodeGen *parent, CodeGen *child_gen, const char *s |
| 1261 | 1308 | child_gen->c_source_files.append(c_file); |
| 1262 | 1309 | } |
| 1263 | 1310 | |
| 1264 | static void add_mingwex_os_dep(CodeGen *parent, CodeGen *child_gen, const char *src_path) { | |
| 1311 | static void add_mingwex_dep(CodeGen *parent, CodeGen *child_gen, const char *src_path) { | |
| 1312 | CFile *c_file = heap::c_allocator.create<CFile>(); | |
| 1313 | c_file->source_path = buf_ptr(buf_sprintf("%s" OS_SEP "libc" OS_SEP "mingw" OS_SEP "%s", | |
| 1314 | buf_ptr(parent->zig_lib_dir), src_path)); | |
| 1315 | c_file->args.append("-DHAVE_CONFIG_H"); | |
| 1316 | ||
| 1317 | c_file->args.append("-I"); | |
| 1318 | c_file->args.append(path_from_libc(parent, "mingw")); | |
| 1319 | ||
| 1320 | c_file->args.append("-I"); | |
| 1321 | c_file->args.append(path_from_libc(parent, "mingw" OS_SEP "include")); | |
| 1322 | ||
| 1323 | c_file->args.append("-std=gnu99"); | |
| 1324 | c_file->args.append("-D_CRTBLD"); | |
| 1325 | c_file->args.append("-D_WIN32_WINNT=0x0f00"); | |
| 1326 | c_file->args.append("-D__MSVCRT_VERSION__=0x700"); | |
| 1327 | c_file->args.append("-g"); | |
| 1328 | c_file->args.append("-O2"); | |
| 1329 | ||
| 1330 | c_file->args.append("-isystem"); | |
| 1331 | c_file->args.append(path_from_libc(parent, "include" OS_SEP "any-windows-any")); | |
| 1332 | ||
| 1333 | child_gen->c_source_files.append(c_file); | |
| 1334 | } | |
| 1335 | ||
| 1336 | static void add_mingw_uuid_dep(CodeGen *parent, CodeGen *child_gen, const char *src_path) { | |
| 1265 | 1337 | CFile *c_file = heap::c_allocator.create<CFile>(); |
| 1266 | 1338 | c_file->source_path = buf_ptr(buf_sprintf("%s" OS_SEP "libc" OS_SEP "mingw" OS_SEP "%s", |
| 1267 | 1339 | buf_ptr(parent->zig_lib_dir), src_path)); |
| ... | ... | @@ -1387,20 +1459,20 @@ static const char *get_libc_crt_file(CodeGen *parent, const char *file, Stage2Pr |
| 1387 | 1459 | CodeGen *child_gen = create_child_codegen(parent, nullptr, OutTypeLib, nullptr, "mingwex", progress_node); |
| 1388 | 1460 | |
| 1389 | 1461 | for (size_t i = 0; i < array_length(mingwex_generic_src); i += 1) { |
| 1390 | add_mingwex_os_dep(parent, child_gen, mingwex_generic_src[i]); | |
| 1462 | add_mingwex_dep(parent, child_gen, mingwex_generic_src[i]); | |
| 1391 | 1463 | } |
| 1392 | 1464 | if (parent->zig_target->arch == ZigLLVM_x86 || parent->zig_target->arch == ZigLLVM_x86_64) { |
| 1393 | 1465 | for (size_t i = 0; i < array_length(mingwex_x86_src); i += 1) { |
| 1394 | add_mingwex_os_dep(parent, child_gen, mingwex_x86_src[i]); | |
| 1466 | add_mingwex_dep(parent, child_gen, mingwex_x86_src[i]); | |
| 1395 | 1467 | } |
| 1396 | 1468 | } else if (target_is_arm(parent->zig_target)) { |
| 1397 | 1469 | if (target_arch_pointer_bit_width(parent->zig_target->arch) == 32) { |
| 1398 | 1470 | for (size_t i = 0; i < array_length(mingwex_arm32_src); i += 1) { |
| 1399 | add_mingwex_os_dep(parent, child_gen, mingwex_arm32_src[i]); | |
| 1471 | add_mingwex_dep(parent, child_gen, mingwex_arm32_src[i]); | |
| 1400 | 1472 | } |
| 1401 | 1473 | } else { |
| 1402 | 1474 | for (size_t i = 0; i < array_length(mingwex_arm64_src); i += 1) { |
| 1403 | add_mingwex_os_dep(parent, child_gen, mingwex_arm64_src[i]); | |
| 1475 | add_mingwex_dep(parent, child_gen, mingwex_arm64_src[i]); | |
| 1404 | 1476 | } |
| 1405 | 1477 | } |
| 1406 | 1478 | } else { |
| ... | ... | @@ -1408,6 +1480,13 @@ static const char *get_libc_crt_file(CodeGen *parent, const char *file, Stage2Pr |
| 1408 | 1480 | } |
| 1409 | 1481 | codegen_build_and_link(child_gen); |
| 1410 | 1482 | return buf_ptr(&child_gen->bin_file_output_path); |
| 1483 | } else if (strcmp(file, "uuid.lib") == 0) { | |
| 1484 | CodeGen *child_gen = create_child_codegen(parent, nullptr, OutTypeLib, nullptr, "uuid", progress_node); | |
| 1485 | for (size_t i = 0; i < array_length(mingw_uuid_src); i += 1) { | |
| 1486 | add_mingw_uuid_dep(parent, child_gen, mingw_uuid_src[i]); | |
| 1487 | } | |
| 1488 | codegen_build_and_link(child_gen); | |
| 1489 | return buf_ptr(&child_gen->bin_file_output_path); | |
| 1411 | 1490 | } else { |
| 1412 | 1491 | zig_unreachable(); |
| 1413 | 1492 | } |
| ... | ... | @@ -1761,7 +1840,8 @@ static void construct_linker_job_elf(LinkJob *lj) { |
| 1761 | 1840 | |
| 1762 | 1841 | if (g->out_type == OutTypeExe) { |
| 1763 | 1842 | lj->args.append("-z"); |
| 1764 | lj->args.append("stack-size=16777216"); // default to 16 MiB | |
| 1843 | size_t stack_size = (g->stack_size_override == 0) ? 16777216 : g->stack_size_override; | |
| 1844 | lj->args.append(buf_ptr(buf_sprintf("stack-size=%" ZIG_PRI_usize, stack_size))); | |
| 1765 | 1845 | } |
| 1766 | 1846 | |
| 1767 | 1847 | if (g->linker_script) { |
| ... | ... | @@ -2400,7 +2480,8 @@ static void construct_linker_job_coff(LinkJob *lj) { |
| 2400 | 2480 | |
| 2401 | 2481 | if (g->out_type == OutTypeExe) { |
| 2402 | 2482 | // TODO compile time stack upper bound detection |
| 2403 | lj->args.append("-STACK:16777216"); | |
| 2483 | size_t stack_size = (g->stack_size_override == 0) ? 16777216 : g->stack_size_override; | |
| 2484 | lj->args.append(buf_ptr(buf_sprintf("-STACK:%" ZIG_PRI_usize, stack_size))); | |
| 2404 | 2485 | } |
| 2405 | 2486 | |
| 2406 | 2487 | coff_append_machine_arg(g, &lj->args); |
| ... | ... | @@ -2526,10 +2607,14 @@ static void construct_linker_job_coff(LinkJob *lj) { |
| 2526 | 2607 | // If we're linking in the CRT or the libs are provided explictly we don't want to generate def/libs |
| 2527 | 2608 | if ((lj->link_in_crt && is_sys_lib) || link_lib->provided_explicitly) { |
| 2528 | 2609 | if (target_abi_is_gnu(lj->codegen->zig_target->abi)) { |
| 2529 | Buf* lib_name = buf_sprintf("lib%s.a", buf_ptr(link_lib->name)); | |
| 2530 | lj->args.append(buf_ptr(lib_name)); | |
| 2531 | } | |
| 2532 | else { | |
| 2610 | if (buf_eql_str(link_lib->name, "uuid")) { | |
| 2611 | // mingw-w64 provides this lib | |
| 2612 | lj->args.append(get_libc_crt_file(g, "uuid.lib", lj->build_dep_prog_node)); | |
| 2613 | } else { | |
| 2614 | Buf* lib_name = buf_sprintf("lib%s.a", buf_ptr(link_lib->name)); | |
| 2615 | lj->args.append(buf_ptr(lib_name)); | |
| 2616 | } | |
| 2617 | } else { | |
| 2533 | 2618 | Buf* lib_name = buf_sprintf("%s.lib", buf_ptr(link_lib->name)); |
| 2534 | 2619 | lj->args.append(buf_ptr(lib_name)); |
| 2535 | 2620 | } |
src/main.cpp+35-15| ... | ... | @@ -260,18 +260,6 @@ static int main0(int argc, char **argv) { |
| 260 | 260 | char *arg0 = argv[0]; |
| 261 | 261 | Error err; |
| 262 | 262 | |
| 263 | if (argc == 2 && strcmp(argv[1], "BUILD_INFO") == 0) { | |
| 264 | printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n", | |
| 265 | ZIG_CMAKE_BINARY_DIR, | |
| 266 | ZIG_CXX_COMPILER, | |
| 267 | ZIG_LLVM_CONFIG_EXE, | |
| 268 | ZIG_LLD_INCLUDE_PATH, | |
| 269 | ZIG_LLD_LIBRARIES, | |
| 270 | ZIG_CLANG_LIBRARIES, | |
| 271 | ZIG_DIA_GUIDS_LIB); | |
| 272 | return 0; | |
| 273 | } | |
| 274 | ||
| 275 | 263 | if (argc >= 2 && (strcmp(argv[1], "clang") == 0 || |
| 276 | 264 | strcmp(argv[1], "-cc1") == 0 || strcmp(argv[1], "-cc1as") == 0)) |
| 277 | 265 | { |
| ... | ... | @@ -459,11 +447,13 @@ static int main0(int argc, char **argv) { |
| 459 | 447 | bool ensure_libc_on_non_freestanding = false; |
| 460 | 448 | bool ensure_libcpp_on_non_freestanding = false; |
| 461 | 449 | bool disable_c_depfile = false; |
| 450 | bool want_native_include_dirs = false; | |
| 462 | 451 | Buf *linker_optimization = nullptr; |
| 463 | 452 | OptionalBool linker_gc_sections = OptionalBoolNull; |
| 464 | 453 | OptionalBool linker_allow_shlib_undefined = OptionalBoolNull; |
| 465 | 454 | bool linker_z_nodelete = false; |
| 466 | 455 | bool linker_z_defs = false; |
| 456 | size_t stack_size_override = 0; | |
| 467 | 457 | |
| 468 | 458 | ZigList<const char *> llvm_argv = {0}; |
| 469 | 459 | llvm_argv.append("zig (LLVM option parsing)"); |
| ... | ... | @@ -593,6 +583,7 @@ static int main0(int argc, char **argv) { |
| 593 | 583 | strip = true; |
| 594 | 584 | ensure_libc_on_non_freestanding = true; |
| 595 | 585 | ensure_libcpp_on_non_freestanding = (strcmp(argv[1], "c++") == 0); |
| 586 | want_native_include_dirs = true; | |
| 596 | 587 | |
| 597 | 588 | bool c_arg = false; |
| 598 | 589 | Stage2ClangArgIterator it; |
| ... | ... | @@ -759,6 +750,9 @@ static int main0(int argc, char **argv) { |
| 759 | 750 | case Stage2ClangArgFramework: |
| 760 | 751 | frameworks.append(it.only_arg); |
| 761 | 752 | break; |
| 753 | case Stage2ClangArgNoStdLibInc: | |
| 754 | want_native_include_dirs = false; | |
| 755 | break; | |
| 762 | 756 | } |
| 763 | 757 | } |
| 764 | 758 | // Parse linker args |
| ... | ... | @@ -833,9 +827,13 @@ static int main0(int argc, char **argv) { |
| 833 | 827 | linker_gc_sections = OptionalBoolTrue; |
| 834 | 828 | } else if (buf_eql_str(arg, "--no-gc-sections")) { |
| 835 | 829 | linker_gc_sections = OptionalBoolFalse; |
| 836 | } else if (buf_eql_str(arg, "--allow-shlib-undefined")) { | |
| 830 | } else if (buf_eql_str(arg, "--allow-shlib-undefined") || | |
| 831 | buf_eql_str(arg, "-allow-shlib-undefined")) | |
| 832 | { | |
| 837 | 833 | linker_allow_shlib_undefined = OptionalBoolTrue; |
| 838 | } else if (buf_eql_str(arg, "--no-allow-shlib-undefined")) { | |
| 834 | } else if (buf_eql_str(arg, "--no-allow-shlib-undefined") || | |
| 835 | buf_eql_str(arg, "-no-allow-shlib-undefined")) | |
| 836 | { | |
| 839 | 837 | linker_allow_shlib_undefined = OptionalBoolFalse; |
| 840 | 838 | } else if (buf_eql_str(arg, "-z")) { |
| 841 | 839 | i += 1; |
| ... | ... | @@ -851,6 +849,27 @@ static int main0(int argc, char **argv) { |
| 851 | 849 | } else { |
| 852 | 850 | fprintf(stderr, "warning: unsupported linker arg: -z %s\n", buf_ptr(z_arg)); |
| 853 | 851 | } |
| 852 | } else if (buf_eql_str(arg, "--major-image-version")) { | |
| 853 | i += 1; | |
| 854 | if (i >= linker_args.length) { | |
| 855 | fprintf(stderr, "expected linker arg after '%s'\n", buf_ptr(arg)); | |
| 856 | return EXIT_FAILURE; | |
| 857 | } | |
| 858 | ver_major = atoi(buf_ptr(linker_args.at(i))); | |
| 859 | } else if (buf_eql_str(arg, "--minor-image-version")) { | |
| 860 | i += 1; | |
| 861 | if (i >= linker_args.length) { | |
| 862 | fprintf(stderr, "expected linker arg after '%s'\n", buf_ptr(arg)); | |
| 863 | return EXIT_FAILURE; | |
| 864 | } | |
| 865 | ver_minor = atoi(buf_ptr(linker_args.at(i))); | |
| 866 | } else if (buf_eql_str(arg, "--stack")) { | |
| 867 | i += 1; | |
| 868 | if (i >= linker_args.length) { | |
| 869 | fprintf(stderr, "expected linker arg after '%s'\n", buf_ptr(arg)); | |
| 870 | return EXIT_FAILURE; | |
| 871 | } | |
| 872 | stack_size_override = atoi(buf_ptr(linker_args.at(i))); | |
| 854 | 873 | } else { |
| 855 | 874 | fprintf(stderr, "warning: unsupported linker arg: %s\n", buf_ptr(arg)); |
| 856 | 875 | } |
| ... | ... | @@ -1426,7 +1445,7 @@ static int main0(int argc, char **argv) { |
| 1426 | 1445 | } |
| 1427 | 1446 | } |
| 1428 | 1447 | |
| 1429 | if (target.is_native_os && any_system_lib_dependencies) { | |
| 1448 | if (target.is_native_os && (any_system_lib_dependencies || want_native_include_dirs)) { | |
| 1430 | 1449 | Error err; |
| 1431 | 1450 | Stage2NativePaths paths; |
| 1432 | 1451 | if ((err = stage2_detect_native_paths(&paths))) { |
| ... | ... | @@ -1576,6 +1595,7 @@ static int main0(int argc, char **argv) { |
| 1576 | 1595 | g->linker_allow_shlib_undefined = linker_allow_shlib_undefined; |
| 1577 | 1596 | g->linker_z_nodelete = linker_z_nodelete; |
| 1578 | 1597 | g->linker_z_defs = linker_z_defs; |
| 1598 | g->stack_size_override = stack_size_override; | |
| 1579 | 1599 | |
| 1580 | 1600 | if (override_soname) { |
| 1581 | 1601 | g->override_soname = buf_create_from_str(override_soname); |
src/os.cpp+2| ... | ... | @@ -37,7 +37,9 @@ |
| 37 | 37 | #include <fcntl.h> |
| 38 | 38 | #include <ntsecapi.h> |
| 39 | 39 | |
| 40 | #if defined(_MSC_VER) | |
| 40 | 41 | typedef SSIZE_T ssize_t; |
| 42 | #endif | |
| 41 | 43 | #else |
| 42 | 44 | #define ZIG_OS_POSIX |
| 43 | 45 |
src/stage2.h+2| ... | ... | @@ -107,6 +107,7 @@ enum Error { |
| 107 | 107 | ErrorInvalidOperatingSystemVersion, |
| 108 | 108 | ErrorUnknownClangOption, |
| 109 | 109 | ErrorNestedResponseFile, |
| 110 | ErrorZigIsTheCCompiler, | |
| 110 | 111 | ErrorFileBusy, |
| 111 | 112 | ErrorLocked, |
| 112 | 113 | }; |
| ... | ... | @@ -354,6 +355,7 @@ enum Stage2ClangArg { |
| 354 | 355 | Stage2ClangArgDepFile, |
| 355 | 356 | Stage2ClangArgFrameworkDir, |
| 356 | 357 | Stage2ClangArgFramework, |
| 358 | Stage2ClangArgNoStdLibInc, | |
| 357 | 359 | }; |
| 358 | 360 | |
| 359 | 361 | // ABI warning |
src/target.cpp+2| ... | ... | @@ -1238,6 +1238,8 @@ bool target_is_libc_lib_name(const ZigTarget *target, const char *name) { |
| 1238 | 1238 | return true; |
| 1239 | 1239 | if (strcmp(name, "dl") == 0) |
| 1240 | 1240 | return true; |
| 1241 | if (strcmp(name, "util") == 0) | |
| 1242 | return true; | |
| 1241 | 1243 | } |
| 1242 | 1244 | |
| 1243 | 1245 | return false; |
src/zig_clang.h+3-1| ... | ... | @@ -50,7 +50,9 @@ enum ZigClangAPValueKind { |
| 50 | 50 | struct ZigClangAPValue { |
| 51 | 51 | enum ZigClangAPValueKind Kind; |
| 52 | 52 | // experimentally-derived size of clang::APValue::DataType |
| 53 | #if defined(_WIN32) && defined(_MSC_VER) | |
| 53 | #if defined(_WIN32) && defined(__i386__) | |
| 54 | char Data[68]; | |
| 55 | #elif defined(_WIN32) && defined(_MSC_VER) | |
| 54 | 56 | char Data[52]; |
| 55 | 57 | #elif defined(__i386__) |
| 56 | 58 | char Data[48]; |
src/zig_llvm.cpp+16-1| ... | ... | @@ -100,7 +100,7 @@ static const bool assertions_on = false; |
| 100 | 100 | |
| 101 | 101 | LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, const char *Triple, |
| 102 | 102 | const char *CPU, const char *Features, LLVMCodeGenOptLevel Level, LLVMRelocMode Reloc, |
| 103 | LLVMCodeModel CodeModel, bool function_sections) | |
| 103 | LLVMCodeModel CodeModel, bool function_sections, ZigLLVMABIType float_abi, const char *abi_name) | |
| 104 | 104 | { |
| 105 | 105 | Optional<Reloc::Model> RM; |
| 106 | 106 | switch (Reloc){ |
| ... | ... | @@ -147,6 +147,21 @@ LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, const char *Tri |
| 147 | 147 | |
| 148 | 148 | TargetOptions opt; |
| 149 | 149 | opt.FunctionSections = function_sections; |
| 150 | switch (float_abi) { | |
| 151 | case ZigLLVMABITypeDefault: | |
| 152 | opt.FloatABIType = FloatABI::Default; | |
| 153 | break; | |
| 154 | case ZigLLVMABITypeSoft: | |
| 155 | opt.FloatABIType = FloatABI::Soft; | |
| 156 | break; | |
| 157 | case ZigLLVMABITypeHard: | |
| 158 | opt.FloatABIType = FloatABI::Hard; | |
| 159 | break; | |
| 160 | } | |
| 161 | ||
| 162 | if (abi_name != nullptr) { | |
| 163 | opt.MCOptions.ABIName = abi_name; | |
| 164 | } | |
| 150 | 165 | |
| 151 | 166 | TargetMachine *TM = reinterpret_cast<Target*>(T)->createTargetMachine(Triple, CPU, Features, opt, RM, CM, |
| 152 | 167 | OL, JIT); |
src/zig_llvm.h+8-1| ... | ... | @@ -51,9 +51,16 @@ ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machi |
| 51 | 51 | bool is_small, bool time_report, |
| 52 | 52 | const char *asm_filename, const char *bin_filename, const char *llvm_ir_filename); |
| 53 | 53 | |
| 54 | ||
| 55 | enum ZigLLVMABIType { | |
| 56 | ZigLLVMABITypeDefault, // Target-specific (either soft or hard depending on triple, etc). | |
| 57 | ZigLLVMABITypeSoft, // Soft float. | |
| 58 | ZigLLVMABITypeHard // Hard float. | |
| 59 | }; | |
| 60 | ||
| 54 | 61 | ZIG_EXTERN_C LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, const char *Triple, |
| 55 | 62 | const char *CPU, const char *Features, LLVMCodeGenOptLevel Level, LLVMRelocMode Reloc, |
| 56 | LLVMCodeModel CodeModel, bool function_sections); | |
| 63 | LLVMCodeModel CodeModel, bool function_sections, ZigLLVMABIType float_abi, const char *abi_name); | |
| 57 | 64 | |
| 58 | 65 | ZIG_EXTERN_C LLVMTypeRef ZigLLVMTokenTypeInContext(LLVMContextRef context_ref); |
| 59 | 66 |
test/compile_errors.zig+305| ... | ... | @@ -6857,4 +6857,309 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { |
| 6857 | 6857 | "tmp.zig:7:32: error: destination type 'u16' has size 2 but source type '[]u8' has size 16", |
| 6858 | 6858 | "tmp.zig:7:37: note: referenced here", |
| 6859 | 6859 | }); |
| 6860 | ||
| 6861 | cases.add("comptime slice-sentinel is out of bounds (unterminated)", | |
| 6862 | \\export fn foo_array() void { | |
| 6863 | \\ comptime { | |
| 6864 | \\ var target = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6865 | \\ const slice = target[0..14 :0]; | |
| 6866 | \\ } | |
| 6867 | \\} | |
| 6868 | \\export fn foo_ptr_array() void { | |
| 6869 | \\ comptime { | |
| 6870 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6871 | \\ var target = &buf; | |
| 6872 | \\ const slice = target[0..14 :0]; | |
| 6873 | \\ } | |
| 6874 | \\} | |
| 6875 | \\export fn foo_vector_ConstPtrSpecialBaseArray() void { | |
| 6876 | \\ comptime { | |
| 6877 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6878 | \\ var target: [*]u8 = &buf; | |
| 6879 | \\ const slice = target[0..14 :0]; | |
| 6880 | \\ } | |
| 6881 | \\} | |
| 6882 | \\export fn foo_vector_ConstPtrSpecialRef() void { | |
| 6883 | \\ comptime { | |
| 6884 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6885 | \\ var target: [*]u8 = @ptrCast([*]u8, &buf); | |
| 6886 | \\ const slice = target[0..14 :0]; | |
| 6887 | \\ } | |
| 6888 | \\} | |
| 6889 | \\export fn foo_cvector_ConstPtrSpecialBaseArray() void { | |
| 6890 | \\ comptime { | |
| 6891 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6892 | \\ var target: [*c]u8 = &buf; | |
| 6893 | \\ const slice = target[0..14 :0]; | |
| 6894 | \\ } | |
| 6895 | \\} | |
| 6896 | \\export fn foo_cvector_ConstPtrSpecialRef() void { | |
| 6897 | \\ comptime { | |
| 6898 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6899 | \\ var target: [*c]u8 = @ptrCast([*c]u8, &buf); | |
| 6900 | \\ const slice = target[0..14 :0]; | |
| 6901 | \\ } | |
| 6902 | \\} | |
| 6903 | \\export fn foo_slice() void { | |
| 6904 | \\ comptime { | |
| 6905 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6906 | \\ var target: []u8 = &buf; | |
| 6907 | \\ const slice = target[0..14 :0]; | |
| 6908 | \\ } | |
| 6909 | \\} | |
| 6910 | , &[_][]const u8{ | |
| 6911 | ":4:29: error: slice-sentinel is out of bounds", | |
| 6912 | ":11:29: error: slice-sentinel is out of bounds", | |
| 6913 | ":18:29: error: slice-sentinel is out of bounds", | |
| 6914 | ":25:29: error: slice-sentinel is out of bounds", | |
| 6915 | ":32:29: error: slice-sentinel is out of bounds", | |
| 6916 | ":39:29: error: slice-sentinel is out of bounds", | |
| 6917 | ":46:29: error: slice-sentinel is out of bounds", | |
| 6918 | }); | |
| 6919 | ||
| 6920 | cases.add("comptime slice-sentinel is out of bounds (terminated)", | |
| 6921 | \\export fn foo_array() void { | |
| 6922 | \\ comptime { | |
| 6923 | \\ var target = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6924 | \\ const slice = target[0..15 :1]; | |
| 6925 | \\ } | |
| 6926 | \\} | |
| 6927 | \\export fn foo_ptr_array() void { | |
| 6928 | \\ comptime { | |
| 6929 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6930 | \\ var target = &buf; | |
| 6931 | \\ const slice = target[0..15 :0]; | |
| 6932 | \\ } | |
| 6933 | \\} | |
| 6934 | \\export fn foo_vector_ConstPtrSpecialBaseArray() void { | |
| 6935 | \\ comptime { | |
| 6936 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6937 | \\ var target: [*]u8 = &buf; | |
| 6938 | \\ const slice = target[0..15 :0]; | |
| 6939 | \\ } | |
| 6940 | \\} | |
| 6941 | \\export fn foo_vector_ConstPtrSpecialRef() void { | |
| 6942 | \\ comptime { | |
| 6943 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6944 | \\ var target: [*]u8 = @ptrCast([*]u8, &buf); | |
| 6945 | \\ const slice = target[0..15 :0]; | |
| 6946 | \\ } | |
| 6947 | \\} | |
| 6948 | \\export fn foo_cvector_ConstPtrSpecialBaseArray() void { | |
| 6949 | \\ comptime { | |
| 6950 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6951 | \\ var target: [*c]u8 = &buf; | |
| 6952 | \\ const slice = target[0..15 :0]; | |
| 6953 | \\ } | |
| 6954 | \\} | |
| 6955 | \\export fn foo_cvector_ConstPtrSpecialRef() void { | |
| 6956 | \\ comptime { | |
| 6957 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6958 | \\ var target: [*c]u8 = @ptrCast([*c]u8, &buf); | |
| 6959 | \\ const slice = target[0..15 :0]; | |
| 6960 | \\ } | |
| 6961 | \\} | |
| 6962 | \\export fn foo_slice() void { | |
| 6963 | \\ comptime { | |
| 6964 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6965 | \\ var target: []u8 = &buf; | |
| 6966 | \\ const slice = target[0..15 :0]; | |
| 6967 | \\ } | |
| 6968 | \\} | |
| 6969 | , &[_][]const u8{ | |
| 6970 | ":4:29: error: out of bounds slice", | |
| 6971 | ":11:29: error: out of bounds slice", | |
| 6972 | ":18:29: error: out of bounds slice", | |
| 6973 | ":25:29: error: out of bounds slice", | |
| 6974 | ":32:29: error: out of bounds slice", | |
| 6975 | ":39:29: error: out of bounds slice", | |
| 6976 | ":46:29: error: out of bounds slice", | |
| 6977 | }); | |
| 6978 | ||
| 6979 | cases.add("comptime slice-sentinel does not match memory at target index (unterminated)", | |
| 6980 | \\export fn foo_array() void { | |
| 6981 | \\ comptime { | |
| 6982 | \\ var target = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6983 | \\ const slice = target[0..3 :0]; | |
| 6984 | \\ } | |
| 6985 | \\} | |
| 6986 | \\export fn foo_ptr_array() void { | |
| 6987 | \\ comptime { | |
| 6988 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6989 | \\ var target = &buf; | |
| 6990 | \\ const slice = target[0..3 :0]; | |
| 6991 | \\ } | |
| 6992 | \\} | |
| 6993 | \\export fn foo_vector_ConstPtrSpecialBaseArray() void { | |
| 6994 | \\ comptime { | |
| 6995 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 6996 | \\ var target: [*]u8 = &buf; | |
| 6997 | \\ const slice = target[0..3 :0]; | |
| 6998 | \\ } | |
| 6999 | \\} | |
| 7000 | \\export fn foo_vector_ConstPtrSpecialRef() void { | |
| 7001 | \\ comptime { | |
| 7002 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7003 | \\ var target: [*]u8 = @ptrCast([*]u8, &buf); | |
| 7004 | \\ const slice = target[0..3 :0]; | |
| 7005 | \\ } | |
| 7006 | \\} | |
| 7007 | \\export fn foo_cvector_ConstPtrSpecialBaseArray() void { | |
| 7008 | \\ comptime { | |
| 7009 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7010 | \\ var target: [*c]u8 = &buf; | |
| 7011 | \\ const slice = target[0..3 :0]; | |
| 7012 | \\ } | |
| 7013 | \\} | |
| 7014 | \\export fn foo_cvector_ConstPtrSpecialRef() void { | |
| 7015 | \\ comptime { | |
| 7016 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7017 | \\ var target: [*c]u8 = @ptrCast([*c]u8, &buf); | |
| 7018 | \\ const slice = target[0..3 :0]; | |
| 7019 | \\ } | |
| 7020 | \\} | |
| 7021 | \\export fn foo_slice() void { | |
| 7022 | \\ comptime { | |
| 7023 | \\ var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7024 | \\ var target: []u8 = &buf; | |
| 7025 | \\ const slice = target[0..3 :0]; | |
| 7026 | \\ } | |
| 7027 | \\} | |
| 7028 | , &[_][]const u8{ | |
| 7029 | ":4:29: error: slice-sentinel does not match memory at target index", | |
| 7030 | ":11:29: error: slice-sentinel does not match memory at target index", | |
| 7031 | ":18:29: error: slice-sentinel does not match memory at target index", | |
| 7032 | ":25:29: error: slice-sentinel does not match memory at target index", | |
| 7033 | ":32:29: error: slice-sentinel does not match memory at target index", | |
| 7034 | ":39:29: error: slice-sentinel does not match memory at target index", | |
| 7035 | ":46:29: error: slice-sentinel does not match memory at target index", | |
| 7036 | }); | |
| 7037 | ||
| 7038 | cases.add("comptime slice-sentinel does not match memory at target index (terminated)", | |
| 7039 | \\export fn foo_array() void { | |
| 7040 | \\ comptime { | |
| 7041 | \\ var target = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7042 | \\ const slice = target[0..3 :0]; | |
| 7043 | \\ } | |
| 7044 | \\} | |
| 7045 | \\export fn foo_ptr_array() void { | |
| 7046 | \\ comptime { | |
| 7047 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7048 | \\ var target = &buf; | |
| 7049 | \\ const slice = target[0..3 :0]; | |
| 7050 | \\ } | |
| 7051 | \\} | |
| 7052 | \\export fn foo_vector_ConstPtrSpecialBaseArray() void { | |
| 7053 | \\ comptime { | |
| 7054 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7055 | \\ var target: [*]u8 = &buf; | |
| 7056 | \\ const slice = target[0..3 :0]; | |
| 7057 | \\ } | |
| 7058 | \\} | |
| 7059 | \\export fn foo_vector_ConstPtrSpecialRef() void { | |
| 7060 | \\ comptime { | |
| 7061 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7062 | \\ var target: [*]u8 = @ptrCast([*]u8, &buf); | |
| 7063 | \\ const slice = target[0..3 :0]; | |
| 7064 | \\ } | |
| 7065 | \\} | |
| 7066 | \\export fn foo_cvector_ConstPtrSpecialBaseArray() void { | |
| 7067 | \\ comptime { | |
| 7068 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7069 | \\ var target: [*c]u8 = &buf; | |
| 7070 | \\ const slice = target[0..3 :0]; | |
| 7071 | \\ } | |
| 7072 | \\} | |
| 7073 | \\export fn foo_cvector_ConstPtrSpecialRef() void { | |
| 7074 | \\ comptime { | |
| 7075 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7076 | \\ var target: [*c]u8 = @ptrCast([*c]u8, &buf); | |
| 7077 | \\ const slice = target[0..3 :0]; | |
| 7078 | \\ } | |
| 7079 | \\} | |
| 7080 | \\export fn foo_slice() void { | |
| 7081 | \\ comptime { | |
| 7082 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7083 | \\ var target: []u8 = &buf; | |
| 7084 | \\ const slice = target[0..3 :0]; | |
| 7085 | \\ } | |
| 7086 | \\} | |
| 7087 | , &[_][]const u8{ | |
| 7088 | ":4:29: error: slice-sentinel does not match memory at target index", | |
| 7089 | ":11:29: error: slice-sentinel does not match memory at target index", | |
| 7090 | ":18:29: error: slice-sentinel does not match memory at target index", | |
| 7091 | ":25:29: error: slice-sentinel does not match memory at target index", | |
| 7092 | ":32:29: error: slice-sentinel does not match memory at target index", | |
| 7093 | ":39:29: error: slice-sentinel does not match memory at target index", | |
| 7094 | ":46:29: error: slice-sentinel does not match memory at target index", | |
| 7095 | }); | |
| 7096 | ||
| 7097 | cases.add("comptime slice-sentinel does not match target-sentinel", | |
| 7098 | \\export fn foo_array() void { | |
| 7099 | \\ comptime { | |
| 7100 | \\ var target = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7101 | \\ const slice = target[0..14 :255]; | |
| 7102 | \\ } | |
| 7103 | \\} | |
| 7104 | \\export fn foo_ptr_array() void { | |
| 7105 | \\ comptime { | |
| 7106 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7107 | \\ var target = &buf; | |
| 7108 | \\ const slice = target[0..14 :255]; | |
| 7109 | \\ } | |
| 7110 | \\} | |
| 7111 | \\export fn foo_vector_ConstPtrSpecialBaseArray() void { | |
| 7112 | \\ comptime { | |
| 7113 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7114 | \\ var target: [*]u8 = &buf; | |
| 7115 | \\ const slice = target[0..14 :255]; | |
| 7116 | \\ } | |
| 7117 | \\} | |
| 7118 | \\export fn foo_vector_ConstPtrSpecialRef() void { | |
| 7119 | \\ comptime { | |
| 7120 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7121 | \\ var target: [*]u8 = @ptrCast([*]u8, &buf); | |
| 7122 | \\ const slice = target[0..14 :255]; | |
| 7123 | \\ } | |
| 7124 | \\} | |
| 7125 | \\export fn foo_cvector_ConstPtrSpecialBaseArray() void { | |
| 7126 | \\ comptime { | |
| 7127 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7128 | \\ var target: [*c]u8 = &buf; | |
| 7129 | \\ const slice = target[0..14 :255]; | |
| 7130 | \\ } | |
| 7131 | \\} | |
| 7132 | \\export fn foo_cvector_ConstPtrSpecialRef() void { | |
| 7133 | \\ comptime { | |
| 7134 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7135 | \\ var target: [*c]u8 = @ptrCast([*c]u8, &buf); | |
| 7136 | \\ const slice = target[0..14 :255]; | |
| 7137 | \\ } | |
| 7138 | \\} | |
| 7139 | \\export fn foo_slice() void { | |
| 7140 | \\ comptime { | |
| 7141 | \\ var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 7142 | \\ var target: []u8 = &buf; | |
| 7143 | \\ const slice = target[0..14 :255]; | |
| 7144 | \\ } | |
| 7145 | \\} | |
| 7146 | , &[_][]const u8{ | |
| 7147 | ":4:29: error: slice-sentinel does not match target-sentinel", | |
| 7148 | ":11:29: error: slice-sentinel does not match target-sentinel", | |
| 7149 | ":18:29: error: slice-sentinel does not match target-sentinel", | |
| 7150 | ":25:29: error: slice-sentinel does not match target-sentinel", | |
| 7151 | ":32:29: error: slice-sentinel does not match target-sentinel", | |
| 7152 | ":39:29: error: slice-sentinel does not match target-sentinel", | |
| 7153 | ":46:29: error: slice-sentinel does not match target-sentinel", | |
| 7154 | }); | |
| 7155 | ||
| 7156 | cases.add("issue #4207: coerce from non-terminated-slice to terminated-pointer", | |
| 7157 | \\export fn foo() [*:0]const u8 { | |
| 7158 | \\ var buffer: [64]u8 = undefined; | |
| 7159 | \\ return buffer[0..]; | |
| 7160 | \\} | |
| 7161 | , &[_][]const u8{ | |
| 7162 | ":3:18: error: expected type '[*:0]const u8', found '*[64]u8'", | |
| 7163 | ":3:18: note: destination pointer requires a terminating '0' sentinel", | |
| 7164 | }); | |
| 6860 | 7165 | } |
test/runtime_safety.zig+43| ... | ... | @@ -505,6 +505,21 @@ pub fn addCases(cases: *tests.CompareOutputContext) void { |
| 505 | 505 | \\} |
| 506 | 506 | ); |
| 507 | 507 | |
| 508 | cases.addRuntimeSafety("signed integer division overflow - vectors", | |
| 509 | \\pub fn panic(message: []const u8, stack_trace: ?*@import("builtin").StackTrace) noreturn { | |
| 510 | \\ @import("std").os.exit(126); | |
| 511 | \\} | |
| 512 | \\pub fn main() !void { | |
| 513 | \\ var a: @Vector(4, i16) = [_]i16{ 1, 2, -32768, 4 }; | |
| 514 | \\ var b: @Vector(4, i16) = [_]i16{ 1, 2, -1, 4 }; | |
| 515 | \\ const x = div(a, b); | |
| 516 | \\ if (x[2] == 32767) return error.Whatever; | |
| 517 | \\} | |
| 518 | \\fn div(a: @Vector(4, i16), b: @Vector(4, i16)) @Vector(4, i16) { | |
| 519 | \\ return @divTrunc(a, b); | |
| 520 | \\} | |
| 521 | ); | |
| 522 | ||
| 508 | 523 | cases.addRuntimeSafety("signed shift left overflow", |
| 509 | 524 | \\pub fn panic(message: []const u8, stack_trace: ?*@import("builtin").StackTrace) noreturn { |
| 510 | 525 | \\ @import("std").os.exit(126); |
| ... | ... | @@ -569,6 +584,20 @@ pub fn addCases(cases: *tests.CompareOutputContext) void { |
| 569 | 584 | \\} |
| 570 | 585 | ); |
| 571 | 586 | |
| 587 | cases.addRuntimeSafety("integer division by zero - vectors", | |
| 588 | \\pub fn panic(message: []const u8, stack_trace: ?*@import("builtin").StackTrace) noreturn { | |
| 589 | \\ @import("std").os.exit(126); | |
| 590 | \\} | |
| 591 | \\pub fn main() void { | |
| 592 | \\ var a: @Vector(4, i32) = [4]i32{111, 222, 333, 444}; | |
| 593 | \\ var b: @Vector(4, i32) = [4]i32{111, 0, 333, 444}; | |
| 594 | \\ const x = div0(a, b); | |
| 595 | \\} | |
| 596 | \\fn div0(a: @Vector(4, i32), b: @Vector(4, i32)) @Vector(4, i32) { | |
| 597 | \\ return @divTrunc(a, b); | |
| 598 | \\} | |
| 599 | ); | |
| 600 | ||
| 572 | 601 | cases.addRuntimeSafety("exact division failure", |
| 573 | 602 | \\pub fn panic(message: []const u8, stack_trace: ?*@import("builtin").StackTrace) noreturn { |
| 574 | 603 | \\ @import("std").os.exit(126); |
| ... | ... | @@ -582,6 +611,20 @@ pub fn addCases(cases: *tests.CompareOutputContext) void { |
| 582 | 611 | \\} |
| 583 | 612 | ); |
| 584 | 613 | |
| 614 | cases.addRuntimeSafety("exact division failure - vectors", | |
| 615 | \\pub fn panic(message: []const u8, stack_trace: ?*@import("builtin").StackTrace) noreturn { | |
| 616 | \\ @import("std").os.exit(126); | |
| 617 | \\} | |
| 618 | \\pub fn main() !void { | |
| 619 | \\ var a: @Vector(4, i32) = [4]i32{111, 222, 333, 444}; | |
| 620 | \\ var b: @Vector(4, i32) = [4]i32{111, 222, 333, 441}; | |
| 621 | \\ const x = divExact(a, b); | |
| 622 | \\} | |
| 623 | \\fn divExact(a: @Vector(4, i32), b: @Vector(4, i32)) @Vector(4, i32) { | |
| 624 | \\ return @divExact(a, b); | |
| 625 | \\} | |
| 626 | ); | |
| 627 | ||
| 585 | 628 | cases.addRuntimeSafety("cast []u8 to bigger slice of wrong size", |
| 586 | 629 | \\const std = @import("std"); |
| 587 | 630 | \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn { |
test/stage1/behavior.zig+1| ... | ... | @@ -96,6 +96,7 @@ comptime { |
| 96 | 96 | _ = @import("behavior/shuffle.zig"); |
| 97 | 97 | _ = @import("behavior/sizeof_and_typeof.zig"); |
| 98 | 98 | _ = @import("behavior/slice.zig"); |
| 99 | _ = @import("behavior/slice_sentinel_comptime.zig"); | |
| 99 | 100 | _ = @import("behavior/struct.zig"); |
| 100 | 101 | _ = @import("behavior/struct_contains_null_ptr_itself.zig"); |
| 101 | 102 | _ = @import("behavior/struct_contains_slice_of_itself.zig"); |
test/stage1/behavior/slice_sentinel_comptime.zig created+199| ... | ... | @@ -0,0 +1,199 @@ |
| 1 | test "comptime slice-sentinel in bounds (unterminated)" { | |
| 2 | // array | |
| 3 | comptime { | |
| 4 | var target = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 5 | const slice = target[0..3 :'d']; | |
| 6 | } | |
| 7 | ||
| 8 | // ptr_array | |
| 9 | comptime { | |
| 10 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 11 | var target = &buf; | |
| 12 | const slice = target[0..3 :'d']; | |
| 13 | } | |
| 14 | ||
| 15 | // vector_ConstPtrSpecialBaseArray | |
| 16 | comptime { | |
| 17 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 18 | var target: [*]u8 = &buf; | |
| 19 | const slice = target[0..3 :'d']; | |
| 20 | } | |
| 21 | ||
| 22 | // vector_ConstPtrSpecialRef | |
| 23 | comptime { | |
| 24 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 25 | var target: [*]u8 = @ptrCast([*]u8, &buf); | |
| 26 | const slice = target[0..3 :'d']; | |
| 27 | } | |
| 28 | ||
| 29 | // cvector_ConstPtrSpecialBaseArray | |
| 30 | comptime { | |
| 31 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 32 | var target: [*c]u8 = &buf; | |
| 33 | const slice = target[0..3 :'d']; | |
| 34 | } | |
| 35 | ||
| 36 | // cvector_ConstPtrSpecialRef | |
| 37 | comptime { | |
| 38 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 39 | var target: [*c]u8 = @ptrCast([*c]u8, &buf); | |
| 40 | const slice = target[0..3 :'d']; | |
| 41 | } | |
| 42 | ||
| 43 | // slice | |
| 44 | comptime { | |
| 45 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 46 | var target: []u8 = &buf; | |
| 47 | const slice = target[0..3 :'d']; | |
| 48 | } | |
| 49 | } | |
| 50 | ||
| 51 | test "comptime slice-sentinel in bounds (end,unterminated)" { | |
| 52 | // array | |
| 53 | comptime { | |
| 54 | var target = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10; | |
| 55 | const slice = target[0..13 :0xff]; | |
| 56 | } | |
| 57 | ||
| 58 | // ptr_array | |
| 59 | comptime { | |
| 60 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10; | |
| 61 | var target = &buf; | |
| 62 | const slice = target[0..13 :0xff]; | |
| 63 | } | |
| 64 | ||
| 65 | // vector_ConstPtrSpecialBaseArray | |
| 66 | comptime { | |
| 67 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10; | |
| 68 | var target: [*]u8 = &buf; | |
| 69 | const slice = target[0..13 :0xff]; | |
| 70 | } | |
| 71 | ||
| 72 | // vector_ConstPtrSpecialRef | |
| 73 | comptime { | |
| 74 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10; | |
| 75 | var target: [*]u8 = @ptrCast([*]u8, &buf); | |
| 76 | const slice = target[0..13 :0xff]; | |
| 77 | } | |
| 78 | ||
| 79 | // cvector_ConstPtrSpecialBaseArray | |
| 80 | comptime { | |
| 81 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10; | |
| 82 | var target: [*c]u8 = &buf; | |
| 83 | const slice = target[0..13 :0xff]; | |
| 84 | } | |
| 85 | ||
| 86 | // cvector_ConstPtrSpecialRef | |
| 87 | comptime { | |
| 88 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10; | |
| 89 | var target: [*c]u8 = @ptrCast([*c]u8, &buf); | |
| 90 | const slice = target[0..13 :0xff]; | |
| 91 | } | |
| 92 | ||
| 93 | // slice | |
| 94 | comptime { | |
| 95 | var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10; | |
| 96 | var target: []u8 = &buf; | |
| 97 | const slice = target[0..13 :0xff]; | |
| 98 | } | |
| 99 | } | |
| 100 | ||
| 101 | test "comptime slice-sentinel in bounds (terminated)" { | |
| 102 | // array | |
| 103 | comptime { | |
| 104 | var target = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 105 | const slice = target[0..3 :'d']; | |
| 106 | } | |
| 107 | ||
| 108 | // ptr_array | |
| 109 | comptime { | |
| 110 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 111 | var target = &buf; | |
| 112 | const slice = target[0..3 :'d']; | |
| 113 | } | |
| 114 | ||
| 115 | // vector_ConstPtrSpecialBaseArray | |
| 116 | comptime { | |
| 117 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 118 | var target: [*]u8 = &buf; | |
| 119 | const slice = target[0..3 :'d']; | |
| 120 | } | |
| 121 | ||
| 122 | // vector_ConstPtrSpecialRef | |
| 123 | comptime { | |
| 124 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 125 | var target: [*]u8 = @ptrCast([*]u8, &buf); | |
| 126 | const slice = target[0..3 :'d']; | |
| 127 | } | |
| 128 | ||
| 129 | // cvector_ConstPtrSpecialBaseArray | |
| 130 | comptime { | |
| 131 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 132 | var target: [*c]u8 = &buf; | |
| 133 | const slice = target[0..3 :'d']; | |
| 134 | } | |
| 135 | ||
| 136 | // cvector_ConstPtrSpecialRef | |
| 137 | comptime { | |
| 138 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 139 | var target: [*c]u8 = @ptrCast([*c]u8, &buf); | |
| 140 | const slice = target[0..3 :'d']; | |
| 141 | } | |
| 142 | ||
| 143 | // slice | |
| 144 | comptime { | |
| 145 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 146 | var target: []u8 = &buf; | |
| 147 | const slice = target[0..3 :'d']; | |
| 148 | } | |
| 149 | } | |
| 150 | ||
| 151 | test "comptime slice-sentinel in bounds (on target sentinel)" { | |
| 152 | // array | |
| 153 | comptime { | |
| 154 | var target = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 155 | const slice = target[0..14 :0]; | |
| 156 | } | |
| 157 | ||
| 158 | // ptr_array | |
| 159 | comptime { | |
| 160 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 161 | var target = &buf; | |
| 162 | const slice = target[0..14 :0]; | |
| 163 | } | |
| 164 | ||
| 165 | // vector_ConstPtrSpecialBaseArray | |
| 166 | comptime { | |
| 167 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 168 | var target: [*]u8 = &buf; | |
| 169 | const slice = target[0..14 :0]; | |
| 170 | } | |
| 171 | ||
| 172 | // vector_ConstPtrSpecialRef | |
| 173 | comptime { | |
| 174 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 175 | var target: [*]u8 = @ptrCast([*]u8, &buf); | |
| 176 | const slice = target[0..14 :0]; | |
| 177 | } | |
| 178 | ||
| 179 | // cvector_ConstPtrSpecialBaseArray | |
| 180 | comptime { | |
| 181 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 182 | var target: [*c]u8 = &buf; | |
| 183 | const slice = target[0..14 :0]; | |
| 184 | } | |
| 185 | ||
| 186 | // cvector_ConstPtrSpecialRef | |
| 187 | comptime { | |
| 188 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 189 | var target: [*c]u8 = @ptrCast([*c]u8, &buf); | |
| 190 | const slice = target[0..14 :0]; | |
| 191 | } | |
| 192 | ||
| 193 | // slice | |
| 194 | comptime { | |
| 195 | var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10; | |
| 196 | var target: []u8 = &buf; | |
| 197 | const slice = target[0..14 :0]; | |
| 198 | } | |
| 199 | } |
test/stage1/behavior/tuple.zig+43-4| ... | ... | @@ -1,5 +1,7 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | const expect = std.testing.expect; | |
| 2 | const testing = std.testing; | |
| 3 | const expect = testing.expect; | |
| 4 | const expectEqual = testing.expectEqual; | |
| 3 | 5 | |
| 4 | 6 | test "tuple concatenation" { |
| 5 | 7 | const S = struct { |
| ... | ... | @@ -9,8 +11,31 @@ test "tuple concatenation" { |
| 9 | 11 | var x = .{a}; |
| 10 | 12 | var y = .{b}; |
| 11 | 13 | var c = x ++ y; |
| 12 | expect(c[0] == 1); | |
| 13 | expect(c[1] == 2); | |
| 14 | expectEqual(@as(i32, 1), c[0]); | |
| 15 | expectEqual(@as(i32, 2), c[1]); | |
| 16 | } | |
| 17 | }; | |
| 18 | S.doTheTest(); | |
| 19 | comptime S.doTheTest(); | |
| 20 | } | |
| 21 | ||
| 22 | test "tuple multiplication" { | |
| 23 | const S = struct { | |
| 24 | fn doTheTest() void { | |
| 25 | { | |
| 26 | const t = .{} ** 4; | |
| 27 | expectEqual(0, @typeInfo(@TypeOf(t)).Struct.fields.len); | |
| 28 | } | |
| 29 | { | |
| 30 | const t = .{'a'} ** 4; | |
| 31 | expectEqual(4, @typeInfo(@TypeOf(t)).Struct.fields.len); | |
| 32 | inline for (t) |x| expectEqual('a', x); | |
| 33 | } | |
| 34 | { | |
| 35 | const t = .{ 1, 2, 3 } ** 4; | |
| 36 | expectEqual(12, @typeInfo(@TypeOf(t)).Struct.fields.len); | |
| 37 | inline for (t) |x, i| expectEqual(1 + i % 3, x); | |
| 38 | } | |
| 14 | 39 | } |
| 15 | 40 | }; |
| 16 | 41 | S.doTheTest(); |
| ... | ... | @@ -36,7 +61,7 @@ test "tuple concatenation" { |
| 36 | 61 | consume_tuple(.{} ++ .{}, 0); |
| 37 | 62 | consume_tuple(.{0} ++ .{}, 1); |
| 38 | 63 | consume_tuple(.{0} ++ .{1}, 2); |
| 39 | consume_tuple(.{0, 1, 2} ++ .{u8, 1, noreturn}, 6); | |
| 64 | consume_tuple(.{ 0, 1, 2 } ++ .{ u8, 1, noreturn }, 6); | |
| 40 | 65 | consume_tuple(t2 ++ t1, 1); |
| 41 | 66 | consume_tuple(t1 ++ t2, 1); |
| 42 | 67 | consume_tuple(t2 ++ t2, 2); |
| ... | ... | @@ -54,3 +79,17 @@ test "tuple concatenation" { |
| 54 | 79 | T.doTheTest(); |
| 55 | 80 | comptime T.doTheTest(); |
| 56 | 81 | } |
| 82 | ||
| 83 | test "pass tuple to comptime var parameter" { | |
| 84 | const S = struct { | |
| 85 | fn Foo(comptime args: var) void { | |
| 86 | expect(args[0] == 1); | |
| 87 | } | |
| 88 | ||
| 89 | fn doTheTest() void { | |
| 90 | Foo(.{1}); | |
| 91 | } | |
| 92 | }; | |
| 93 | S.doTheTest(); | |
| 94 | comptime S.doTheTest(); | |
| 95 | } |
test/stage1/behavior/vector.zig+195| ... | ... | @@ -1,5 +1,6 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | const mem = std.mem; |
| 3 | const math = std.math; | |
| 3 | 4 | const expect = std.testing.expect; |
| 4 | 5 | const expectEqual = std.testing.expectEqual; |
| 5 | 6 | |
| ... | ... | @@ -276,3 +277,197 @@ test "vector comparison operators" { |
| 276 | 277 | S.doTheTest(); |
| 277 | 278 | comptime S.doTheTest(); |
| 278 | 279 | } |
| 280 | ||
| 281 | test "vector division operators" { | |
| 282 | const S = struct { | |
| 283 | fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) void { | |
| 284 | if (!comptime std.meta.trait.isSignedInt(T)) { | |
| 285 | const d0 = x / y; | |
| 286 | for (@as([4]T, d0)) |v, i| { | |
| 287 | expectEqual(x[i] / y[i], v); | |
| 288 | } | |
| 289 | } | |
| 290 | const d1 = @divExact(x, y); | |
| 291 | for (@as([4]T, d1)) |v, i| { | |
| 292 | expectEqual(@divExact(x[i], y[i]), v); | |
| 293 | } | |
| 294 | const d2 = @divFloor(x, y); | |
| 295 | for (@as([4]T, d2)) |v, i| { | |
| 296 | expectEqual(@divFloor(x[i], y[i]), v); | |
| 297 | } | |
| 298 | const d3 = @divTrunc(x, y); | |
| 299 | for (@as([4]T, d3)) |v, i| { | |
| 300 | expectEqual(@divTrunc(x[i], y[i]), v); | |
| 301 | } | |
| 302 | } | |
| 303 | ||
| 304 | fn doTheTestMod(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) void { | |
| 305 | if ((!comptime std.meta.trait.isSignedInt(T)) and @typeInfo(T) != .Float) { | |
| 306 | const r0 = x % y; | |
| 307 | for (@as([4]T, r0)) |v, i| { | |
| 308 | expectEqual(x[i] % y[i], v); | |
| 309 | } | |
| 310 | } | |
| 311 | const r1 = @mod(x, y); | |
| 312 | for (@as([4]T, r1)) |v, i| { | |
| 313 | expectEqual(@mod(x[i], y[i]), v); | |
| 314 | } | |
| 315 | const r2 = @rem(x, y); | |
| 316 | for (@as([4]T, r2)) |v, i| { | |
| 317 | expectEqual(@rem(x[i], y[i]), v); | |
| 318 | } | |
| 319 | } | |
| 320 | ||
| 321 | fn doTheTest() void { | |
| 322 | // https://github.com/ziglang/zig/issues/4952 | |
| 323 | if (std.builtin.os.tag != .windows) { | |
| 324 | doTheTestDiv(f16, [4]f16{ 4.0, -4.0, 4.0, -4.0 }, [4]f16{ 1.0, 2.0, -1.0, -2.0 }); | |
| 325 | } | |
| 326 | ||
| 327 | doTheTestDiv(f32, [4]f32{ 4.0, -4.0, 4.0, -4.0 }, [4]f32{ 1.0, 2.0, -1.0, -2.0 }); | |
| 328 | doTheTestDiv(f64, [4]f64{ 4.0, -4.0, 4.0, -4.0 }, [4]f64{ 1.0, 2.0, -1.0, -2.0 }); | |
| 329 | ||
| 330 | // https://github.com/ziglang/zig/issues/4952 | |
| 331 | if (std.builtin.os.tag != .windows) { | |
| 332 | doTheTestMod(f16, [4]f16{ 4.0, -4.0, 4.0, -4.0 }, [4]f16{ 1.0, 2.0, 0.5, 3.0 }); | |
| 333 | } | |
| 334 | doTheTestMod(f32, [4]f32{ 4.0, -4.0, 4.0, -4.0 }, [4]f32{ 1.0, 2.0, 0.5, 3.0 }); | |
| 335 | doTheTestMod(f64, [4]f64{ 4.0, -4.0, 4.0, -4.0 }, [4]f64{ 1.0, 2.0, 0.5, 3.0 }); | |
| 336 | ||
| 337 | doTheTestDiv(i8, [4]i8{ 4, -4, 4, -4 }, [4]i8{ 1, 2, -1, -2 }); | |
| 338 | doTheTestDiv(i16, [4]i16{ 4, -4, 4, -4 }, [4]i16{ 1, 2, -1, -2 }); | |
| 339 | doTheTestDiv(i32, [4]i32{ 4, -4, 4, -4 }, [4]i32{ 1, 2, -1, -2 }); | |
| 340 | doTheTestDiv(i64, [4]i64{ 4, -4, 4, -4 }, [4]i64{ 1, 2, -1, -2 }); | |
| 341 | ||
| 342 | doTheTestMod(i8, [4]i8{ 4, -4, 4, -4 }, [4]i8{ 1, 2, 4, 8 }); | |
| 343 | doTheTestMod(i16, [4]i16{ 4, -4, 4, -4 }, [4]i16{ 1, 2, 4, 8 }); | |
| 344 | doTheTestMod(i32, [4]i32{ 4, -4, 4, -4 }, [4]i32{ 1, 2, 4, 8 }); | |
| 345 | doTheTestMod(i64, [4]i64{ 4, -4, 4, -4 }, [4]i64{ 1, 2, 4, 8 }); | |
| 346 | ||
| 347 | doTheTestDiv(u8, [4]u8{ 1, 2, 4, 8 }, [4]u8{ 1, 1, 2, 4 }); | |
| 348 | doTheTestDiv(u16, [4]u16{ 1, 2, 4, 8 }, [4]u16{ 1, 1, 2, 4 }); | |
| 349 | doTheTestDiv(u32, [4]u32{ 1, 2, 4, 8 }, [4]u32{ 1, 1, 2, 4 }); | |
| 350 | doTheTestDiv(u64, [4]u64{ 1, 2, 4, 8 }, [4]u64{ 1, 1, 2, 4 }); | |
| 351 | ||
| 352 | doTheTestMod(u8, [4]u8{ 1, 2, 4, 8 }, [4]u8{ 1, 1, 2, 4 }); | |
| 353 | doTheTestMod(u16, [4]u16{ 1, 2, 4, 8 }, [4]u16{ 1, 1, 2, 4 }); | |
| 354 | doTheTestMod(u32, [4]u32{ 1, 2, 4, 8 }, [4]u32{ 1, 1, 2, 4 }); | |
| 355 | doTheTestMod(u64, [4]u64{ 1, 2, 4, 8 }, [4]u64{ 1, 1, 2, 4 }); | |
| 356 | } | |
| 357 | }; | |
| 358 | ||
| 359 | S.doTheTest(); | |
| 360 | comptime S.doTheTest(); | |
| 361 | } | |
| 362 | ||
| 363 | test "vector bitwise not operator" { | |
| 364 | const S = struct { | |
| 365 | fn doTheTestNot(comptime T: type, x: @Vector(4, T)) void { | |
| 366 | var y = ~x; | |
| 367 | for (@as([4]T, y)) |v, i| { | |
| 368 | expectEqual(~x[i], v); | |
| 369 | } | |
| 370 | } | |
| 371 | fn doTheTest() void { | |
| 372 | doTheTestNot(u8, [_]u8{ 0, 2, 4, 255 }); | |
| 373 | doTheTestNot(u16, [_]u16{ 0, 2, 4, 255 }); | |
| 374 | doTheTestNot(u32, [_]u32{ 0, 2, 4, 255 }); | |
| 375 | doTheTestNot(u64, [_]u64{ 0, 2, 4, 255 }); | |
| 376 | ||
| 377 | doTheTestNot(u8, [_]u8{ 0, 2, 4, 255 }); | |
| 378 | doTheTestNot(u16, [_]u16{ 0, 2, 4, 255 }); | |
| 379 | doTheTestNot(u32, [_]u32{ 0, 2, 4, 255 }); | |
| 380 | doTheTestNot(u64, [_]u64{ 0, 2, 4, 255 }); | |
| 381 | } | |
| 382 | }; | |
| 383 | ||
| 384 | S.doTheTest(); | |
| 385 | comptime S.doTheTest(); | |
| 386 | } | |
| 387 | ||
| 388 | test "vector shift operators" { | |
| 389 | const S = struct { | |
| 390 | fn doTheTestShift(x: var, y: var) void { | |
| 391 | const N = @typeInfo(@TypeOf(x)).Array.len; | |
| 392 | const TX = @typeInfo(@TypeOf(x)).Array.child; | |
| 393 | const TY = @typeInfo(@TypeOf(y)).Array.child; | |
| 394 | ||
| 395 | var xv = @as(@Vector(N, TX), x); | |
| 396 | var yv = @as(@Vector(N, TY), y); | |
| 397 | ||
| 398 | var z0 = xv >> yv; | |
| 399 | for (@as([N]TX, z0)) |v, i| { | |
| 400 | expectEqual(x[i] >> y[i], v); | |
| 401 | } | |
| 402 | var z1 = xv << yv; | |
| 403 | for (@as([N]TX, z1)) |v, i| { | |
| 404 | expectEqual(x[i] << y[i], v); | |
| 405 | } | |
| 406 | } | |
| 407 | fn doTheTestShiftExact(x: var, y: var, dir: enum { Left, Right }) void { | |
| 408 | const N = @typeInfo(@TypeOf(x)).Array.len; | |
| 409 | const TX = @typeInfo(@TypeOf(x)).Array.child; | |
| 410 | const TY = @typeInfo(@TypeOf(y)).Array.child; | |
| 411 | ||
| 412 | var xv = @as(@Vector(N, TX), x); | |
| 413 | var yv = @as(@Vector(N, TY), y); | |
| 414 | ||
| 415 | var z = if (dir == .Left) @shlExact(xv, yv) else @shrExact(xv, yv); | |
| 416 | for (@as([N]TX, z)) |v, i| { | |
| 417 | const check = if (dir == .Left) x[i] << y[i] else x[i] >> y[i]; | |
| 418 | expectEqual(check, v); | |
| 419 | } | |
| 420 | } | |
| 421 | fn doTheTest() void { | |
| 422 | doTheTestShift([_]u8{ 0, 2, 4, math.maxInt(u8) }, [_]u3{ 2, 0, 2, 7 }); | |
| 423 | doTheTestShift([_]u16{ 0, 2, 4, math.maxInt(u16) }, [_]u4{ 2, 0, 2, 15 }); | |
| 424 | doTheTestShift([_]u24{ 0, 2, 4, math.maxInt(u24) }, [_]u5{ 2, 0, 2, 23 }); | |
| 425 | doTheTestShift([_]u32{ 0, 2, 4, math.maxInt(u32) }, [_]u5{ 2, 0, 2, 31 }); | |
| 426 | doTheTestShift([_]u64{ 0xfe, math.maxInt(u64) }, [_]u6{ 0, 63 }); | |
| 427 | ||
| 428 | doTheTestShift([_]i8{ 0, 2, 4, math.maxInt(i8) }, [_]u3{ 2, 0, 2, 7 }); | |
| 429 | doTheTestShift([_]i16{ 0, 2, 4, math.maxInt(i16) }, [_]u4{ 2, 0, 2, 7 }); | |
| 430 | doTheTestShift([_]i24{ 0, 2, 4, math.maxInt(i24) }, [_]u5{ 2, 0, 2, 7 }); | |
| 431 | doTheTestShift([_]i32{ 0, 2, 4, math.maxInt(i32) }, [_]u5{ 2, 0, 2, 7 }); | |
| 432 | doTheTestShift([_]i64{ 0xfe, math.maxInt(i64) }, [_]u6{ 0, 63 }); | |
| 433 | ||
| 434 | doTheTestShiftExact([_]u8{ 0, 1, 1 << 7, math.maxInt(u8) ^ 1 }, [_]u3{ 4, 0, 7, 1 }, .Right); | |
| 435 | doTheTestShiftExact([_]u16{ 0, 1, 1 << 15, math.maxInt(u16) ^ 1 }, [_]u4{ 4, 0, 15, 1 }, .Right); | |
| 436 | doTheTestShiftExact([_]u24{ 0, 1, 1 << 23, math.maxInt(u24) ^ 1 }, [_]u5{ 4, 0, 23, 1 }, .Right); | |
| 437 | doTheTestShiftExact([_]u32{ 0, 1, 1 << 31, math.maxInt(u32) ^ 1 }, [_]u5{ 4, 0, 31, 1 }, .Right); | |
| 438 | doTheTestShiftExact([_]u64{ 1 << 63, 1 }, [_]u6{ 63, 0 }, .Right); | |
| 439 | ||
| 440 | doTheTestShiftExact([_]u8{ 0, 1, 1, math.maxInt(u8) ^ (1 << 7) }, [_]u3{ 4, 0, 7, 1 }, .Left); | |
| 441 | doTheTestShiftExact([_]u16{ 0, 1, 1, math.maxInt(u16) ^ (1 << 15) }, [_]u4{ 4, 0, 15, 1 }, .Left); | |
| 442 | doTheTestShiftExact([_]u24{ 0, 1, 1, math.maxInt(u24) ^ (1 << 23) }, [_]u5{ 4, 0, 23, 1 }, .Left); | |
| 443 | doTheTestShiftExact([_]u32{ 0, 1, 1, math.maxInt(u32) ^ (1 << 31) }, [_]u5{ 4, 0, 31, 1 }, .Left); | |
| 444 | doTheTestShiftExact([_]u64{ 1 << 63, 1 }, [_]u6{ 0, 63 }, .Left); | |
| 445 | } | |
| 446 | }; | |
| 447 | ||
| 448 | switch (std.builtin.arch) { | |
| 449 | .i386, | |
| 450 | .aarch64, | |
| 451 | .aarch64_be, | |
| 452 | .aarch64_32, | |
| 453 | .arm, | |
| 454 | .armeb, | |
| 455 | .thumb, | |
| 456 | .thumbeb, | |
| 457 | .mips, | |
| 458 | .mipsel, | |
| 459 | .mips64, | |
| 460 | .mips64el, | |
| 461 | .riscv64, | |
| 462 | .sparcv9, | |
| 463 | => { | |
| 464 | // LLVM miscompiles on this architecture | |
| 465 | // https://github.com/ziglang/zig/issues/4951 | |
| 466 | return error.SkipZigTest; | |
| 467 | }, | |
| 468 | else => {}, | |
| 469 | } | |
| 470 | ||
| 471 | S.doTheTest(); | |
| 472 | comptime S.doTheTest(); | |
| 473 | } |
test/standalone/brace_expansion/main.zig+2-2| ... | ... | @@ -113,7 +113,7 @@ fn parse(tokens: *const ArrayList(Token), token_index: *usize) ParseError!Node { |
| 113 | 113 | |
| 114 | 114 | fn expandString(input: []const u8, output: *ArrayListSentineled(u8, 0)) !void { |
| 115 | 115 | const tokens = try tokenize(input); |
| 116 | if (tokens.len == 1) { | |
| 116 | if (tokens.items.len == 1) { | |
| 117 | 117 | return output.resize(0); |
| 118 | 118 | } |
| 119 | 119 | |
| ... | ... | @@ -142,7 +142,7 @@ fn expandString(input: []const u8, output: *ArrayListSentineled(u8, 0)) !void { |
| 142 | 142 | const ExpandNodeError = error{OutOfMemory}; |
| 143 | 143 | |
| 144 | 144 | fn expandNode(node: Node, output: *ArrayList(ArrayListSentineled(u8, 0))) ExpandNodeError!void { |
| 145 | assert(output.len == 0); | |
| 145 | assert(output.items.len == 0); | |
| 146 | 146 | switch (node) { |
| 147 | 147 | Node.Scalar => |scalar| { |
| 148 | 148 | try output.append(try ArrayListSentineled(u8, 0).init(global_allocator, scalar)); |
test/tests.zig+32-15| ... | ... | @@ -89,6 +89,15 @@ const test_targets = blk: { |
| 89 | 89 | }, |
| 90 | 90 | .link_libc = true, |
| 91 | 91 | }, |
| 92 | // https://github.com/ziglang/zig/issues/4926 | |
| 93 | //TestTarget{ | |
| 94 | // .target = .{ | |
| 95 | // .cpu_arch = .i386, | |
| 96 | // .os_tag = .linux, | |
| 97 | // .abi = .gnu, | |
| 98 | // }, | |
| 99 | // .link_libc = true, | |
| 100 | //}, | |
| 92 | 101 | |
| 93 | 102 | TestTarget{ |
| 94 | 103 | .target = .{ |
| ... | ... | @@ -127,7 +136,7 @@ const test_targets = blk: { |
| 127 | 136 | }) catch unreachable, |
| 128 | 137 | .link_libc = true, |
| 129 | 138 | }, |
| 130 | // TODO https://github.com/ziglang/zig/issues/3287 | |
| 139 | // https://github.com/ziglang/zig/issues/3287 | |
| 131 | 140 | //TestTarget{ |
| 132 | 141 | // .target = CrossTarget.parse(.{ |
| 133 | 142 | // .arch_os_abi = "arm-linux-gnueabihf", |
| ... | ... | @@ -151,6 +160,15 @@ const test_targets = blk: { |
| 151 | 160 | }, |
| 152 | 161 | .link_libc = true, |
| 153 | 162 | }, |
| 163 | // https://github.com/ziglang/zig/issues/4927 | |
| 164 | //TestTarget{ | |
| 165 | // .target = .{ | |
| 166 | // .cpu_arch = .mipsel, | |
| 167 | // .os_tag = .linux, | |
| 168 | // .abi = .gnu, | |
| 169 | // }, | |
| 170 | // .link_libc = true, | |
| 171 | //}, | |
| 154 | 172 | |
| 155 | 173 | TestTarget{ |
| 156 | 174 | .target = .{ |
| ... | ... | @@ -160,15 +178,14 @@ const test_targets = blk: { |
| 160 | 178 | }, |
| 161 | 179 | }, |
| 162 | 180 | |
| 163 | // https://github.com/ziglang/zig/issues/4863 | |
| 164 | //TestTarget{ | |
| 165 | // .target = .{ | |
| 166 | // .cpu_arch = .riscv64, | |
| 167 | // .os_tag = .linux, | |
| 168 | // .abi = .musl, | |
| 169 | // }, | |
| 170 | // .link_libc = true, | |
| 171 | //}, | |
| 181 | TestTarget{ | |
| 182 | .target = .{ | |
| 183 | .cpu_arch = .riscv64, | |
| 184 | .os_tag = .linux, | |
| 185 | .abi = .musl, | |
| 186 | }, | |
| 187 | .link_libc = true, | |
| 188 | }, | |
| 172 | 189 | |
| 173 | 190 | // https://github.com/ziglang/zig/issues/3340 |
| 174 | 191 | //TestTarget{ |
| ... | ... | @@ -186,7 +203,7 @@ const test_targets = blk: { |
| 186 | 203 | .os_tag = .macosx, |
| 187 | 204 | .abi = .gnu, |
| 188 | 205 | }, |
| 189 | // TODO https://github.com/ziglang/zig/issues/3295 | |
| 206 | // https://github.com/ziglang/zig/issues/3295 | |
| 190 | 207 | .disable_native = true, |
| 191 | 208 | }, |
| 192 | 209 | |
| ... | ... | @@ -640,7 +657,7 @@ pub const StackTracesContext = struct { |
| 640 | 657 | var buf = ArrayList(u8).init(b.allocator); |
| 641 | 658 | defer buf.deinit(); |
| 642 | 659 | if (stderr.len != 0 and stderr[stderr.len - 1] == '\n') stderr = stderr[0 .. stderr.len - 1]; |
| 643 | var it = mem.separate(stderr, "\n"); | |
| 660 | var it = mem.split(stderr, "\n"); | |
| 644 | 661 | process_lines: while (it.next()) |line| { |
| 645 | 662 | if (line.len == 0) continue; |
| 646 | 663 | const delims = [_][]const u8{ ":", ":", ":", " in " }; |
| ... | ... | @@ -733,7 +750,7 @@ pub const CompileErrorContext = struct { |
| 733 | 750 | const source_file = "tmp.zig"; |
| 734 | 751 | |
| 735 | 752 | fn init(input: []const u8) ErrLineIter { |
| 736 | return ErrLineIter{ .lines = mem.separate(input, "\n") }; | |
| 753 | return ErrLineIter{ .lines = mem.split(input, "\n") }; | |
| 737 | 754 | } |
| 738 | 755 | |
| 739 | 756 | fn next(self: *ErrLineIter) ?[]const u8 { |
| ... | ... | @@ -862,13 +879,13 @@ pub const CompileErrorContext = struct { |
| 862 | 879 | var err_iter = ErrLineIter.init(stderr); |
| 863 | 880 | var i: usize = 0; |
| 864 | 881 | ok = while (err_iter.next()) |line| : (i += 1) { |
| 865 | if (i >= self.case.expected_errors.len) break false; | |
| 882 | if (i >= self.case.expected_errors.items.len) break false; | |
| 866 | 883 | const expected = self.case.expected_errors.at(i); |
| 867 | 884 | if (mem.indexOf(u8, line, expected) == null) break false; |
| 868 | 885 | continue; |
| 869 | 886 | } else true; |
| 870 | 887 | |
| 871 | ok = ok and i == self.case.expected_errors.len; | |
| 888 | ok = ok and i == self.case.expected_errors.items.len; | |
| 872 | 889 | |
| 873 | 890 | if (!ok) { |
| 874 | 891 | warn("\n======== Expected these compile errors: ========\n", .{}); |
test/translate_c.zig+32| ... | ... | @@ -2375,6 +2375,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2375 | 2375 | cases.add("compound assignment operators", |
| 2376 | 2376 | \\void foo(void) { |
| 2377 | 2377 | \\ int a = 0; |
| 2378 | \\ unsigned b = 0; | |
| 2378 | 2379 | \\ a += (a += 1); |
| 2379 | 2380 | \\ a -= (a -= 1); |
| 2380 | 2381 | \\ a *= (a *= 1); |
| ... | ... | @@ -2383,10 +2384,15 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2383 | 2384 | \\ a ^= (a ^= 1); |
| 2384 | 2385 | \\ a >>= (a >>= 1); |
| 2385 | 2386 | \\ a <<= (a <<= 1); |
| 2387 | \\ a /= (a /= 1); | |
| 2388 | \\ a %= (a %= 1); | |
| 2389 | \\ b /= (b /= 1); | |
| 2390 | \\ b %= (b %= 1); | |
| 2386 | 2391 | \\} |
| 2387 | 2392 | , &[_][]const u8{ |
| 2388 | 2393 | \\pub export fn foo() void { |
| 2389 | 2394 | \\ var a: c_int = 0; |
| 2395 | \\ var b: c_uint = @bitCast(c_uint, @as(c_int, 0)); | |
| 2390 | 2396 | \\ a += (blk: { |
| 2391 | 2397 | \\ const ref = &a; |
| 2392 | 2398 | \\ ref.* = ref.* + @as(c_int, 1); |
| ... | ... | @@ -2427,6 +2433,26 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2427 | 2433 | \\ ref.* = ref.* << @intCast(@import("std").math.Log2Int(c_int), @as(c_int, 1)); |
| 2428 | 2434 | \\ break :blk ref.*; |
| 2429 | 2435 | \\ })); |
| 2436 | \\ a = @divTrunc(a, (blk: { | |
| 2437 | \\ const ref = &a; | |
| 2438 | \\ ref.* = @divTrunc(ref.*, @as(c_int, 1)); | |
| 2439 | \\ break :blk ref.*; | |
| 2440 | \\ })); | |
| 2441 | \\ a = @rem(a, (blk: { | |
| 2442 | \\ const ref = &a; | |
| 2443 | \\ ref.* = @rem(ref.*, @as(c_int, 1)); | |
| 2444 | \\ break :blk ref.*; | |
| 2445 | \\ })); | |
| 2446 | \\ b /= (blk: { | |
| 2447 | \\ const ref = &b; | |
| 2448 | \\ ref.* = ref.* / @bitCast(c_uint, @as(c_int, 1)); | |
| 2449 | \\ break :blk ref.*; | |
| 2450 | \\ }); | |
| 2451 | \\ b %= (blk: { | |
| 2452 | \\ const ref = &b; | |
| 2453 | \\ ref.* = ref.* % @bitCast(c_uint, @as(c_int, 1)); | |
| 2454 | \\ break :blk ref.*; | |
| 2455 | \\ }); | |
| 2430 | 2456 | \\} |
| 2431 | 2457 | }); |
| 2432 | 2458 | |
| ... | ... | @@ -2847,4 +2873,10 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2847 | 2873 | , &[_][]const u8{ |
| 2848 | 2874 | \\pub const FOO = "a" ++ ("b" ++ "c"); |
| 2849 | 2875 | }); |
| 2876 | ||
| 2877 | cases.add("multibyte character literals", | |
| 2878 | \\#define FOO 'abcd' | |
| 2879 | , &[_][]const u8{ | |
| 2880 | \\pub const FOO = 0x61626364; | |
| 2881 | }); | |
| 2850 | 2882 | } |
tools/merge_anal_dumps.zig+5-5| ... | ... | @@ -23,7 +23,7 @@ pub fn main() anyerror!void { |
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | const stdout = try std.io.getStdOut(); |
| 26 | try dump.render(&stdout.outStream().stream); | |
| 26 | try dump.render(stdout.outStream()); | |
| 27 | 27 | } |
| 28 | 28 | |
| 29 | 29 | /// AST source node |
| ... | ... | @@ -194,7 +194,7 @@ const Dump = struct { |
| 194 | 194 | for (other_files) |other_file, i| { |
| 195 | 195 | const gop = try self.file_map.getOrPut(other_file.String); |
| 196 | 196 | if (!gop.found_existing) { |
| 197 | gop.kv.value = self.file_list.len; | |
| 197 | gop.kv.value = self.file_list.items.len; | |
| 198 | 198 | try self.file_list.append(other_file.String); |
| 199 | 199 | } |
| 200 | 200 | try other_file_to_mine.putNoClobber(i, gop.kv.value); |
| ... | ... | @@ -213,7 +213,7 @@ const Dump = struct { |
| 213 | 213 | }; |
| 214 | 214 | const gop = try self.node_map.getOrPut(other_node); |
| 215 | 215 | if (!gop.found_existing) { |
| 216 | gop.kv.value = self.node_list.len; | |
| 216 | gop.kv.value = self.node_list.items.len; | |
| 217 | 217 | try self.node_list.append(other_node); |
| 218 | 218 | } |
| 219 | 219 | try other_ast_node_to_mine.putNoClobber(i, gop.kv.value); |
| ... | ... | @@ -243,7 +243,7 @@ const Dump = struct { |
| 243 | 243 | }; |
| 244 | 244 | const gop = try self.error_map.getOrPut(other_error); |
| 245 | 245 | if (!gop.found_existing) { |
| 246 | gop.kv.value = self.error_list.len; | |
| 246 | gop.kv.value = self.error_list.items.len; | |
| 247 | 247 | try self.error_list.append(other_error); |
| 248 | 248 | } |
| 249 | 249 | try other_error_to_mine.putNoClobber(i, gop.kv.value); |
| ... | ... | @@ -304,7 +304,7 @@ const Dump = struct { |
| 304 | 304 | ) !void { |
| 305 | 305 | const gop = try self.type_map.getOrPut(other_type); |
| 306 | 306 | if (!gop.found_existing) { |
| 307 | gop.kv.value = self.type_list.len; | |
| 307 | gop.kv.value = self.type_list.items.len; | |
| 308 | 308 | try self.type_list.append(other_type); |
| 309 | 309 | } |
| 310 | 310 | try other_types_to_mine.putNoClobber(other_type_index, gop.kv.value); |
tools/update_clang_options.zig+20| ... | ... | @@ -54,6 +54,10 @@ const known_options = [_]KnownOpt{ |
| 54 | 54 | .name = "fno-PIC", |
| 55 | 55 | .ident = "no_pic", |
| 56 | 56 | }, |
| 57 | .{ | |
| 58 | .name = "nolibc", | |
| 59 | .ident = "nostdlib", | |
| 60 | }, | |
| 57 | 61 | .{ |
| 58 | 62 | .name = "nostdlib", |
| 59 | 63 | .ident = "nostdlib", |
| ... | ... | @@ -66,6 +70,22 @@ const known_options = [_]KnownOpt{ |
| 66 | 70 | .name = "nostdlib++", |
| 67 | 71 | .ident = "nostdlib_cpp", |
| 68 | 72 | }, |
| 73 | .{ | |
| 74 | .name = "nostdinc++", | |
| 75 | .ident = "nostdlib_cpp", | |
| 76 | }, | |
| 77 | .{ | |
| 78 | .name = "nostdlibinc", | |
| 79 | .ident = "nostdlibinc", | |
| 80 | }, | |
| 81 | .{ | |
| 82 | .name = "nostdinc", | |
| 83 | .ident = "nostdlibinc", | |
| 84 | }, | |
| 85 | .{ | |
| 86 | .name = "no-standard-includes", | |
| 87 | .ident = "nostdlibinc", | |
| 88 | }, | |
| 69 | 89 | .{ |
| 70 | 90 | .name = "shared", |
| 71 | 91 | .ident = "shared", |
tools/update_glibc.zig+3-1| ... | ... | @@ -21,6 +21,7 @@ const lib_names = [_][]const u8{ |
| 21 | 21 | "pthread", |
| 22 | 22 | "rt", |
| 23 | 23 | "ld", |
| 24 | "util", | |
| 24 | 25 | }; |
| 25 | 26 | |
| 26 | 27 | // fpu/nofpu are hardcoded elsewhere, based on .gnueabi/.gnueabihf with an exception for .arm |
| ... | ... | @@ -182,7 +183,8 @@ pub fn main() !void { |
| 182 | 183 | } |
| 183 | 184 | break :blk try fs.path.join(allocator, &[_][]const u8{ prefix, abi_list.path, basename }); |
| 184 | 185 | }; |
| 185 | const contents = std.io.readFileAlloc(allocator, abi_list_filename) catch |err| { | |
| 186 | const max_bytes = 10 * 1024 * 1024; | |
| 187 | const contents = std.fs.cwd().readFileAlloc(allocator, abi_list_filename, max_bytes) catch |err| { | |
| 186 | 188 | std.debug.warn("unable to open {}: {}\n", .{ abi_list_filename, err }); |
| 187 | 189 | std.process.exit(1); |
| 188 | 190 | }; |