From 17d1b035a8447f84a8e88562ab55c6dcbbb690d9 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 19:48:38 -0700 Subject: [PATCH 01/14] dasClangBind: regen bindings for libclang 22.1.5, enable on mingw CI Bumps the bindings from their libclang-16 baseline to libclang-22.1.5 - matches what apt.llvm.org's llvm-toolchain-noble-22 ships for the linux extended_checks self-binder step, and the same LLVM 22.1.5 aleksisch/llvm-shared-builds tarball dasLLVM already uses. Changes: - Regenerated all of modules/dasClangBind/src/*.inc + func_*.cpp (now 18 chunks vs 17) against LLVM 22.1.5 headers. Picks up the CXCursor_OMPArraySectionExpr -> CXCursor_ArraySectionExpr rename and ~340 other API additions/changes between 16 and 22. - find_package(Clang 16.0.6) -> find_package(Clang 22.1) in modules/dasClangBind/CMakeLists.txt. Matches both msys2 clang64 (22.1.4) and apt.llvm.org's noble-22 package via the standard ConfigVersion compatibility check. - POST_BUILD copy of libclang.dll + transitive runtime deps next to daslang.exe (mirrors the dasHV/dasGlfw pattern from #2838/#2840). Required because daslang loads .shared_module files via LoadLibraryEx with restricted search flags (PATH is NOT searched - see src/misc/sysos.cpp:loadDynamicLibrary). Multi-config / single-config split for symmetry. MSVC path uses official LLVM's self-contained libclang.dll; mingw needs the full chain (libclang + libLLVM-N + libffi/zlib/zstd/libxml2/libiconv + libc++ + libunwind). - Broadened the ToBasicType specialization in include/daScript/ast/ast_typedecl.h from #if defined(_MSC_VER) to #if defined(_WIN32). Without it, mingw fails to build the binding for CXUnsavedFile::Length - Windows LLP64 makes 'unsigned long' a distinct 32-bit type regardless of compiler. - .github/workflows/extended_checks.yml: dropped libclang-16-dev, llvm-16-dev, clang-16 from the apt install list (no longer needed); switched the bind_clangbind self-binder --clang_path from /usr/lib/llvm-16/include/ to /usr/lib/llvm-22/include/. - .github/workflows/build.yml: dropped -DDAS_CLANG_BIND_DISABLED=ON from the build_windows_mingw cmake invocation. find_package(Clang 22.1) now matches the msys2 clang64 sysroot so the module builds cleanly under mingw. Locally verified: daslang modules/dasClangBind/examples/browse.das walks sample.h and generates daslang bindings end-to-end on mingw. CI's linux extended_checks self-binder step is the byte-canonical re-check. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/build.yml | 8 +- .github/workflows/extended_checks.yml | 5 +- include/daScript/ast/ast_typedecl.h | 7 +- modules/dasClangBind/CMakeLists.txt | 74 +++-- .../src/dasClangBind.alias.add.inc | 52 ++-- .../src/dasClangBind.dummy.add.inc | 2 + .../src/dasClangBind.enum.add.inc | 4 + .../src/dasClangBind.enum.class.inc | 257 +++++++++++++++--- .../src/dasClangBind.enum.decl.cast.inc | 4 + .../src/dasClangBind.enum.decl.inc | 8 + .../src/dasClangBind.func.decl.inc | 1 + .../src/dasClangBind.func.reg.inc | 1 + .../dasClangBind/src/dasClangBind.func_1.cpp | 32 +-- .../dasClangBind/src/dasClangBind.func_10.cpp | 82 +++--- .../dasClangBind/src/dasClangBind.func_11.cpp | 88 +++--- .../dasClangBind/src/dasClangBind.func_12.cpp | 112 ++++---- .../dasClangBind/src/dasClangBind.func_13.cpp | 118 ++++---- .../dasClangBind/src/dasClangBind.func_14.cpp | 118 ++++---- .../dasClangBind/src/dasClangBind.func_15.cpp | 117 ++++---- .../dasClangBind/src/dasClangBind.func_16.cpp | 119 ++++---- .../dasClangBind/src/dasClangBind.func_17.cpp | 72 ++++- .../dasClangBind/src/dasClangBind.func_18.cpp | 49 ++++ .../dasClangBind/src/dasClangBind.func_2.cpp | 16 +- .../dasClangBind/src/dasClangBind.func_3.cpp | 46 ++-- .../dasClangBind/src/dasClangBind.func_4.cpp | 51 ++-- .../dasClangBind/src/dasClangBind.func_5.cpp | 51 ++-- .../dasClangBind/src/dasClangBind.func_6.cpp | 52 ++-- .../dasClangBind/src/dasClangBind.func_7.cpp | 58 ++-- .../dasClangBind/src/dasClangBind.func_8.cpp | 58 ++-- .../dasClangBind/src/dasClangBind.func_9.cpp | 58 ++-- .../src/dasClangBind.struct.add.inc | 2 + .../src/dasClangBind.struct.cast.inc | 6 + .../src/dasClangBind.struct.class.inc | 73 +++-- .../src/dasClangBind.struct.decl.inc | 3 + .../src/dasClangBind.struct.impl.inc | 3 + .../src/dasClangBind.struct.postadd.inc | 1 + 36 files changed, 1097 insertions(+), 711 deletions(-) create mode 100644 modules/dasClangBind/src/dasClangBind.func_18.cpp diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9f87b41638..bc335483f4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -482,9 +482,9 @@ jobs: # (windows-latest-fat), separate top-level job so mingw churn doesn't risk # the much-larger MSVC entries. # - # dasClangBind stays disabled here — pinned to libclang 16.0.6 (find_package - # strict version), which the msys2 clang64 sysroot doesn't ship. Tracked - # separately as the bind_clangbind regen followup. + # dasClangBind is enabled here — find_package(Clang 22.1) matches msys2's + # libclang 22.1.x and POST_BUILD copies the libclang+libLLVM+libc++ chain + # next to daslang.exe so the .shared_module dlopen resolves at runtime. ########################################################### needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' @@ -518,7 +518,7 @@ jobs: -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ - -DDAS_CLANG_BIND_DISABLED=ON \ + -DDAS_CLANG_BIND_DISABLED=OFF \ -DDAS_LLVM_DISABLED=OFF cmake --build ./build-mingw --parallel diff --git a/.github/workflows/extended_checks.yml b/.github/workflows/extended_checks.yml index d6e8d4cc4d..8cc627858b 100644 --- a/.github/workflows/extended_checks.yml +++ b/.github/workflows/extended_checks.yml @@ -109,9 +109,6 @@ jobs: libxcursor-dev \ libxinerama-dev \ libxi-dev \ - libclang-16-dev \ - llvm-16-dev \ - clang-16 \ libclang-22-dev \ llvm-22-dev ;; @@ -256,7 +253,7 @@ jobs: if: matrix.target == 'linux' run: | set -eux - $BIN/daslang modules/dasClangBind/bind/bind_clangbind.das -- --clang_path /usr/lib/llvm-16/include/ + $BIN/daslang modules/dasClangBind/bind/bind_clangbind.das -- --clang_path /usr/lib/llvm-22/include/ git diff --exit-code -- modules/dasClangBind/src/ \ || (echo "ERROR: dasClangBind generated files are out of date. Run './bin/daslang modules/dasClangBind/bind/bind_clangbind.das -- --clang_path ' locally and commit the result." && exit 1) diff --git a/include/daScript/ast/ast_typedecl.h b/include/daScript/ast/ast_typedecl.h index aa194466de..adca19cc11 100644 --- a/include/daScript/ast/ast_typedecl.h +++ b/include/daScript/ast/ast_typedecl.h @@ -333,7 +333,12 @@ namespace das { template<> struct ToBasicType { enum { type = Type::tFloat }; }; template<> struct ToBasicType { enum { type = Type::tVoid }; }; template<> struct ToBasicType { enum { type = Type::tInt8 }; }; -#if defined(_MSC_VER) +#if defined(_WIN32) + // Broadened from _MSC_VER to cover mingw (clang-mingw64 + gcc-mingw) too — + // Windows LLP64 makes `long`/`unsigned long` 32-bit regardless of compiler. + // Without this, dasClangBind fails to build on mingw because libclang's + // CXUnsavedFile::Length (unsigned long) hits the primary template's + // static_assert. template<> struct ToBasicType { enum { type = Type::tInt }; }; template<> struct ToBasicType { enum { type = Type::tUInt }; }; template<> struct ToBasicType { enum { type = Type::tDouble }; }; diff --git a/modules/dasClangBind/CMakeLists.txt b/modules/dasClangBind/CMakeLists.txt index 37ffd0d848..5453f801e9 100644 --- a/modules/dasClangBind/CMakeLists.txt +++ b/modules/dasClangBind/CMakeLists.txt @@ -2,7 +2,7 @@ IF (NOT DEFINED PATH_TO_LIBCLANG) SET(PATH_TO_LIBCLANG "${PROJECT_SOURCE_DIR}/../libclang") ENDIF() IF ((NOT ${DAS_CLANG_BIND_DISABLED}) OR (NOT DEFINED DAS_CLANG_BIND_DISABLED)) - find_package(Clang 16.0.6 PATHS "${PATH_TO_LIBCLANG}") + find_package(Clang 22.1 PATHS "${PATH_TO_LIBCLANG}") ENDIF() IF ((NOT DAS_CLANG_BIND_INCLUDED) AND (${Clang_FOUND}) AND ((NOT ${DAS_CLANG_BIND_DISABLED}) OR (NOT DEFINED DAS_CLANG_BIND_DISABLED))) SET(DAS_CLANG_BIND_INCLUDED TRUE) @@ -51,6 +51,7 @@ IF ((NOT DAS_CLANG_BIND_INCLUDED) AND (${Clang_FOUND}) AND ((NOT ${DAS_CLANG_BIN ${DAS_CLANG_BIND_DIR}/src/dasClangBind.func_15.cpp ${DAS_CLANG_BIND_DIR}/src/dasClangBind.func_16.cpp ${DAS_CLANG_BIND_DIR}/src/dasClangBind.func_17.cpp + ${DAS_CLANG_BIND_DIR}/src/dasClangBind.func_18.cpp ) ADD_MODULE_CPP(dasClangBind) @@ -68,24 +69,65 @@ IF ((NOT DAS_CLANG_BIND_INCLUDED) AND (${Clang_FOUND}) AND ((NOT ${DAS_CLANG_BIN TARGET_INCLUDE_DIRECTORIES(dasModuleClangBind PUBLIC ${CLANG_BIND_INCLUDE_DIR} ${CLANG_INCLUDE_DIRS} ${LLVM_INCLUDE_DIRS}) IF(WIN32) - set(DAS_CLANG_DLLS - ${LLVM_INSTALL_PREFIX}/bin/LLVM-C.dll - ${LLVM_INSTALL_PREFIX}/bin/LTO.dll - ${LLVM_INSTALL_PREFIX}/bin/Remarks.dll - ${LLVM_INSTALL_PREFIX}/bin/libclang.dll - ) - foreach(dll ${DAS_CLANG_DLLS}) - get_filename_component(dll_name "${dll}" NAME) - add_custom_command(TARGET libDasModuleClangBind POST_BUILD + # POST_BUILD copy libclang + transitive runtime deps next to daslang.exe. + # daslang loads .shared_module files via LoadLibraryEx with restricted + # search flags (LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | _APPLICATION_DIR | + # _DEFAULT_DIRS — see src/misc/sysos.cpp:loadDynamicLibrary). PATH is + # NOT searched, so the .shared_module's libclang.dll import must live + # in bin/ or alongside the .shared_module itself. + # + # Hook on dasModuleClangBind (the shared lib target), NOT on the static + # libDasModuleClangBind — single-config Ninja builds only realize the + # shared target when dynamic daslang.exe is the link consumer. + # + # Multi-config / single-config split mirrors dasHV/CMakeLists.txt. + IF(MSVC) + # Official LLVM Windows release ships a self-contained libclang.dll + # (LLVM statically linked in). Companion DLLs LLVM-C/LTO/Remarks are + # NOT deps of libclang.dll — copied for completeness only. + SET(_DAS_CLANG_BIND_DLLS + ${LLVM_INSTALL_PREFIX}/bin/libclang.dll + ${LLVM_INSTALL_PREFIX}/bin/LLVM-C.dll + ${LLVM_INSTALL_PREFIX}/bin/LTO.dll + ${LLVM_INSTALL_PREFIX}/bin/Remarks.dll) + ELSE() + # mingw / clang-mingw64: msys2 ships libclang.dll dynamically linked + # against libLLVM-N.dll, which in turn drags in libffi/zlib/zstd/libxml2. + # Full chain (from objdump -p libclang.dll + libLLVM-N.dll): + # libclang.dll → libLLVM-N.dll, libc++, KERNEL32, api-ms-win-crt-* + # libLLVM-N.dll → libffi-N, zlib1, libzstd, libxml2-N, libc++, + # SHELL32, ole32, ADVAPI32, WS2_32, ntdll, ... + # libc++.dll → libunwind, api-ms-win-crt-* + # Glob the numbered variants (libLLVM-22, libffi-8, libxml2-16, …) to + # absorb major-version bumps without per-bump CMake churn. + FILE(GLOB _DAS_CLANG_BIND_DLLS + "${LLVM_INSTALL_PREFIX}/bin/libclang.dll" + "${LLVM_INSTALL_PREFIX}/bin/libLLVM-*.dll" + "${LLVM_INSTALL_PREFIX}/bin/libffi-*.dll" + "${LLVM_INSTALL_PREFIX}/bin/zlib1.dll" + "${LLVM_INSTALL_PREFIX}/bin/libzstd.dll" + "${LLVM_INSTALL_PREFIX}/bin/libxml2-*.dll" + "${LLVM_INSTALL_PREFIX}/bin/libiconv-*.dll" + "${LLVM_INSTALL_PREFIX}/bin/libc++.dll" + "${LLVM_INSTALL_PREFIX}/bin/libunwind.dll") + ENDIF() + IF(_DAS_CLANG_BIND_DLLS) + IF(CMAKE_CONFIGURATION_TYPES) + SET(_DAS_CLANG_BIND_COPY_DIR "${EXECUTABLE_OUTPUT_PATH}/$") + ELSE() + SET(_DAS_CLANG_BIND_COPY_DIR "${EXECUTABLE_OUTPUT_PATH}") + ENDIF() + ADD_CUSTOM_COMMAND(TARGET dasModuleClangBind POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different - "${dll}" - "${PROJECT_SOURCE_DIR}/bin/$/${dll_name}" - ) - endforeach() - install(FILES ${DAS_CLANG_DLLS} + ${_DAS_CLANG_BIND_DLLS} + "${_DAS_CLANG_BIND_COPY_DIR}/") + ELSE() + MESSAGE(WARNING "dasClangBind: no libclang DLLs found under ${LLVM_INSTALL_PREFIX}/bin — dasModuleClangBind.shared_module dlopen will fail at runtime.") + ENDIF() + install(FILES ${_DAS_CLANG_BIND_DLLS} DESTINATION ${DAS_INSTALL_BINDIR} ) - install(FILES ${PROJECT_SOURCE_DIR}/modules/dasClangBind/LICENSE.TXT DESTINATION ${DAS_INSTALL_DOCDIR} RENAME LLVM.LICENSE) + install(FILES ${PROJECT_SOURCE_DIR}/modules/dasClangBind/LICENSE.TXT DESTINATION ${DAS_INSTALL_DOCDIR} RENAME LLVM.LICENSE) ENDIF() ADD_MODULE_DAS(cbind cbind cbind_boost) diff --git a/modules/dasClangBind/src/dasClangBind.alias.add.inc b/modules/dasClangBind/src/dasClangBind.alias.add.inc index 960f22c7d0..6338e691e3 100644 --- a/modules/dasClangBind/src/dasClangBind.alias.add.inc +++ b/modules/dasClangBind/src/dasClangBind.alias.add.inc @@ -16,93 +16,103 @@ auto alias_CXDiagnosticSet = typeFactory::make(lib); alias_CXDiagnosticSet->alias = "CXDiagnosticSet"; addAlias(alias_CXDiagnosticSet); -// from clang-c/Index.h:76:15 +// from clang-c/Index.h:80:15 auto alias_CXIndex = typeFactory::make(lib); alias_CXIndex->alias = "CXIndex"; addAlias(alias_CXIndex); -// from clang-c/Index.h:82:34 +// from clang-c/Index.h:86:34 auto alias_CXTargetInfo = typeFactory::make(lib); alias_CXTargetInfo->alias = "CXTargetInfo"; addAlias(alias_CXTargetInfo); -// from clang-c/Index.h:87:39 +// from clang-c/Index.h:91:39 auto alias_CXTranslationUnit = typeFactory::make(lib); alias_CXTranslationUnit->alias = "CXTranslationUnit"; addAlias(alias_CXTranslationUnit); -// from clang-c/Index.h:93:15 +// from clang-c/Index.h:97:15 auto alias_CXClientData = typeFactory::make(lib); alias_CXClientData->alias = "CXClientData"; addAlias(alias_CXClientData); -// from clang-c/Index.h:2423:33 +// from clang-c/Index.h:2657:33 auto alias_CXCursorSet = typeFactory::make(lib); alias_CXCursorSet->alias = "CXCursorSet"; addAlias(alias_CXCursorSet); -// from clang-c/Index.h:3671:35 +// from clang-c/Index.h:4006:35 auto alias_CXCursorVisitor = typeFactory::make(lib); alias_CXCursorVisitor->alias = "CXCursorVisitor"; addAlias(alias_CXCursorVisitor); -// from clang-c/Index.h:3812:15 +// from clang-c/Index.h:4049:37 +auto alias_CXCursorVisitorBlock = typeFactory<_CXChildVisitResult *>::make(lib); +alias_CXCursorVisitorBlock->alias = "CXCursorVisitorBlock"; +addAlias(alias_CXCursorVisitorBlock); + +// from clang-c/Index.h:4147:15 auto alias_CXPrintingPolicy = typeFactory::make(lib); alias_CXPrintingPolicy->alias = "CXPrintingPolicy"; addAlias(alias_CXPrintingPolicy); -// from clang-c/Index.h:4159:15 +// from clang-c/Index.h:4637:15 auto alias_CXModule = typeFactory::make(lib); alias_CXModule->alias = "CXModule"; addAlias(alias_CXModule); -// from clang-c/Index.h:4659:15 +// from clang-c/Index.h:5182:15 auto alias_CXCompletionString = typeFactory::make(lib); alias_CXCompletionString->alias = "CXCompletionString"; addAlias(alias_CXCompletionString); -// from clang-c/Index.h:5464:16 +// from clang-c/Index.h:5987:16 auto alias_CXInclusionVisitor = typeFactory::make(lib); alias_CXInclusionVisitor->alias = "CXInclusionVisitor"; addAlias(alias_CXInclusionVisitor); -// from clang-c/Index.h:5494:15 +// from clang-c/Index.h:6017:15 auto alias_CXEvalResult = typeFactory::make(lib); alias_CXEvalResult->alias = "CXEvalResult"; addAlias(alias_CXEvalResult); -// from clang-c/Index.h:5565:15 -auto alias_CXRemapping = typeFactory::make(lib); -alias_CXRemapping->alias = "CXRemapping"; -addAlias(alias_CXRemapping); +// from clang-c/Index.h:6145:47 +auto alias_CXCursorAndRangeVisitorBlock = typeFactory<_CXCursorAndRangeVisitorBlock *>::make(lib); +alias_CXCursorAndRangeVisitorBlock->alias = "CXCursorAndRangeVisitorBlock"; +addAlias(alias_CXCursorAndRangeVisitorBlock); -// from clang-c/Index.h:5698:15 +// from clang-c/Index.h:6159:15 auto alias_CXIdxClientFile = typeFactory::make(lib); alias_CXIdxClientFile->alias = "CXIdxClientFile"; addAlias(alias_CXIdxClientFile); -// from clang-c/Index.h:5703:15 +// from clang-c/Index.h:6164:15 auto alias_CXIdxClientEntity = typeFactory::make(lib); alias_CXIdxClientEntity->alias = "CXIdxClientEntity"; addAlias(alias_CXIdxClientEntity); -// from clang-c/Index.h:5709:15 +// from clang-c/Index.h:6170:15 auto alias_CXIdxClientContainer = typeFactory::make(lib); alias_CXIdxClientContainer->alias = "CXIdxClientContainer"; addAlias(alias_CXIdxClientContainer); -// from clang-c/Index.h:5715:15 +// from clang-c/Index.h:6176:15 auto alias_CXIdxClientASTFile = typeFactory::make(lib); alias_CXIdxClientASTFile->alias = "CXIdxClientASTFile"; addAlias(alias_CXIdxClientASTFile); -// from clang-c/Index.h:6130:15 +// from clang-c/Index.h:6591:15 auto alias_CXIndexAction = typeFactory::make(lib); alias_CXIndexAction->alias = "CXIndexAction"; addAlias(alias_CXIndexAction); -// from clang-c/Index.h:6282:32 +// from clang-c/Index.h:6743:32 auto alias_CXFieldVisitor = typeFactory::make(lib); alias_CXFieldVisitor->alias = "CXFieldVisitor"; addAlias(alias_CXFieldVisitor); +// from clang-c/Index.h:6961:15 +auto alias_CXRemapping = typeFactory::make(lib); +alias_CXRemapping->alias = "CXRemapping"; +addAlias(alias_CXRemapping); + diff --git a/modules/dasClangBind/src/dasClangBind.dummy.add.inc b/modules/dasClangBind/src/dasClangBind.dummy.add.inc index 64fecb4ae6..48537a65e5 100644 --- a/modules/dasClangBind/src/dasClangBind.dummy.add.inc +++ b/modules/dasClangBind/src/dasClangBind.dummy.add.inc @@ -3,4 +3,6 @@ addAnnotation(new DummyTypeAnnotation("CXTranslationUnitImpl", "CXTranslationUnitImpl", 1, 1)); addAnnotation(new DummyTypeAnnotation("CXCursorSetImpl", "CXCursorSetImpl", 1, 1)); +addAnnotation(new DummyTypeAnnotation("_CXChildVisitResult", "_CXChildVisitResult", 1, 1)); +addAnnotation(new DummyTypeAnnotation("_CXCursorAndRangeVisitorBlock", "_CXCursorAndRangeVisitorBlock", 1, 1)); addAnnotation(new DummyTypeAnnotation("CXTargetInfoImpl", "CXTargetInfoImpl", 1, 1)); diff --git a/modules/dasClangBind/src/dasClangBind.enum.add.inc b/modules/dasClangBind/src/dasClangBind.enum.add.inc index 93454a07d2..d96e3ebbd8 100644 --- a/modules/dasClangBind/src/dasClangBind.enum.add.inc +++ b/modules/dasClangBind/src/dasClangBind.enum.add.inc @@ -7,6 +7,7 @@ addEnumeration(new Enumeration_CXLoadDiag_Error()); addEnumeration(new Enumeration_CXDiagnosticDisplayOptions()); addEnumeration(new Enumeration_CXAvailabilityKind()); addEnumeration(new Enumeration_CXCursor_ExceptionSpecificationKind()); +addEnumeration(new Enumeration_CXChoice()); addEnumeration(new Enumeration_CXGlobalOptFlags()); addEnumeration(new Enumeration_CXTranslationUnit_Flags()); addEnumeration(new Enumeration_CXSaveTranslationUnit_Flags()); @@ -26,6 +27,7 @@ addEnumeration(new Enumeration_CXTypeLayoutError()); addEnumeration(new Enumeration_CXRefQualifierKind()); addEnumeration(new Enumeration_CX_CXXAccessSpecifier()); addEnumeration(new Enumeration_CX_StorageClass()); +addEnumeration(new Enumeration_CX_BinaryOperatorKind()); addEnumeration(new Enumeration_CXChildVisitResult()); addEnumeration(new Enumeration_CXPrintingPolicyProperty()); addEnumeration(new Enumeration_CXObjCPropertyAttrKind()); @@ -47,3 +49,5 @@ addEnumeration(new Enumeration_CXIdxObjCContainerKind()); addEnumeration(new Enumeration_CXIdxEntityRefKind()); addEnumeration(new Enumeration_CXSymbolRole()); addEnumeration(new Enumeration_CXIndexOptFlags()); +addEnumeration(new Enumeration_CXBinaryOperatorKind()); +addEnumeration(new Enumeration_CXUnaryOperatorKind()); diff --git a/modules/dasClangBind/src/dasClangBind.enum.class.inc b/modules/dasClangBind/src/dasClangBind.enum.class.inc index 0a365de2d4..f742d97251 100644 --- a/modules/dasClangBind/src/dasClangBind.enum.class.inc +++ b/modules/dasClangBind/src/dasClangBind.enum.class.inc @@ -61,7 +61,7 @@ public: } }; -// from clang-c/Index.h:126:6 +// from clang-c/Index.h:130:6 class Enumeration_CXAvailabilityKind : public das::Enumeration { public: Enumeration_CXAvailabilityKind() : das::Enumeration("CXAvailabilityKind") { @@ -75,7 +75,7 @@ public: } }; -// from clang-c/Index.h:175:6 +// from clang-c/Index.h:179:6 class Enumeration_CXCursor_ExceptionSpecificationKind : public das::Enumeration { public: Enumeration_CXCursor_ExceptionSpecificationKind() : das::Enumeration("CXCursor_ExceptionSpecificationKind") { @@ -95,7 +95,20 @@ public: } }; -// from clang-c/Index.h:278:9 +// from clang-c/Index.h:282:9 +class Enumeration_CXChoice : public das::Enumeration { +public: + Enumeration_CXChoice() : das::Enumeration("CXChoice") { + external = true; + cppName = "CXChoice"; + baseType = (das::Type) das::ToBasicType::type; + addIEx("Default", "CXChoice_Default", int64_t(CXChoice::CXChoice_Default), das::LineInfo()); + addIEx("Enabled", "CXChoice_Enabled", int64_t(CXChoice::CXChoice_Enabled), das::LineInfo()); + addIEx("Disabled", "CXChoice_Disabled", int64_t(CXChoice::CXChoice_Disabled), das::LineInfo()); + } +}; + +// from clang-c/Index.h:298:9 class Enumeration_CXGlobalOptFlags : public das::Enumeration { public: Enumeration_CXGlobalOptFlags() : das::Enumeration("CXGlobalOptFlags") { @@ -109,7 +122,7 @@ public: } }; -// from clang-c/Index.h:531:6 +// from clang-c/Index.h:679:6 class Enumeration_CXTranslationUnit_Flags : public das::Enumeration { public: Enumeration_CXTranslationUnit_Flags() : das::Enumeration("CXTranslationUnit_Flags") { @@ -136,7 +149,7 @@ public: } }; -// from clang-c/Index.h:774:6 +// from clang-c/Index.h:922:6 class Enumeration_CXSaveTranslationUnit_Flags : public das::Enumeration { public: Enumeration_CXSaveTranslationUnit_Flags() : das::Enumeration("CXSaveTranslationUnit_Flags") { @@ -147,7 +160,7 @@ public: } }; -// from clang-c/Index.h:796:6 +// from clang-c/Index.h:944:6 class Enumeration_CXSaveError : public das::Enumeration { public: Enumeration_CXSaveError() : das::Enumeration("CXSaveError") { @@ -161,7 +174,7 @@ public: } }; -// from clang-c/Index.h:875:6 +// from clang-c/Index.h:1023:6 class Enumeration_CXReparse_Flags : public das::Enumeration { public: Enumeration_CXReparse_Flags() : das::Enumeration("CXReparse_Flags") { @@ -172,7 +185,7 @@ public: } }; -// from clang-c/Index.h:941:6 +// from clang-c/Index.h:1089:6 class Enumeration_CXTUResourceUsageKind : public das::Enumeration { public: Enumeration_CXTUResourceUsageKind() : das::Enumeration("CXTUResourceUsageKind") { @@ -200,7 +213,7 @@ public: } }; -// from clang-c/Index.h:1038:6 +// from clang-c/Index.h:1186:6 class Enumeration_CXCursorKind : public das::Enumeration { public: Enumeration_CXCursorKind() : das::Enumeration("CXCursorKind") { @@ -315,7 +328,7 @@ public: addIEx("LambdaExpr", "CXCursor_LambdaExpr", int64_t(CXCursorKind::CXCursor_LambdaExpr), das::LineInfo()); addIEx("ObjCBoolLiteralExpr", "CXCursor_ObjCBoolLiteralExpr", int64_t(CXCursorKind::CXCursor_ObjCBoolLiteralExpr), das::LineInfo()); addIEx("ObjCSelfExpr", "CXCursor_ObjCSelfExpr", int64_t(CXCursorKind::CXCursor_ObjCSelfExpr), das::LineInfo()); - addIEx("OMPArraySectionExpr", "CXCursor_OMPArraySectionExpr", int64_t(CXCursorKind::CXCursor_OMPArraySectionExpr), das::LineInfo()); + addIEx("ArraySectionExpr", "CXCursor_ArraySectionExpr", int64_t(CXCursorKind::CXCursor_ArraySectionExpr), das::LineInfo()); addIEx("ObjCAvailabilityCheckExpr", "CXCursor_ObjCAvailabilityCheckExpr", int64_t(CXCursorKind::CXCursor_ObjCAvailabilityCheckExpr), das::LineInfo()); addIEx("FixedPointLiteral", "CXCursor_FixedPointLiteral", int64_t(CXCursorKind::CXCursor_FixedPointLiteral), das::LineInfo()); addIEx("OMPArrayShapingExpr", "CXCursor_OMPArrayShapingExpr", int64_t(CXCursorKind::CXCursor_OMPArrayShapingExpr), das::LineInfo()); @@ -324,6 +337,7 @@ public: addIEx("ConceptSpecializationExpr", "CXCursor_ConceptSpecializationExpr", int64_t(CXCursorKind::CXCursor_ConceptSpecializationExpr), das::LineInfo()); addIEx("RequiresExpr", "CXCursor_RequiresExpr", int64_t(CXCursorKind::CXCursor_RequiresExpr), das::LineInfo()); addIEx("CXXParenListInitExpr", "CXCursor_CXXParenListInitExpr", int64_t(CXCursorKind::CXCursor_CXXParenListInitExpr), das::LineInfo()); + addIEx("PackIndexingExpr", "CXCursor_PackIndexingExpr", int64_t(CXCursorKind::CXCursor_PackIndexingExpr), das::LineInfo()); addIEx("LastExpr", "CXCursor_LastExpr", int64_t(CXCursorKind::CXCursor_LastExpr), das::LineInfo()); addIEx("FirstStmt", "CXCursor_FirstStmt", int64_t(CXCursorKind::CXCursor_FirstStmt), das::LineInfo()); addIEx("UnexposedStmt", "CXCursor_UnexposedStmt", int64_t(CXCursorKind::CXCursor_UnexposedStmt), das::LineInfo()); @@ -433,6 +447,26 @@ public: addIEx("OMPParallelMaskedTaskLoopDirective", "CXCursor_OMPParallelMaskedTaskLoopDirective", int64_t(CXCursorKind::CXCursor_OMPParallelMaskedTaskLoopDirective), das::LineInfo()); addIEx("OMPParallelMaskedTaskLoopSimdDirective", "CXCursor_OMPParallelMaskedTaskLoopSimdDirective", int64_t(CXCursorKind::CXCursor_OMPParallelMaskedTaskLoopSimdDirective), das::LineInfo()); addIEx("OMPErrorDirective", "CXCursor_OMPErrorDirective", int64_t(CXCursorKind::CXCursor_OMPErrorDirective), das::LineInfo()); + addIEx("OMPScopeDirective", "CXCursor_OMPScopeDirective", int64_t(CXCursorKind::CXCursor_OMPScopeDirective), das::LineInfo()); + addIEx("OMPReverseDirective", "CXCursor_OMPReverseDirective", int64_t(CXCursorKind::CXCursor_OMPReverseDirective), das::LineInfo()); + addIEx("OMPInterchangeDirective", "CXCursor_OMPInterchangeDirective", int64_t(CXCursorKind::CXCursor_OMPInterchangeDirective), das::LineInfo()); + addIEx("OMPAssumeDirective", "CXCursor_OMPAssumeDirective", int64_t(CXCursorKind::CXCursor_OMPAssumeDirective), das::LineInfo()); + addIEx("OMPStripeDirective", "CXCursor_OMPStripeDirective", int64_t(CXCursorKind::CXCursor_OMPStripeDirective), das::LineInfo()); + addIEx("OMPFuseDirective", "CXCursor_OMPFuseDirective", int64_t(CXCursorKind::CXCursor_OMPFuseDirective), das::LineInfo()); + addIEx("OpenACCComputeConstruct", "CXCursor_OpenACCComputeConstruct", int64_t(CXCursorKind::CXCursor_OpenACCComputeConstruct), das::LineInfo()); + addIEx("OpenACCLoopConstruct", "CXCursor_OpenACCLoopConstruct", int64_t(CXCursorKind::CXCursor_OpenACCLoopConstruct), das::LineInfo()); + addIEx("OpenACCCombinedConstruct", "CXCursor_OpenACCCombinedConstruct", int64_t(CXCursorKind::CXCursor_OpenACCCombinedConstruct), das::LineInfo()); + addIEx("OpenACCDataConstruct", "CXCursor_OpenACCDataConstruct", int64_t(CXCursorKind::CXCursor_OpenACCDataConstruct), das::LineInfo()); + addIEx("OpenACCEnterDataConstruct", "CXCursor_OpenACCEnterDataConstruct", int64_t(CXCursorKind::CXCursor_OpenACCEnterDataConstruct), das::LineInfo()); + addIEx("OpenACCExitDataConstruct", "CXCursor_OpenACCExitDataConstruct", int64_t(CXCursorKind::CXCursor_OpenACCExitDataConstruct), das::LineInfo()); + addIEx("OpenACCHostDataConstruct", "CXCursor_OpenACCHostDataConstruct", int64_t(CXCursorKind::CXCursor_OpenACCHostDataConstruct), das::LineInfo()); + addIEx("OpenACCWaitConstruct", "CXCursor_OpenACCWaitConstruct", int64_t(CXCursorKind::CXCursor_OpenACCWaitConstruct), das::LineInfo()); + addIEx("OpenACCInitConstruct", "CXCursor_OpenACCInitConstruct", int64_t(CXCursorKind::CXCursor_OpenACCInitConstruct), das::LineInfo()); + addIEx("OpenACCShutdownConstruct", "CXCursor_OpenACCShutdownConstruct", int64_t(CXCursorKind::CXCursor_OpenACCShutdownConstruct), das::LineInfo()); + addIEx("OpenACCSetConstruct", "CXCursor_OpenACCSetConstruct", int64_t(CXCursorKind::CXCursor_OpenACCSetConstruct), das::LineInfo()); + addIEx("OpenACCUpdateConstruct", "CXCursor_OpenACCUpdateConstruct", int64_t(CXCursorKind::CXCursor_OpenACCUpdateConstruct), das::LineInfo()); + addIEx("OpenACCAtomicConstruct", "CXCursor_OpenACCAtomicConstruct", int64_t(CXCursorKind::CXCursor_OpenACCAtomicConstruct), das::LineInfo()); + addIEx("OpenACCCacheConstruct", "CXCursor_OpenACCCacheConstruct", int64_t(CXCursorKind::CXCursor_OpenACCCacheConstruct), das::LineInfo()); addIEx("LastStmt", "CXCursor_LastStmt", int64_t(CXCursorKind::CXCursor_LastStmt), das::LineInfo()); addIEx("TranslationUnit", "CXCursor_TranslationUnit", int64_t(CXCursorKind::CXCursor_TranslationUnit), das::LineInfo()); addIEx("FirstAttr", "CXCursor_FirstAttr", int64_t(CXCursorKind::CXCursor_FirstAttr), das::LineInfo()); @@ -497,7 +531,7 @@ public: } }; -// from clang-c/Index.h:2224:6 +// from clang-c/Index.h:2458:6 class Enumeration_CXLinkageKind : public das::Enumeration { public: Enumeration_CXLinkageKind() : das::Enumeration("CXLinkageKind") { @@ -512,7 +546,7 @@ public: } }; -// from clang-c/Index.h:2247:6 +// from clang-c/Index.h:2481:6 class Enumeration_CXVisibilityKind : public das::Enumeration { public: Enumeration_CXVisibilityKind() : das::Enumeration("CXVisibilityKind") { @@ -526,7 +560,7 @@ public: } }; -// from clang-c/Index.h:2391:6 +// from clang-c/Index.h:2625:6 class Enumeration_CXLanguageKind : public das::Enumeration { public: Enumeration_CXLanguageKind() : das::Enumeration("CXLanguageKind") { @@ -540,7 +574,7 @@ public: } }; -// from clang-c/Index.h:2407:6 +// from clang-c/Index.h:2641:6 class Enumeration_CXTLSKind : public das::Enumeration { public: Enumeration_CXTLSKind() : das::Enumeration("CXTLSKind") { @@ -553,7 +587,7 @@ public: } }; -// from clang-c/Index.h:2651:6 +// from clang-c/Index.h:2885:6 class Enumeration_CXTypeKind : public das::Enumeration { public: Enumeration_CXTypeKind() : das::Enumeration("CXTypeKind") { @@ -675,6 +709,10 @@ public: addIEx("OCLIntelSubgroupAVCImeResult", "CXType_OCLIntelSubgroupAVCImeResult", int64_t(CXTypeKind::CXType_OCLIntelSubgroupAVCImeResult), das::LineInfo()); addIEx("OCLIntelSubgroupAVCRefResult", "CXType_OCLIntelSubgroupAVCRefResult", int64_t(CXTypeKind::CXType_OCLIntelSubgroupAVCRefResult), das::LineInfo()); addIEx("OCLIntelSubgroupAVCSicResult", "CXType_OCLIntelSubgroupAVCSicResult", int64_t(CXTypeKind::CXType_OCLIntelSubgroupAVCSicResult), das::LineInfo()); + addIEx("OCLIntelSubgroupAVCImeResultSingleReferenceStreamout", "CXType_OCLIntelSubgroupAVCImeResultSingleReferenceStreamout", int64_t(CXTypeKind::CXType_OCLIntelSubgroupAVCImeResultSingleReferenceStreamout), das::LineInfo()); + addIEx("OCLIntelSubgroupAVCImeResultDualReferenceStreamout", "CXType_OCLIntelSubgroupAVCImeResultDualReferenceStreamout", int64_t(CXTypeKind::CXType_OCLIntelSubgroupAVCImeResultDualReferenceStreamout), das::LineInfo()); + addIEx("OCLIntelSubgroupAVCImeSingleReferenceStreamin", "CXType_OCLIntelSubgroupAVCImeSingleReferenceStreamin", int64_t(CXTypeKind::CXType_OCLIntelSubgroupAVCImeSingleReferenceStreamin), das::LineInfo()); + addIEx("OCLIntelSubgroupAVCImeDualReferenceStreamin", "CXType_OCLIntelSubgroupAVCImeDualReferenceStreamin", int64_t(CXTypeKind::CXType_OCLIntelSubgroupAVCImeDualReferenceStreamin), das::LineInfo()); addIEx("OCLIntelSubgroupAVCImeResultSingleRefStreamout", "CXType_OCLIntelSubgroupAVCImeResultSingleRefStreamout", int64_t(CXTypeKind::CXType_OCLIntelSubgroupAVCImeResultSingleRefStreamout), das::LineInfo()); addIEx("OCLIntelSubgroupAVCImeResultDualRefStreamout", "CXType_OCLIntelSubgroupAVCImeResultDualRefStreamout", int64_t(CXTypeKind::CXType_OCLIntelSubgroupAVCImeResultDualRefStreamout), das::LineInfo()); addIEx("OCLIntelSubgroupAVCImeSingleRefStreamin", "CXType_OCLIntelSubgroupAVCImeSingleRefStreamin", int64_t(CXTypeKind::CXType_OCLIntelSubgroupAVCImeSingleRefStreamin), das::LineInfo()); @@ -682,10 +720,13 @@ public: addIEx("ExtVector", "CXType_ExtVector", int64_t(CXTypeKind::CXType_ExtVector), das::LineInfo()); addIEx("Atomic", "CXType_Atomic", int64_t(CXTypeKind::CXType_Atomic), das::LineInfo()); addIEx("BTFTagAttributed", "CXType_BTFTagAttributed", int64_t(CXTypeKind::CXType_BTFTagAttributed), das::LineInfo()); + addIEx("HLSLResource", "CXType_HLSLResource", int64_t(CXTypeKind::CXType_HLSLResource), das::LineInfo()); + addIEx("HLSLAttributedResource", "CXType_HLSLAttributedResource", int64_t(CXTypeKind::CXType_HLSLAttributedResource), das::LineInfo()); + addIEx("HLSLInlineSpirv", "CXType_HLSLInlineSpirv", int64_t(CXTypeKind::CXType_HLSLInlineSpirv), das::LineInfo()); } }; -// from clang-c/Index.h:2804:6 +// from clang-c/Index.h:3048:6 class Enumeration_CXCallingConv : public das::Enumeration { public: Enumeration_CXCallingConv() : das::Enumeration("CXCallingConv") { @@ -712,12 +753,27 @@ public: addIEx("AArch64VectorCall", "CXCallingConv_AArch64VectorCall", int64_t(CXCallingConv::CXCallingConv_AArch64VectorCall), das::LineInfo()); addIEx("SwiftAsync", "CXCallingConv_SwiftAsync", int64_t(CXCallingConv::CXCallingConv_SwiftAsync), das::LineInfo()); addIEx("AArch64SVEPCS", "CXCallingConv_AArch64SVEPCS", int64_t(CXCallingConv::CXCallingConv_AArch64SVEPCS), das::LineInfo()); + addIEx("M68kRTD", "CXCallingConv_M68kRTD", int64_t(CXCallingConv::CXCallingConv_M68kRTD), das::LineInfo()); + addIEx("PreserveNone", "CXCallingConv_PreserveNone", int64_t(CXCallingConv::CXCallingConv_PreserveNone), das::LineInfo()); + addIEx("RISCVVectorCall", "CXCallingConv_RISCVVectorCall", int64_t(CXCallingConv::CXCallingConv_RISCVVectorCall), das::LineInfo()); + addIEx("RISCVVLSCall_32", "CXCallingConv_RISCVVLSCall_32", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_32), das::LineInfo()); + addIEx("RISCVVLSCall_64", "CXCallingConv_RISCVVLSCall_64", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_64), das::LineInfo()); + addIEx("RISCVVLSCall_128", "CXCallingConv_RISCVVLSCall_128", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_128), das::LineInfo()); + addIEx("RISCVVLSCall_256", "CXCallingConv_RISCVVLSCall_256", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_256), das::LineInfo()); + addIEx("RISCVVLSCall_512", "CXCallingConv_RISCVVLSCall_512", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_512), das::LineInfo()); + addIEx("RISCVVLSCall_1024", "CXCallingConv_RISCVVLSCall_1024", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_1024), das::LineInfo()); + addIEx("RISCVVLSCall_2048", "CXCallingConv_RISCVVLSCall_2048", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_2048), das::LineInfo()); + addIEx("RISCVVLSCall_4096", "CXCallingConv_RISCVVLSCall_4096", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_4096), das::LineInfo()); + addIEx("RISCVVLSCall_8192", "CXCallingConv_RISCVVLSCall_8192", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_8192), das::LineInfo()); + addIEx("RISCVVLSCall_16384", "CXCallingConv_RISCVVLSCall_16384", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_16384), das::LineInfo()); + addIEx("RISCVVLSCall_32768", "CXCallingConv_RISCVVLSCall_32768", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_32768), das::LineInfo()); + addIEx("RISCVVLSCall_65536", "CXCallingConv_RISCVVLSCall_65536", int64_t(CXCallingConv::CXCallingConv_RISCVVLSCall_65536), das::LineInfo()); addIEx("Invalid", "CXCallingConv_Invalid", int64_t(CXCallingConv::CXCallingConv_Invalid), das::LineInfo()); addIEx("Unexposed", "CXCallingConv_Unexposed", int64_t(CXCallingConv::CXCallingConv_Unexposed), das::LineInfo()); } }; -// from clang-c/Index.h:2921:6 +// from clang-c/Index.h:3196:6 class Enumeration_CXTemplateArgumentKind : public das::Enumeration { public: Enumeration_CXTemplateArgumentKind() : das::Enumeration("CXTemplateArgumentKind") { @@ -737,7 +793,7 @@ public: } }; -// from clang-c/Index.h:3325:6 +// from clang-c/Index.h:3600:6 class Enumeration_CXTypeNullabilityKind : public das::Enumeration { public: Enumeration_CXTypeNullabilityKind() : das::Enumeration("CXTypeNullabilityKind") { @@ -752,7 +808,7 @@ public: } }; -// from clang-c/Index.h:3368:6 +// from clang-c/Index.h:3643:6 class Enumeration_CXTypeLayoutError : public das::Enumeration { public: Enumeration_CXTypeLayoutError() : das::Enumeration("CXTypeLayoutError") { @@ -768,7 +824,7 @@ public: } }; -// from clang-c/Index.h:3489:6 +// from clang-c/Index.h:3764:6 class Enumeration_CXRefQualifierKind : public das::Enumeration { public: Enumeration_CXRefQualifierKind() : das::Enumeration("CXRefQualifierKind") { @@ -781,7 +837,7 @@ public: } }; -// from clang-c/Index.h:3538:6 +// from clang-c/Index.h:3816:6 class Enumeration_CX_CXXAccessSpecifier : public das::Enumeration { public: Enumeration_CX_CXXAccessSpecifier() : das::Enumeration("CX_CXXAccessSpecifier") { @@ -795,7 +851,7 @@ public: } }; -// from clang-c/Index.h:3558:6 +// from clang-c/Index.h:3836:6 class Enumeration_CX_StorageClass : public das::Enumeration { public: Enumeration_CX_StorageClass() : das::Enumeration("CX_StorageClass") { @@ -813,7 +869,52 @@ public: } }; -// from clang-c/Index.h:3642:6 +// from clang-c/Index.h:3850:6 +class Enumeration_CX_BinaryOperatorKind : public das::Enumeration { +public: + Enumeration_CX_BinaryOperatorKind() : das::Enumeration("CX_BinaryOperatorKind") { + external = true; + cppName = "CX_BinaryOperatorKind"; + baseType = (das::Type) das::ToBasicType::type; + addIEx("CX_BO_Invalid", "CX_BO_Invalid", int64_t(CX_BinaryOperatorKind::CX_BO_Invalid), das::LineInfo()); + addIEx("CX_BO_PtrMemD", "CX_BO_PtrMemD", int64_t(CX_BinaryOperatorKind::CX_BO_PtrMemD), das::LineInfo()); + addIEx("CX_BO_PtrMemI", "CX_BO_PtrMemI", int64_t(CX_BinaryOperatorKind::CX_BO_PtrMemI), das::LineInfo()); + addIEx("CX_BO_Mul", "CX_BO_Mul", int64_t(CX_BinaryOperatorKind::CX_BO_Mul), das::LineInfo()); + addIEx("CX_BO_Div", "CX_BO_Div", int64_t(CX_BinaryOperatorKind::CX_BO_Div), das::LineInfo()); + addIEx("CX_BO_Rem", "CX_BO_Rem", int64_t(CX_BinaryOperatorKind::CX_BO_Rem), das::LineInfo()); + addIEx("CX_BO_Add", "CX_BO_Add", int64_t(CX_BinaryOperatorKind::CX_BO_Add), das::LineInfo()); + addIEx("CX_BO_Sub", "CX_BO_Sub", int64_t(CX_BinaryOperatorKind::CX_BO_Sub), das::LineInfo()); + addIEx("CX_BO_Shl", "CX_BO_Shl", int64_t(CX_BinaryOperatorKind::CX_BO_Shl), das::LineInfo()); + addIEx("CX_BO_Shr", "CX_BO_Shr", int64_t(CX_BinaryOperatorKind::CX_BO_Shr), das::LineInfo()); + addIEx("CX_BO_Cmp", "CX_BO_Cmp", int64_t(CX_BinaryOperatorKind::CX_BO_Cmp), das::LineInfo()); + addIEx("CX_BO_LT", "CX_BO_LT", int64_t(CX_BinaryOperatorKind::CX_BO_LT), das::LineInfo()); + addIEx("CX_BO_GT", "CX_BO_GT", int64_t(CX_BinaryOperatorKind::CX_BO_GT), das::LineInfo()); + addIEx("CX_BO_LE", "CX_BO_LE", int64_t(CX_BinaryOperatorKind::CX_BO_LE), das::LineInfo()); + addIEx("CX_BO_GE", "CX_BO_GE", int64_t(CX_BinaryOperatorKind::CX_BO_GE), das::LineInfo()); + addIEx("CX_BO_EQ", "CX_BO_EQ", int64_t(CX_BinaryOperatorKind::CX_BO_EQ), das::LineInfo()); + addIEx("CX_BO_NE", "CX_BO_NE", int64_t(CX_BinaryOperatorKind::CX_BO_NE), das::LineInfo()); + addIEx("CX_BO_And", "CX_BO_And", int64_t(CX_BinaryOperatorKind::CX_BO_And), das::LineInfo()); + addIEx("CX_BO_Xor", "CX_BO_Xor", int64_t(CX_BinaryOperatorKind::CX_BO_Xor), das::LineInfo()); + addIEx("CX_BO_Or", "CX_BO_Or", int64_t(CX_BinaryOperatorKind::CX_BO_Or), das::LineInfo()); + addIEx("CX_BO_LAnd", "CX_BO_LAnd", int64_t(CX_BinaryOperatorKind::CX_BO_LAnd), das::LineInfo()); + addIEx("CX_BO_LOr", "CX_BO_LOr", int64_t(CX_BinaryOperatorKind::CX_BO_LOr), das::LineInfo()); + addIEx("CX_BO_Assign", "CX_BO_Assign", int64_t(CX_BinaryOperatorKind::CX_BO_Assign), das::LineInfo()); + addIEx("CX_BO_MulAssign", "CX_BO_MulAssign", int64_t(CX_BinaryOperatorKind::CX_BO_MulAssign), das::LineInfo()); + addIEx("CX_BO_DivAssign", "CX_BO_DivAssign", int64_t(CX_BinaryOperatorKind::CX_BO_DivAssign), das::LineInfo()); + addIEx("CX_BO_RemAssign", "CX_BO_RemAssign", int64_t(CX_BinaryOperatorKind::CX_BO_RemAssign), das::LineInfo()); + addIEx("CX_BO_AddAssign", "CX_BO_AddAssign", int64_t(CX_BinaryOperatorKind::CX_BO_AddAssign), das::LineInfo()); + addIEx("CX_BO_SubAssign", "CX_BO_SubAssign", int64_t(CX_BinaryOperatorKind::CX_BO_SubAssign), das::LineInfo()); + addIEx("CX_BO_ShlAssign", "CX_BO_ShlAssign", int64_t(CX_BinaryOperatorKind::CX_BO_ShlAssign), das::LineInfo()); + addIEx("CX_BO_ShrAssign", "CX_BO_ShrAssign", int64_t(CX_BinaryOperatorKind::CX_BO_ShrAssign), das::LineInfo()); + addIEx("CX_BO_AndAssign", "CX_BO_AndAssign", int64_t(CX_BinaryOperatorKind::CX_BO_AndAssign), das::LineInfo()); + addIEx("CX_BO_XorAssign", "CX_BO_XorAssign", int64_t(CX_BinaryOperatorKind::CX_BO_XorAssign), das::LineInfo()); + addIEx("CX_BO_OrAssign", "CX_BO_OrAssign", int64_t(CX_BinaryOperatorKind::CX_BO_OrAssign), das::LineInfo()); + addIEx("CX_BO_Comma", "CX_BO_Comma", int64_t(CX_BinaryOperatorKind::CX_BO_Comma), das::LineInfo()); + addIEx("CX_BO_LAST", "CX_BO_LAST", int64_t(CX_BinaryOperatorKind::CX_BO_LAST), das::LineInfo()); + } +}; + +// from clang-c/Index.h:3977:6 class Enumeration_CXChildVisitResult : public das::Enumeration { public: Enumeration_CXChildVisitResult() : das::Enumeration("CXChildVisitResult") { @@ -826,7 +927,7 @@ public: } }; -// from clang-c/Index.h:3819:6 +// from clang-c/Index.h:4154:6 class Enumeration_CXPrintingPolicyProperty : public das::Enumeration { public: Enumeration_CXPrintingPolicyProperty() : das::Enumeration("CXPrintingPolicyProperty") { @@ -863,7 +964,7 @@ public: } }; -// from clang-c/Index.h:4010:9 +// from clang-c/Index.h:4365:9 class Enumeration_CXObjCPropertyAttrKind : public das::Enumeration { public: Enumeration_CXObjCPropertyAttrKind() : das::Enumeration("CXObjCPropertyAttrKind") { @@ -887,7 +988,7 @@ public: } }; -// from clang-c/Index.h:4053:9 +// from clang-c/Index.h:4408:9 class Enumeration_CXObjCDeclQualifierKind : public das::Enumeration { public: Enumeration_CXObjCDeclQualifierKind() : das::Enumeration("CXObjCDeclQualifierKind") { @@ -904,7 +1005,7 @@ public: } }; -// from clang-c/Index.h:4433:6 +// from clang-c/Index.h:4956:6 class Enumeration_CXNameRefFlags : public das::Enumeration { public: Enumeration_CXNameRefFlags() : das::Enumeration("CXNameRefFlags") { @@ -917,7 +1018,7 @@ public: } }; -// from clang-c/Index.h:4476:14 +// from clang-c/Index.h:4999:14 class Enumeration_CXTokenKind : public das::Enumeration { public: Enumeration_CXTokenKind() : das::Enumeration("CXTokenKind") { @@ -932,7 +1033,7 @@ public: } }; -// from clang-c/Index.h:4691:6 +// from clang-c/Index.h:5214:6 class Enumeration_CXCompletionChunkKind : public das::Enumeration { public: Enumeration_CXCompletionChunkKind() : das::Enumeration("CXCompletionChunkKind") { @@ -963,7 +1064,7 @@ public: } }; -// from clang-c/Index.h:5082:6 +// from clang-c/Index.h:5605:6 class Enumeration_CXCodeComplete_Flags : public das::Enumeration { public: Enumeration_CXCodeComplete_Flags() : das::Enumeration("CXCodeComplete_Flags") { @@ -978,7 +1079,7 @@ public: } }; -// from clang-c/Index.h:5121:6 +// from clang-c/Index.h:5644:6 class Enumeration_CXCompletionContext : public das::Enumeration { public: Enumeration_CXCompletionContext() : das::Enumeration("CXCompletionContext") { @@ -1013,7 +1114,7 @@ public: } }; -// from clang-c/Index.h:5479:9 +// from clang-c/Index.h:6002:9 class Enumeration_CXEvalResultKind : public das::Enumeration { public: Enumeration_CXEvalResultKind() : das::Enumeration("CXEvalResultKind") { @@ -1030,7 +1131,7 @@ public: } }; -// from clang-c/Index.h:5622:6 +// from clang-c/Index.h:6085:6 class Enumeration_CXVisitorResult : public das::Enumeration { public: Enumeration_CXVisitorResult() : das::Enumeration("CXVisitorResult") { @@ -1042,7 +1143,7 @@ public: } }; -// from clang-c/Index.h:5629:9 +// from clang-c/Index.h:6092:9 class Enumeration_CXResult : public das::Enumeration { public: Enumeration_CXResult() : das::Enumeration("CXResult") { @@ -1055,7 +1156,7 @@ public: } }; -// from clang-c/Index.h:5774:9 +// from clang-c/Index.h:6235:9 class Enumeration_CXIdxEntityKind : public das::Enumeration { public: Enumeration_CXIdxEntityKind() : das::Enumeration("CXIdxEntityKind") { @@ -1093,7 +1194,7 @@ public: } }; -// from clang-c/Index.h:5810:9 +// from clang-c/Index.h:6271:9 class Enumeration_CXIdxEntityLanguage : public das::Enumeration { public: Enumeration_CXIdxEntityLanguage() : das::Enumeration("CXIdxEntityLanguage") { @@ -1108,7 +1209,7 @@ public: } }; -// from clang-c/Index.h:5828:9 +// from clang-c/Index.h:6289:9 class Enumeration_CXIdxEntityCXXTemplateKind : public das::Enumeration { public: Enumeration_CXIdxEntityCXXTemplateKind() : das::Enumeration("CXIdxEntityCXXTemplateKind") { @@ -1122,7 +1223,7 @@ public: } }; -// from clang-c/Index.h:5835:9 +// from clang-c/Index.h:6296:9 class Enumeration_CXIdxAttrKind : public das::Enumeration { public: Enumeration_CXIdxAttrKind() : das::Enumeration("CXIdxAttrKind") { @@ -1136,7 +1237,7 @@ public: } }; -// from clang-c/Index.h:5870:9 +// from clang-c/Index.h:6331:9 class Enumeration_CXIdxDeclInfoFlags : public das::Enumeration { public: Enumeration_CXIdxDeclInfoFlags() : das::Enumeration("CXIdxDeclInfoFlags") { @@ -1147,7 +1248,7 @@ public: } }; -// from clang-c/Index.h:5898:9 +// from clang-c/Index.h:6359:9 class Enumeration_CXIdxObjCContainerKind : public das::Enumeration { public: Enumeration_CXIdxObjCContainerKind() : das::Enumeration("CXIdxObjCContainerKind") { @@ -1160,7 +1261,7 @@ public: } }; -// from clang-c/Index.h:5958:9 +// from clang-c/Index.h:6419:9 class Enumeration_CXIdxEntityRefKind : public das::Enumeration { public: Enumeration_CXIdxEntityRefKind() : das::Enumeration("CXIdxEntityRefKind") { @@ -1172,7 +1273,7 @@ public: } }; -// from clang-c/Index.h:5976:9 +// from clang-c/Index.h:6437:9 class Enumeration_CXSymbolRole : public das::Enumeration { public: Enumeration_CXSymbolRole() : das::Enumeration("CXSymbolRole") { @@ -1192,7 +1293,7 @@ public: } }; -// from clang-c/Index.h:6148:9 +// from clang-c/Index.h:6609:9 class Enumeration_CXIndexOptFlags : public das::Enumeration { public: Enumeration_CXIndexOptFlags() : das::Enumeration("CXIndexOptFlags") { @@ -1208,3 +1309,73 @@ public: } }; +// from clang-c/Index.h:6816:6 +class Enumeration_CXBinaryOperatorKind : public das::Enumeration { +public: + Enumeration_CXBinaryOperatorKind() : das::Enumeration("CXBinaryOperatorKind") { + external = true; + cppName = "CXBinaryOperatorKind"; + baseType = (das::Type) das::ToBasicType::type; + addIEx("CXBinaryOperator_Invalid", "CXBinaryOperator_Invalid", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Invalid), das::LineInfo()); + addIEx("CXBinaryOperator_PtrMemD", "CXBinaryOperator_PtrMemD", int64_t(CXBinaryOperatorKind::CXBinaryOperator_PtrMemD), das::LineInfo()); + addIEx("CXBinaryOperator_PtrMemI", "CXBinaryOperator_PtrMemI", int64_t(CXBinaryOperatorKind::CXBinaryOperator_PtrMemI), das::LineInfo()); + addIEx("CXBinaryOperator_Mul", "CXBinaryOperator_Mul", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Mul), das::LineInfo()); + addIEx("CXBinaryOperator_Div", "CXBinaryOperator_Div", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Div), das::LineInfo()); + addIEx("CXBinaryOperator_Rem", "CXBinaryOperator_Rem", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Rem), das::LineInfo()); + addIEx("CXBinaryOperator_Add", "CXBinaryOperator_Add", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Add), das::LineInfo()); + addIEx("CXBinaryOperator_Sub", "CXBinaryOperator_Sub", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Sub), das::LineInfo()); + addIEx("CXBinaryOperator_Shl", "CXBinaryOperator_Shl", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Shl), das::LineInfo()); + addIEx("CXBinaryOperator_Shr", "CXBinaryOperator_Shr", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Shr), das::LineInfo()); + addIEx("CXBinaryOperator_Cmp", "CXBinaryOperator_Cmp", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Cmp), das::LineInfo()); + addIEx("CXBinaryOperator_LT", "CXBinaryOperator_LT", int64_t(CXBinaryOperatorKind::CXBinaryOperator_LT), das::LineInfo()); + addIEx("CXBinaryOperator_GT", "CXBinaryOperator_GT", int64_t(CXBinaryOperatorKind::CXBinaryOperator_GT), das::LineInfo()); + addIEx("CXBinaryOperator_LE", "CXBinaryOperator_LE", int64_t(CXBinaryOperatorKind::CXBinaryOperator_LE), das::LineInfo()); + addIEx("CXBinaryOperator_GE", "CXBinaryOperator_GE", int64_t(CXBinaryOperatorKind::CXBinaryOperator_GE), das::LineInfo()); + addIEx("CXBinaryOperator_EQ", "CXBinaryOperator_EQ", int64_t(CXBinaryOperatorKind::CXBinaryOperator_EQ), das::LineInfo()); + addIEx("CXBinaryOperator_NE", "CXBinaryOperator_NE", int64_t(CXBinaryOperatorKind::CXBinaryOperator_NE), das::LineInfo()); + addIEx("CXBinaryOperator_And", "CXBinaryOperator_And", int64_t(CXBinaryOperatorKind::CXBinaryOperator_And), das::LineInfo()); + addIEx("CXBinaryOperator_Xor", "CXBinaryOperator_Xor", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Xor), das::LineInfo()); + addIEx("CXBinaryOperator_Or", "CXBinaryOperator_Or", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Or), das::LineInfo()); + addIEx("CXBinaryOperator_LAnd", "CXBinaryOperator_LAnd", int64_t(CXBinaryOperatorKind::CXBinaryOperator_LAnd), das::LineInfo()); + addIEx("CXBinaryOperator_LOr", "CXBinaryOperator_LOr", int64_t(CXBinaryOperatorKind::CXBinaryOperator_LOr), das::LineInfo()); + addIEx("CXBinaryOperator_Assign", "CXBinaryOperator_Assign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Assign), das::LineInfo()); + addIEx("CXBinaryOperator_MulAssign", "CXBinaryOperator_MulAssign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_MulAssign), das::LineInfo()); + addIEx("CXBinaryOperator_DivAssign", "CXBinaryOperator_DivAssign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_DivAssign), das::LineInfo()); + addIEx("CXBinaryOperator_RemAssign", "CXBinaryOperator_RemAssign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_RemAssign), das::LineInfo()); + addIEx("CXBinaryOperator_AddAssign", "CXBinaryOperator_AddAssign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_AddAssign), das::LineInfo()); + addIEx("CXBinaryOperator_SubAssign", "CXBinaryOperator_SubAssign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_SubAssign), das::LineInfo()); + addIEx("CXBinaryOperator_ShlAssign", "CXBinaryOperator_ShlAssign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_ShlAssign), das::LineInfo()); + addIEx("CXBinaryOperator_ShrAssign", "CXBinaryOperator_ShrAssign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_ShrAssign), das::LineInfo()); + addIEx("CXBinaryOperator_AndAssign", "CXBinaryOperator_AndAssign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_AndAssign), das::LineInfo()); + addIEx("CXBinaryOperator_XorAssign", "CXBinaryOperator_XorAssign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_XorAssign), das::LineInfo()); + addIEx("CXBinaryOperator_OrAssign", "CXBinaryOperator_OrAssign", int64_t(CXBinaryOperatorKind::CXBinaryOperator_OrAssign), das::LineInfo()); + addIEx("CXBinaryOperator_Comma", "CXBinaryOperator_Comma", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Comma), das::LineInfo()); + addIEx("CXBinaryOperator_Last", "CXBinaryOperator_Last", int64_t(CXBinaryOperatorKind::CXBinaryOperator_Last), das::LineInfo()); + } +}; + +// from clang-c/Index.h:6905:6 +class Enumeration_CXUnaryOperatorKind : public das::Enumeration { +public: + Enumeration_CXUnaryOperatorKind() : das::Enumeration("CXUnaryOperatorKind") { + external = true; + cppName = "CXUnaryOperatorKind"; + baseType = (das::Type) das::ToBasicType::type; + addIEx("CXUnaryOperator_Invalid", "CXUnaryOperator_Invalid", int64_t(CXUnaryOperatorKind::CXUnaryOperator_Invalid), das::LineInfo()); + addIEx("CXUnaryOperator_PostInc", "CXUnaryOperator_PostInc", int64_t(CXUnaryOperatorKind::CXUnaryOperator_PostInc), das::LineInfo()); + addIEx("CXUnaryOperator_PostDec", "CXUnaryOperator_PostDec", int64_t(CXUnaryOperatorKind::CXUnaryOperator_PostDec), das::LineInfo()); + addIEx("CXUnaryOperator_PreInc", "CXUnaryOperator_PreInc", int64_t(CXUnaryOperatorKind::CXUnaryOperator_PreInc), das::LineInfo()); + addIEx("CXUnaryOperator_PreDec", "CXUnaryOperator_PreDec", int64_t(CXUnaryOperatorKind::CXUnaryOperator_PreDec), das::LineInfo()); + addIEx("CXUnaryOperator_AddrOf", "CXUnaryOperator_AddrOf", int64_t(CXUnaryOperatorKind::CXUnaryOperator_AddrOf), das::LineInfo()); + addIEx("CXUnaryOperator_Deref", "CXUnaryOperator_Deref", int64_t(CXUnaryOperatorKind::CXUnaryOperator_Deref), das::LineInfo()); + addIEx("CXUnaryOperator_Plus", "CXUnaryOperator_Plus", int64_t(CXUnaryOperatorKind::CXUnaryOperator_Plus), das::LineInfo()); + addIEx("CXUnaryOperator_Minus", "CXUnaryOperator_Minus", int64_t(CXUnaryOperatorKind::CXUnaryOperator_Minus), das::LineInfo()); + addIEx("CXUnaryOperator_Not", "CXUnaryOperator_Not", int64_t(CXUnaryOperatorKind::CXUnaryOperator_Not), das::LineInfo()); + addIEx("CXUnaryOperator_LNot", "CXUnaryOperator_LNot", int64_t(CXUnaryOperatorKind::CXUnaryOperator_LNot), das::LineInfo()); + addIEx("CXUnaryOperator_Real", "CXUnaryOperator_Real", int64_t(CXUnaryOperatorKind::CXUnaryOperator_Real), das::LineInfo()); + addIEx("CXUnaryOperator_Imag", "CXUnaryOperator_Imag", int64_t(CXUnaryOperatorKind::CXUnaryOperator_Imag), das::LineInfo()); + addIEx("CXUnaryOperator_Extension", "CXUnaryOperator_Extension", int64_t(CXUnaryOperatorKind::CXUnaryOperator_Extension), das::LineInfo()); + addIEx("CXUnaryOperator_Coawait", "CXUnaryOperator_Coawait", int64_t(CXUnaryOperatorKind::CXUnaryOperator_Coawait), das::LineInfo()); + } +}; + diff --git a/modules/dasClangBind/src/dasClangBind.enum.decl.cast.inc b/modules/dasClangBind/src/dasClangBind.enum.decl.cast.inc index c607bedac7..43b4bc037f 100644 --- a/modules/dasClangBind/src/dasClangBind.enum.decl.cast.inc +++ b/modules/dasClangBind/src/dasClangBind.enum.decl.cast.inc @@ -8,6 +8,7 @@ DAS_BIND_ENUM_CAST(CXLoadDiag_Error); DAS_BIND_ENUM_CAST(CXDiagnosticDisplayOptions); DAS_BIND_ENUM_CAST(CXAvailabilityKind); DAS_BIND_ENUM_CAST(CXCursor_ExceptionSpecificationKind); +DAS_BIND_ENUM_CAST(CXChoice); DAS_BIND_ENUM_CAST(CXGlobalOptFlags); DAS_BIND_ENUM_CAST(CXTranslationUnit_Flags); DAS_BIND_ENUM_CAST(CXSaveTranslationUnit_Flags); @@ -27,6 +28,7 @@ DAS_BIND_ENUM_CAST(CXTypeLayoutError); DAS_BIND_ENUM_CAST(CXRefQualifierKind); DAS_BIND_ENUM_CAST(CX_CXXAccessSpecifier); DAS_BIND_ENUM_CAST(CX_StorageClass); +DAS_BIND_ENUM_CAST(CX_BinaryOperatorKind); DAS_BIND_ENUM_CAST(CXChildVisitResult); DAS_BIND_ENUM_CAST(CXPrintingPolicyProperty); DAS_BIND_ENUM_CAST(CXObjCPropertyAttrKind); @@ -48,3 +50,5 @@ DAS_BIND_ENUM_CAST(CXIdxObjCContainerKind); DAS_BIND_ENUM_CAST(CXIdxEntityRefKind); DAS_BIND_ENUM_CAST(CXSymbolRole); DAS_BIND_ENUM_CAST(CXIndexOptFlags); +DAS_BIND_ENUM_CAST(CXBinaryOperatorKind); +DAS_BIND_ENUM_CAST(CXUnaryOperatorKind); diff --git a/modules/dasClangBind/src/dasClangBind.enum.decl.inc b/modules/dasClangBind/src/dasClangBind.enum.decl.inc index eaf994c35d..2711e449a7 100644 --- a/modules/dasClangBind/src/dasClangBind.enum.decl.inc +++ b/modules/dasClangBind/src/dasClangBind.enum.decl.inc @@ -13,6 +13,8 @@ DAS_BASE_BIND_ENUM_GEN(CXAvailabilityKind,CXAvailabilityKind); DAS_BASE_BIND_ENUM_GEN(CXCursor_ExceptionSpecificationKind,CXCursor_ExceptionSpecificationKind); +DAS_BASE_BIND_ENUM_GEN(CXChoice,CXChoice); + DAS_BASE_BIND_ENUM_GEN(CXGlobalOptFlags,CXGlobalOptFlags); DAS_BASE_BIND_ENUM_GEN(CXTranslationUnit_Flags,CXTranslationUnit_Flags); @@ -51,6 +53,8 @@ DAS_BASE_BIND_ENUM_GEN(CX_CXXAccessSpecifier,CX_CXXAccessSpecifier); DAS_BASE_BIND_ENUM_GEN(CX_StorageClass,CX_StorageClass); +DAS_BASE_BIND_ENUM_GEN(CX_BinaryOperatorKind,CX_BinaryOperatorKind); + DAS_BASE_BIND_ENUM_GEN(CXChildVisitResult,CXChildVisitResult); DAS_BASE_BIND_ENUM_GEN(CXPrintingPolicyProperty,CXPrintingPolicyProperty); @@ -93,3 +97,7 @@ DAS_BASE_BIND_ENUM_GEN(CXSymbolRole,CXSymbolRole); DAS_BASE_BIND_ENUM_GEN(CXIndexOptFlags,CXIndexOptFlags); +DAS_BASE_BIND_ENUM_GEN(CXBinaryOperatorKind,CXBinaryOperatorKind); + +DAS_BASE_BIND_ENUM_GEN(CXUnaryOperatorKind,CXUnaryOperatorKind); + diff --git a/modules/dasClangBind/src/dasClangBind.func.decl.inc b/modules/dasClangBind/src/dasClangBind.func.decl.inc index bf51a18408..0c846d1b7b 100644 --- a/modules/dasClangBind/src/dasClangBind.func.decl.inc +++ b/modules/dasClangBind/src/dasClangBind.func.decl.inc @@ -18,3 +18,4 @@ void initFunctions_14(); void initFunctions_15(); void initFunctions_16(); void initFunctions_17(); +void initFunctions_18(); diff --git a/modules/dasClangBind/src/dasClangBind.func.reg.inc b/modules/dasClangBind/src/dasClangBind.func.reg.inc index c9e7b424e5..b6d44f0f91 100644 --- a/modules/dasClangBind/src/dasClangBind.func.reg.inc +++ b/modules/dasClangBind/src/dasClangBind.func.reg.inc @@ -18,3 +18,4 @@ initFunctions_14(); initFunctions_15(); initFunctions_16(); initFunctions_17(); +initFunctions_18(); diff --git a/modules/dasClangBind/src/dasClangBind.func_1.cpp b/modules/dasClangBind/src/dasClangBind.func_1.cpp index 40cf283239..5075dffeae 100644 --- a/modules/dasClangBind/src/dasClangBind.func_1.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_1.cpp @@ -12,15 +12,15 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_1() { -// from clang-c/CXString.h:50:28 +// from clang-c/CXString.h:54:28 makeExtern< const char * (*)(CXString) , clang_getCString , SimNode_ExtFuncCall >(lib,"clang_getCString","clang_getCString") ->args({"string"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXString.h:55:21 +// from clang-c/CXString.h:59:21 makeExtern< void (*)(CXString) , clang_disposeString , SimNode_ExtFuncCall >(lib,"clang_disposeString","clang_disposeString") ->args({"string"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXString.h:60:21 +// from clang-c/CXString.h:64:21 makeExtern< void (*)(CXStringSet *) , clang_disposeStringSet , SimNode_ExtFuncCall >(lib,"clang_disposeStringSet","clang_disposeStringSet") ->args({"set"}) ->addToModule(*this, SideEffects::worstDefault); @@ -51,45 +51,45 @@ void Module_dasClangBind::initFunctions_1() { makeExtern< unsigned int (*)(CXSourceLocation,CXSourceLocation) , clang_equalLocations , SimNode_ExtFuncCall >(lib,"clang_equalLocations","clang_equalLocations") ->args({"loc1","loc2"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:80:20 +// from clang-c/CXSourceLocation.h:84:25 + makeExtern< unsigned int (*)(CXSourceLocation,CXSourceLocation) , clang_isBeforeInTranslationUnit , SimNode_ExtFuncCall >(lib,"clang_isBeforeInTranslationUnit","clang_isBeforeInTranslationUnit") + ->args({"loc1","loc2"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/CXSourceLocation.h:90:20 makeExtern< int (*)(CXSourceLocation) , clang_Location_isInSystemHeader , SimNode_ExtFuncCall >(lib,"clang_Location_isInSystemHeader","clang_Location_isInSystemHeader") ->args({"location"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:86:20 +// from clang-c/CXSourceLocation.h:96:20 makeExtern< int (*)(CXSourceLocation) , clang_Location_isFromMainFile , SimNode_ExtFuncCall >(lib,"clang_Location_isFromMainFile","clang_Location_isFromMainFile") ->args({"location"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:91:30 +// from clang-c/CXSourceLocation.h:101:30 makeExtern< CXSourceRange (*)() , clang_getNullRange , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getNullRange","clang_getNullRange") ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:97:30 +// from clang-c/CXSourceLocation.h:107:30 makeExtern< CXSourceRange (*)(CXSourceLocation,CXSourceLocation) , clang_getRange , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getRange","clang_getRange") ->args({"begin","end"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:105:25 +// from clang-c/CXSourceLocation.h:115:25 makeExtern< unsigned int (*)(CXSourceRange,CXSourceRange) , clang_equalRanges , SimNode_ExtFuncCall >(lib,"clang_equalRanges","clang_equalRanges") ->args({"range1","range2"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:111:20 +// from clang-c/CXSourceLocation.h:121:20 makeExtern< int (*)(CXSourceRange) , clang_Range_isNull , SimNode_ExtFuncCall >(lib,"clang_Range_isNull","clang_Range_isNull") ->args({"range"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:135:21 +// from clang-c/CXSourceLocation.h:145:21 makeExtern< void (*)(CXSourceLocation,void **,unsigned int *,unsigned int *,unsigned int *) , clang_getExpansionLocation , SimNode_ExtFuncCall >(lib,"clang_getExpansionLocation","clang_getExpansionLocation") ->args({"location","file","line","column","offset"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:180:21 +// from clang-c/CXSourceLocation.h:190:21 makeExtern< void (*)(CXSourceLocation,CXString *,unsigned int *,unsigned int *) , clang_getPresumedLocation , SimNode_ExtFuncCall >(lib,"clang_getPresumedLocation","clang_getPresumedLocation") ->args({"location","filename","line","column"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:192:21 +// from clang-c/CXSourceLocation.h:202:21 makeExtern< void (*)(CXSourceLocation,void **,unsigned int *,unsigned int *,unsigned int *) , clang_getInstantiationLocation , SimNode_ExtFuncCall >(lib,"clang_getInstantiationLocation","clang_getInstantiationLocation") ->args({"location","file","line","column","offset"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:219:21 - makeExtern< void (*)(CXSourceLocation,void **,unsigned int *,unsigned int *,unsigned int *) , clang_getSpellingLocation , SimNode_ExtFuncCall >(lib,"clang_getSpellingLocation","clang_getSpellingLocation") - ->args({"location","file","line","column","offset"}) - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_10.cpp b/modules/dasClangBind/src/dasClangBind.func_10.cpp index 7c10220ba4..8dff5a78d1 100644 --- a/modules/dasClangBind/src/dasClangBind.func_10.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_10.cpp @@ -12,86 +12,86 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_10() { -// from clang-c/Index.h:3487:25 +// from clang-c/Index.h:3744:26 + makeExtern< long long (*)(CXCursor) , clang_Cursor_getOffsetOfField , SimNode_ExtFuncCall >(lib,"clang_Cursor_getOffsetOfField","clang_Cursor_getOffsetOfField") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3750:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isAnonymous , SimNode_ExtFuncCall >(lib,"clang_Cursor_isAnonymous","clang_Cursor_isAnonymous") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3756:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isAnonymousRecordDecl , SimNode_ExtFuncCall >(lib,"clang_Cursor_isAnonymousRecordDecl","clang_Cursor_isAnonymousRecordDecl") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3762:25 makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isInlineNamespace , SimNode_ExtFuncCall >(lib,"clang_Cursor_isInlineNamespace","clang_Cursor_isInlineNamespace") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3502:20 +// from clang-c/Index.h:3777:20 makeExtern< int (*)(CXType) , clang_Type_getNumTemplateArguments , SimNode_ExtFuncCall >(lib,"clang_Type_getNumTemplateArguments","clang_Type_getNumTemplateArguments") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3511:23 +// from clang-c/Index.h:3786:23 makeExtern< CXType (*)(CXType,unsigned int) , clang_Type_getTemplateArgumentAsType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getTemplateArgumentAsType","clang_Type_getTemplateArgumentAsType") ->args({"T","i"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3520:40 +// from clang-c/Index.h:3795:40 makeExtern< CXRefQualifierKind (*)(CXType) , clang_Type_getCXXRefQualifier , SimNode_ExtFuncCall >(lib,"clang_Type_getCXXRefQualifier","clang_Type_getCXXRefQualifier") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3526:25 - makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isBitField , SimNode_ExtFuncCall >(lib,"clang_Cursor_isBitField","clang_Cursor_isBitField") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3532:25 +// from clang-c/Index.h:3801:25 makeExtern< unsigned int (*)(CXCursor) , clang_isVirtualBase , SimNode_ExtFuncCall >(lib,"clang_isVirtualBase","clang_isVirtualBase") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3552:43 +// from clang-c/Index.h:3810:26 + makeExtern< long long (*)(CXCursor,CXCursor) , clang_getOffsetOfBase , SimNode_ExtFuncCall >(lib,"clang_getOffsetOfBase","clang_getOffsetOfBase") + ->args({"Parent","Base"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3830:43 makeExtern< CX_CXXAccessSpecifier (*)(CXCursor) , clang_getCXXAccessSpecifier , SimNode_ExtFuncCall >(lib,"clang_getCXXAccessSpecifier","clang_getCXXAccessSpecifier") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3575:37 +// from clang-c/Index.h:3894:1 + makeExtern< CX_BinaryOperatorKind (*)(CXCursor) , clang_Cursor_getBinaryOpcode , SimNode_ExtFuncCall >(lib,"clang_Cursor_getBinaryOpcode","clang_Cursor_getBinaryOpcode") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3902:1 + makeExtern< CXString (*)(CX_BinaryOperatorKind) , clang_Cursor_getBinaryOpcodeStr , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getBinaryOpcodeStr","clang_Cursor_getBinaryOpcodeStr") + ->args({"Op"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3910:37 makeExtern< CX_StorageClass (*)(CXCursor) , clang_Cursor_getStorageClass , SimNode_ExtFuncCall >(lib,"clang_Cursor_getStorageClass","clang_Cursor_getStorageClass") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3586:25 +// from clang-c/Index.h:3921:25 makeExtern< unsigned int (*)(CXCursor) , clang_getNumOverloadedDecls , SimNode_ExtFuncCall >(lib,"clang_getNumOverloadedDecls","clang_getNumOverloadedDecls") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3602:25 +// from clang-c/Index.h:3937:25 makeExtern< CXCursor (*)(CXCursor,unsigned int) , clang_getOverloadedDecl , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getOverloadedDecl","clang_getOverloadedDecl") ->args({"cursor","index"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3620:23 +// from clang-c/Index.h:3955:23 makeExtern< CXType (*)(CXCursor) , clang_getIBOutletCollectionType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getIBOutletCollectionType","clang_getIBOutletCollectionType") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3748:25 +// from clang-c/Index.h:4057:1 + makeExtern< unsigned int (*)(CXCursor,_CXChildVisitResult *) , clang_visitChildrenWithBlock , SimNode_ExtFuncCall >(lib,"clang_visitChildrenWithBlock","clang_visitChildrenWithBlock") + ->args({"parent","block"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4083:25 makeExtern< CXString (*)(CXCursor) , clang_getCursorUSR , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorUSR","clang_getCursorUSR") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3753:25 +// from clang-c/Index.h:4088:25 makeExtern< CXString (*)(const char *) , clang_constructUSR_ObjCClass , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_constructUSR_ObjCClass","clang_constructUSR_ObjCClass") ->args({"class_name"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3758:25 +// from clang-c/Index.h:4093:25 makeExtern< CXString (*)(const char *,const char *) , clang_constructUSR_ObjCCategory , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_constructUSR_ObjCCategory","clang_constructUSR_ObjCCategory") ->args({"class_name","category_name"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3765:1 - makeExtern< CXString (*)(const char *) , clang_constructUSR_ObjCProtocol , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_constructUSR_ObjCProtocol","clang_constructUSR_ObjCProtocol") - ->args({"protocol_name"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3771:25 - makeExtern< CXString (*)(const char *,CXString) , clang_constructUSR_ObjCIvar , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_constructUSR_ObjCIvar","clang_constructUSR_ObjCIvar") - ->args({"name","classUSR"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3778:25 - makeExtern< CXString (*)(const char *,unsigned int,CXString) , clang_constructUSR_ObjCMethod , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_constructUSR_ObjCMethod","clang_constructUSR_ObjCMethod") - ->args({"name","isInstanceMethod","classUSR"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3786:25 - makeExtern< CXString (*)(const char *,CXString) , clang_constructUSR_ObjCProperty , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_constructUSR_ObjCProperty","clang_constructUSR_ObjCProperty") - ->args({"property","classUSR"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3792:25 - makeExtern< CXString (*)(CXCursor) , clang_getCursorSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorSpelling","clang_getCursorSpelling") - ->args({""}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3805:30 - makeExtern< CXSourceRange (*)(CXCursor,unsigned int,unsigned int) , clang_Cursor_getSpellingNameRange , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getSpellingNameRange","clang_Cursor_getSpellingNameRange") - ->args({"","pieceIndex","options"}) - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_11.cpp b/modules/dasClangBind/src/dasClangBind.func_11.cpp index 57ab41e52d..91bda65b32 100644 --- a/modules/dasClangBind/src/dasClangBind.func_11.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_11.cpp @@ -12,86 +12,86 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_11() { -// from clang-c/Index.h:3854:1 +// from clang-c/Index.h:4100:1 + makeExtern< CXString (*)(const char *) , clang_constructUSR_ObjCProtocol , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_constructUSR_ObjCProtocol","clang_constructUSR_ObjCProtocol") + ->args({"protocol_name"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4106:25 + makeExtern< CXString (*)(const char *,CXString) , clang_constructUSR_ObjCIvar , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_constructUSR_ObjCIvar","clang_constructUSR_ObjCIvar") + ->args({"name","classUSR"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4113:25 + makeExtern< CXString (*)(const char *,unsigned int,CXString) , clang_constructUSR_ObjCMethod , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_constructUSR_ObjCMethod","clang_constructUSR_ObjCMethod") + ->args({"name","isInstanceMethod","classUSR"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4121:25 + makeExtern< CXString (*)(const char *,CXString) , clang_constructUSR_ObjCProperty , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_constructUSR_ObjCProperty","clang_constructUSR_ObjCProperty") + ->args({"property","classUSR"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4127:25 + makeExtern< CXString (*)(CXCursor) , clang_getCursorSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorSpelling","clang_getCursorSpelling") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4140:30 + makeExtern< CXSourceRange (*)(CXCursor,unsigned int,unsigned int) , clang_Cursor_getSpellingNameRange , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getSpellingNameRange","clang_Cursor_getSpellingNameRange") + ->args({"","pieceIndex","options"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4189:1 makeExtern< unsigned int (*)(void *,CXPrintingPolicyProperty) , clang_PrintingPolicy_getProperty , SimNode_ExtFuncCall >(lib,"clang_PrintingPolicy_getProperty","clang_PrintingPolicy_getProperty") ->args({"Policy","Property"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3861:1 +// from clang-c/Index.h:4196:1 makeExtern< void (*)(void *,CXPrintingPolicyProperty,unsigned int) , clang_PrintingPolicy_setProperty , SimNode_ExtFuncCall >(lib,"clang_PrintingPolicy_setProperty","clang_PrintingPolicy_setProperty") ->args({"Policy","Property","Value"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3871:33 +// from clang-c/Index.h:4206:33 makeExtern< void * (*)(CXCursor) , clang_getCursorPrintingPolicy , SimNode_ExtFuncCall >(lib,"clang_getCursorPrintingPolicy","clang_getCursorPrintingPolicy") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3876:21 +// from clang-c/Index.h:4211:21 makeExtern< void (*)(void *) , clang_PrintingPolicy_dispose , SimNode_ExtFuncCall >(lib,"clang_PrintingPolicy_dispose","clang_PrintingPolicy_dispose") ->args({"Policy"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3889:25 +// from clang-c/Index.h:4224:25 makeExtern< CXString (*)(CXCursor,void *) , clang_getCursorPrettyPrinted , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorPrettyPrinted","clang_getCursorPrettyPrinted") ->args({"Cursor","Policy"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3899:25 +// from clang-c/Index.h:4232:25 + makeExtern< CXString (*)(CXType,void *) , clang_getTypePrettyPrinted , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTypePrettyPrinted","clang_getTypePrettyPrinted") + ->args({"CT","cxPolicy"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4244:25 + makeExtern< CXString (*)(CXType,void *,unsigned int) , clang_getFullyQualifiedName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getFullyQualifiedName","clang_getFullyQualifiedName") + ->args({"CT","Policy","WithGlobalNsPrefix"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4254:25 makeExtern< CXString (*)(CXCursor) , clang_getCursorDisplayName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorDisplayName","clang_getCursorDisplayName") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3911:25 +// from clang-c/Index.h:4266:25 makeExtern< CXCursor (*)(CXCursor) , clang_getCursorReferenced , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorReferenced","clang_getCursorReferenced") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3941:25 +// from clang-c/Index.h:4296:25 makeExtern< CXCursor (*)(CXCursor) , clang_getCursorDefinition , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorDefinition","clang_getCursorDefinition") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3947:25 +// from clang-c/Index.h:4302:25 makeExtern< unsigned int (*)(CXCursor) , clang_isCursorDefinition , SimNode_ExtFuncCall >(lib,"clang_isCursorDefinition","clang_isCursorDefinition") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3973:25 +// from clang-c/Index.h:4328:25 makeExtern< CXCursor (*)(CXCursor) , clang_getCanonicalCursor , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCanonicalCursor","clang_getCanonicalCursor") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3986:20 +// from clang-c/Index.h:4341:20 makeExtern< int (*)(CXCursor) , clang_Cursor_getObjCSelectorIndex , SimNode_ExtFuncCall >(lib,"clang_Cursor_getObjCSelectorIndex","clang_Cursor_getObjCSelectorIndex") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3999:20 +// from clang-c/Index.h:4354:20 makeExtern< int (*)(CXCursor) , clang_Cursor_isDynamicCall , SimNode_ExtFuncCall >(lib,"clang_Cursor_isDynamicCall","clang_Cursor_isDynamicCall") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4005:23 - makeExtern< CXType (*)(CXCursor) , clang_Cursor_getReceiverType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getReceiverType","clang_Cursor_getReceiverType") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4035:1 - makeExtern< unsigned int (*)(CXCursor,unsigned int) , clang_Cursor_getObjCPropertyAttributes , SimNode_ExtFuncCall >(lib,"clang_Cursor_getObjCPropertyAttributes","clang_Cursor_getObjCPropertyAttributes") - ->args({"C","reserved"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4041:25 - makeExtern< CXString (*)(CXCursor) , clang_Cursor_getObjCPropertyGetterName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getObjCPropertyGetterName","clang_Cursor_getObjCPropertyGetterName") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4047:25 - makeExtern< CXString (*)(CXCursor) , clang_Cursor_getObjCPropertySetterName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getObjCPropertySetterName","clang_Cursor_getObjCPropertySetterName") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4069:25 - makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_getObjCDeclQualifiers , SimNode_ExtFuncCall >(lib,"clang_Cursor_getObjCDeclQualifiers","clang_Cursor_getObjCDeclQualifiers") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4076:25 - makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isObjCOptional , SimNode_ExtFuncCall >(lib,"clang_Cursor_isObjCOptional","clang_Cursor_isObjCOptional") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4081:25 - makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isVariadic , SimNode_ExtFuncCall >(lib,"clang_Cursor_isVariadic","clang_Cursor_isVariadic") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4096:25 - makeExtern< unsigned int (*)(CXCursor,CXString *,CXString *,unsigned int *) , clang_Cursor_isExternalSymbol , SimNode_ExtFuncCall >(lib,"clang_Cursor_isExternalSymbol","clang_Cursor_isExternalSymbol") - ->args({"C","language","definedIn","isGenerated"}) - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_12.cpp b/modules/dasClangBind/src/dasClangBind.func_12.cpp index 9c46a08fe6..51215e30fe 100644 --- a/modules/dasClangBind/src/dasClangBind.func_12.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_12.cpp @@ -12,85 +12,85 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_12() { -// from clang-c/Index.h:4106:30 +// from clang-c/Index.h:4360:23 + makeExtern< CXType (*)(CXCursor) , clang_Cursor_getReceiverType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getReceiverType","clang_Cursor_getReceiverType") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4390:1 + makeExtern< unsigned int (*)(CXCursor,unsigned int) , clang_Cursor_getObjCPropertyAttributes , SimNode_ExtFuncCall >(lib,"clang_Cursor_getObjCPropertyAttributes","clang_Cursor_getObjCPropertyAttributes") + ->args({"C","reserved"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4396:25 + makeExtern< CXString (*)(CXCursor) , clang_Cursor_getObjCPropertyGetterName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getObjCPropertyGetterName","clang_Cursor_getObjCPropertyGetterName") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4402:25 + makeExtern< CXString (*)(CXCursor) , clang_Cursor_getObjCPropertySetterName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getObjCPropertySetterName","clang_Cursor_getObjCPropertySetterName") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4424:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_getObjCDeclQualifiers , SimNode_ExtFuncCall >(lib,"clang_Cursor_getObjCDeclQualifiers","clang_Cursor_getObjCDeclQualifiers") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4431:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isObjCOptional , SimNode_ExtFuncCall >(lib,"clang_Cursor_isObjCOptional","clang_Cursor_isObjCOptional") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4436:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isVariadic , SimNode_ExtFuncCall >(lib,"clang_Cursor_isVariadic","clang_Cursor_isVariadic") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4451:25 + makeExtern< unsigned int (*)(CXCursor,CXString *,CXString *,unsigned int *) , clang_Cursor_isExternalSymbol , SimNode_ExtFuncCall >(lib,"clang_Cursor_isExternalSymbol","clang_Cursor_isExternalSymbol") + ->args({"C","language","definedIn","isGenerated"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:4461:30 makeExtern< CXSourceRange (*)(CXCursor) , clang_Cursor_getCommentRange , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getCommentRange","clang_Cursor_getCommentRange") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4112:25 +// from clang-c/Index.h:4467:25 makeExtern< CXString (*)(CXCursor) , clang_Cursor_getRawCommentText , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getRawCommentText","clang_Cursor_getRawCommentText") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4119:25 +// from clang-c/Index.h:4474:25 makeExtern< CXString (*)(CXCursor) , clang_Cursor_getBriefCommentText , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getBriefCommentText","clang_Cursor_getBriefCommentText") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4133:25 +// from clang-c/Index.h:4488:25 makeExtern< CXString (*)(CXCursor) , clang_Cursor_getMangling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getMangling","clang_Cursor_getMangling") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4139:29 +// from clang-c/Index.h:4494:29 makeExtern< CXStringSet * (*)(CXCursor) , clang_Cursor_getCXXManglings , SimNode_ExtFuncCall >(lib,"clang_Cursor_getCXXManglings","clang_Cursor_getCXXManglings") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4145:29 +// from clang-c/Index.h:4500:29 makeExtern< CXStringSet * (*)(CXCursor) , clang_Cursor_getObjCManglings , SimNode_ExtFuncCall >(lib,"clang_Cursor_getObjCManglings","clang_Cursor_getObjCManglings") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4164:25 - makeExtern< void * (*)(CXCursor) , clang_Cursor_getModule , SimNode_ExtFuncCall >(lib,"clang_Cursor_getModule","clang_Cursor_getModule") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4170:25 - makeExtern< void * (*)(CXTranslationUnitImpl *,void *) , clang_getModuleForFile , SimNode_ExtFuncCall >(lib,"clang_getModuleForFile","clang_getModuleForFile") - ->args({"",""}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4177:23 - makeExtern< void * (*)(void *) , clang_Module_getASTFile , SimNode_ExtFuncCall >(lib,"clang_Module_getASTFile","clang_Module_getASTFile") - ->args({"Module"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4185:25 - makeExtern< void * (*)(void *) , clang_Module_getParent , SimNode_ExtFuncCall >(lib,"clang_Module_getParent","clang_Module_getParent") - ->args({"Module"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4193:25 - makeExtern< CXString (*)(void *) , clang_Module_getName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Module_getName","clang_Module_getName") - ->args({"Module"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4200:25 - makeExtern< CXString (*)(void *) , clang_Module_getFullName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Module_getFullName","clang_Module_getFullName") - ->args({"Module"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4207:20 - makeExtern< int (*)(void *) , clang_Module_isSystem , SimNode_ExtFuncCall >(lib,"clang_Module_isSystem","clang_Module_isSystem") - ->args({"Module"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4214:25 - makeExtern< unsigned int (*)(CXTranslationUnitImpl *,void *) , clang_Module_getNumTopLevelHeaders , SimNode_ExtFuncCall >(lib,"clang_Module_getNumTopLevelHeaders","clang_Module_getNumTopLevelHeaders") - ->args({"","Module"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4225:8 - makeExtern< void * (*)(CXTranslationUnitImpl *,void *,unsigned int) , clang_Module_getTopLevelHeader , SimNode_ExtFuncCall >(lib,"clang_Module_getTopLevelHeader","clang_Module_getTopLevelHeader") - ->args({"","Module","Index"}) +// from clang-c/Index.h:4533:25 + makeExtern< CXString (*)(CXCursor) , clang_Cursor_getGCCAssemblyTemplate , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getGCCAssemblyTemplate","clang_Cursor_getGCCAssemblyTemplate") + ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4245:1 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXConstructor_isConvertingConstructor , SimNode_ExtFuncCall >(lib,"clang_CXXConstructor_isConvertingConstructor","clang_CXXConstructor_isConvertingConstructor") - ->args({"C"}) +// from clang-c/Index.h:4542:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isGCCAssemblyHasGoto , SimNode_ExtFuncCall >(lib,"clang_Cursor_isGCCAssemblyHasGoto","clang_Cursor_isGCCAssemblyHasGoto") + ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4250:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXConstructor_isCopyConstructor , SimNode_ExtFuncCall >(lib,"clang_CXXConstructor_isCopyConstructor","clang_CXXConstructor_isCopyConstructor") - ->args({"C"}) +// from clang-c/Index.h:4550:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_getGCCAssemblyNumOutputs , SimNode_ExtFuncCall >(lib,"clang_Cursor_getGCCAssemblyNumOutputs","clang_Cursor_getGCCAssemblyNumOutputs") + ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4255:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXConstructor_isDefaultConstructor , SimNode_ExtFuncCall >(lib,"clang_CXXConstructor_isDefaultConstructor","clang_CXXConstructor_isDefaultConstructor") - ->args({"C"}) +// from clang-c/Index.h:4558:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_getGCCAssemblyNumInputs , SimNode_ExtFuncCall >(lib,"clang_Cursor_getGCCAssemblyNumInputs","clang_Cursor_getGCCAssemblyNumInputs") + ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4260:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXConstructor_isMoveConstructor , SimNode_ExtFuncCall >(lib,"clang_CXXConstructor_isMoveConstructor","clang_CXXConstructor_isMoveConstructor") - ->args({"C"}) +// from clang-c/Index.h:4573:25 + makeExtern< unsigned int (*)(CXCursor,unsigned int,CXString *,CXCursor *) , clang_Cursor_getGCCAssemblyInput , SimNode_ExtFuncCall >(lib,"clang_Cursor_getGCCAssemblyInput","clang_Cursor_getGCCAssemblyInput") + ->args({"Cursor","Index","Constraint","Expr"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4265:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXField_isMutable , SimNode_ExtFuncCall >(lib,"clang_CXXField_isMutable","clang_CXXField_isMutable") - ->args({"C"}) +// from clang-c/Index.h:4591:25 + makeExtern< unsigned int (*)(CXCursor,unsigned int,CXString *,CXCursor *) , clang_Cursor_getGCCAssemblyOutput , SimNode_ExtFuncCall >(lib,"clang_Cursor_getGCCAssemblyOutput","clang_Cursor_getGCCAssemblyOutput") + ->args({"Cursor","Index","Constraint","Expr"}) ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_13.cpp b/modules/dasClangBind/src/dasClangBind.func_13.cpp index 02b47c64ca..dc571a584b 100644 --- a/modules/dasClangBind/src/dasClangBind.func_13.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_13.cpp @@ -12,85 +12,85 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_13() { -// from clang-c/Index.h:4270:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isDefaulted , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isDefaulted","clang_CXXMethod_isDefaulted") - ->args({"C"}) +// from clang-c/Index.h:4602:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_getGCCAssemblyNumClobbers , SimNode_ExtFuncCall >(lib,"clang_Cursor_getGCCAssemblyNumClobbers","clang_Cursor_getGCCAssemblyNumClobbers") + ->args({"Cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4275:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isDeleted , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isDeleted","clang_CXXMethod_isDeleted") - ->args({"C"}) +// from clang-c/Index.h:4613:25 + makeExtern< CXString (*)(CXCursor,unsigned int) , clang_Cursor_getGCCAssemblyClobber , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getGCCAssemblyClobber","clang_Cursor_getGCCAssemblyClobber") + ->args({"Cursor","Index"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4281:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isPureVirtual , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isPureVirtual","clang_CXXMethod_isPureVirtual") - ->args({"C"}) +// from clang-c/Index.h:4623:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isGCCAssemblyVolatile , SimNode_ExtFuncCall >(lib,"clang_Cursor_isGCCAssemblyVolatile","clang_Cursor_isGCCAssemblyVolatile") + ->args({"Cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4287:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isStatic , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isStatic","clang_CXXMethod_isStatic") +// from clang-c/Index.h:4642:25 + makeExtern< void * (*)(CXCursor) , clang_Cursor_getModule , SimNode_ExtFuncCall >(lib,"clang_Cursor_getModule","clang_Cursor_getModule") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4294:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isVirtual , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isVirtual","clang_CXXMethod_isVirtual") - ->args({"C"}) +// from clang-c/Index.h:4648:25 + makeExtern< void * (*)(CXTranslationUnitImpl *,void *) , clang_getModuleForFile , SimNode_ExtFuncCall >(lib,"clang_getModuleForFile","clang_getModuleForFile") + ->args({"",""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4319:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isCopyAssignmentOperator , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isCopyAssignmentOperator","clang_CXXMethod_isCopyAssignmentOperator") - ->args({"C"}) +// from clang-c/Index.h:4655:23 + makeExtern< void * (*)(void *) , clang_Module_getASTFile , SimNode_ExtFuncCall >(lib,"clang_Module_getASTFile","clang_Module_getASTFile") + ->args({"Module"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4344:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isMoveAssignmentOperator , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isMoveAssignmentOperator","clang_CXXMethod_isMoveAssignmentOperator") - ->args({"C"}) +// from clang-c/Index.h:4663:25 + makeExtern< void * (*)(void *) , clang_Module_getParent , SimNode_ExtFuncCall >(lib,"clang_Module_getParent","clang_Module_getParent") + ->args({"Module"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4350:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXRecord_isAbstract , SimNode_ExtFuncCall >(lib,"clang_CXXRecord_isAbstract","clang_CXXRecord_isAbstract") - ->args({"C"}) +// from clang-c/Index.h:4671:25 + makeExtern< CXString (*)(void *) , clang_Module_getName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Module_getName","clang_Module_getName") + ->args({"Module"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4355:25 - makeExtern< unsigned int (*)(CXCursor) , clang_EnumDecl_isScoped , SimNode_ExtFuncCall >(lib,"clang_EnumDecl_isScoped","clang_EnumDecl_isScoped") - ->args({"C"}) +// from clang-c/Index.h:4678:25 + makeExtern< CXString (*)(void *) , clang_Module_getFullName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Module_getFullName","clang_Module_getFullName") + ->args({"Module"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4361:25 - makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isConst , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isConst","clang_CXXMethod_isConst") - ->args({"C"}) +// from clang-c/Index.h:4685:20 + makeExtern< int (*)(void *) , clang_Module_isSystem , SimNode_ExtFuncCall >(lib,"clang_Module_isSystem","clang_Module_isSystem") + ->args({"Module"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4380:34 - makeExtern< CXCursorKind (*)(CXCursor) , clang_getTemplateCursorKind , SimNode_ExtFuncCall >(lib,"clang_getTemplateCursorKind","clang_getTemplateCursorKind") - ->args({"C"}) +// from clang-c/Index.h:4692:25 + makeExtern< unsigned int (*)(CXTranslationUnitImpl *,void *) , clang_Module_getNumTopLevelHeaders , SimNode_ExtFuncCall >(lib,"clang_Module_getNumTopLevelHeaders","clang_Module_getNumTopLevelHeaders") + ->args({"","Module"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4410:25 - makeExtern< CXCursor (*)(CXCursor) , clang_getSpecializedCursorTemplate , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getSpecializedCursorTemplate","clang_getSpecializedCursorTemplate") - ->args({"C"}) +// from clang-c/Index.h:4703:8 + makeExtern< void * (*)(CXTranslationUnitImpl *,void *,unsigned int) , clang_Module_getTopLevelHeader , SimNode_ExtFuncCall >(lib,"clang_Module_getTopLevelHeader","clang_Module_getTopLevelHeader") + ->args({"","Module","Index"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4430:30 - makeExtern< CXSourceRange (*)(CXCursor,unsigned int,unsigned int) , clang_getCursorReferenceNameRange , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorReferenceNameRange","clang_getCursorReferenceNameRange") - ->args({"C","NameFlags","PieceIndex"}) +// from clang-c/Index.h:4723:1 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXConstructor_isConvertingConstructor , SimNode_ExtFuncCall >(lib,"clang_CXXConstructor_isConvertingConstructor","clang_CXXConstructor_isConvertingConstructor") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4522:25 - makeExtern< CXToken * (*)(CXTranslationUnitImpl *,CXSourceLocation) , clang_getToken , SimNode_ExtFuncCall >(lib,"clang_getToken","clang_getToken") - ->args({"TU","Location"}) +// from clang-c/Index.h:4728:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXConstructor_isCopyConstructor , SimNode_ExtFuncCall >(lib,"clang_CXXConstructor_isCopyConstructor","clang_CXXConstructor_isCopyConstructor") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4528:28 - makeExtern< CXTokenKind (*)(CXToken) , clang_getTokenKind , SimNode_ExtFuncCall >(lib,"clang_getTokenKind","clang_getTokenKind") - ->args({""}) +// from clang-c/Index.h:4733:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXConstructor_isDefaultConstructor , SimNode_ExtFuncCall >(lib,"clang_CXXConstructor_isDefaultConstructor","clang_CXXConstructor_isDefaultConstructor") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4536:25 - makeExtern< CXString (*)(CXTranslationUnitImpl *,CXToken) , clang_getTokenSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTokenSpelling","clang_getTokenSpelling") - ->args({"",""}) +// from clang-c/Index.h:4738:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXConstructor_isMoveConstructor , SimNode_ExtFuncCall >(lib,"clang_CXXConstructor_isMoveConstructor","clang_CXXConstructor_isMoveConstructor") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4541:33 - makeExtern< CXSourceLocation (*)(CXTranslationUnitImpl *,CXToken) , clang_getTokenLocation , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTokenLocation","clang_getTokenLocation") - ->args({"",""}) +// from clang-c/Index.h:4743:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXField_isMutable , SimNode_ExtFuncCall >(lib,"clang_CXXField_isMutable","clang_CXXField_isMutable") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4547:30 - makeExtern< CXSourceRange (*)(CXTranslationUnitImpl *,CXToken) , clang_getTokenExtent , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTokenExtent","clang_getTokenExtent") - ->args({"",""}) +// from clang-c/Index.h:4748:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isDefaulted , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isDefaulted","clang_CXXMethod_isDefaulted") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4566:21 - makeExtern< void (*)(CXTranslationUnitImpl *,CXSourceRange,CXToken **,unsigned int *) , clang_tokenize , SimNode_ExtFuncCall >(lib,"clang_tokenize","clang_tokenize") - ->args({"TU","Range","Tokens","NumTokens"}) +// from clang-c/Index.h:4753:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isDeleted , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isDeleted","clang_CXXMethod_isDeleted") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4599:21 - makeExtern< void (*)(CXTranslationUnitImpl *,CXToken *,unsigned int,CXCursor *) , clang_annotateTokens , SimNode_ExtFuncCall >(lib,"clang_annotateTokens","clang_annotateTokens") - ->args({"TU","Tokens","NumTokens","Cursors"}) +// from clang-c/Index.h:4759:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isPureVirtual , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isPureVirtual","clang_CXXMethod_isPureVirtual") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_14.cpp b/modules/dasClangBind/src/dasClangBind.func_14.cpp index be9fff0a7d..7b25756725 100644 --- a/modules/dasClangBind/src/dasClangBind.func_14.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_14.cpp @@ -12,83 +12,85 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_14() { -// from clang-c/Index.h:4605:21 - makeExtern< void (*)(CXTranslationUnitImpl *,CXToken *,unsigned int) , clang_disposeTokens , SimNode_ExtFuncCall >(lib,"clang_disposeTokens","clang_disposeTokens") - ->args({"TU","Tokens","NumTokens"}) +// from clang-c/Index.h:4765:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isStatic , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isStatic","clang_CXXMethod_isStatic") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4622:25 - makeExtern< CXString (*)(CXCursorKind) , clang_getCursorKindSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorKindSpelling","clang_getCursorKindSpelling") - ->args({"Kind"}) +// from clang-c/Index.h:4772:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isVirtual , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isVirtual","clang_CXXMethod_isVirtual") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4623:21 - makeExtern< void (*)(CXCursor,const char **,const char **,unsigned int *,unsigned int *,unsigned int *,unsigned int *) , clang_getDefinitionSpellingAndExtent , SimNode_ExtFuncCall >(lib,"clang_getDefinitionSpellingAndExtent","clang_getDefinitionSpellingAndExtent") - ->args({"","startBuf","endBuf","startLine","startColumn","endLine","endColumn"}) +// from clang-c/Index.h:4797:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isCopyAssignmentOperator , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isCopyAssignmentOperator","clang_CXXMethod_isCopyAssignmentOperator") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4626:21 - makeExtern< void (*)() , clang_enableStackTraces , SimNode_ExtFuncCall >(lib,"clang_enableStackTraces","clang_enableStackTraces") +// from clang-c/Index.h:4822:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isMoveAssignmentOperator , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isMoveAssignmentOperator","clang_CXXMethod_isMoveAssignmentOperator") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4865:1 - makeExtern< CXCompletionChunkKind (*)(void *,unsigned int) , clang_getCompletionChunkKind , SimNode_ExtFuncCall >(lib,"clang_getCompletionChunkKind","clang_getCompletionChunkKind") - ->args({"completion_string","chunk_number"}) +// from clang-c/Index.h:4867:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isExplicit , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isExplicit","clang_CXXMethod_isExplicit") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4878:25 - makeExtern< CXString (*)(void *,unsigned int) , clang_getCompletionChunkText , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCompletionChunkText","clang_getCompletionChunkText") - ->args({"completion_string","chunk_number"}) +// from clang-c/Index.h:4873:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXRecord_isAbstract , SimNode_ExtFuncCall >(lib,"clang_CXXRecord_isAbstract","clang_CXXRecord_isAbstract") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4892:35 - makeExtern< void * (*)(void *,unsigned int) , clang_getCompletionChunkCompletionString , SimNode_ExtFuncCall >(lib,"clang_getCompletionChunkCompletionString","clang_getCompletionChunkCompletionString") - ->args({"completion_string","chunk_number"}) +// from clang-c/Index.h:4878:25 + makeExtern< unsigned int (*)(CXCursor) , clang_EnumDecl_isScoped , SimNode_ExtFuncCall >(lib,"clang_EnumDecl_isScoped","clang_EnumDecl_isScoped") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4899:1 - makeExtern< unsigned int (*)(void *) , clang_getNumCompletionChunks , SimNode_ExtFuncCall >(lib,"clang_getNumCompletionChunks","clang_getNumCompletionChunks") - ->args({"completion_string"}) +// from clang-c/Index.h:4884:25 + makeExtern< unsigned int (*)(CXCursor) , clang_CXXMethod_isConst , SimNode_ExtFuncCall >(lib,"clang_CXXMethod_isConst","clang_CXXMethod_isConst") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4914:1 - makeExtern< unsigned int (*)(void *) , clang_getCompletionPriority , SimNode_ExtFuncCall >(lib,"clang_getCompletionPriority","clang_getCompletionPriority") - ->args({"completion_string"}) +// from clang-c/Index.h:4903:34 + makeExtern< CXCursorKind (*)(CXCursor) , clang_getTemplateCursorKind , SimNode_ExtFuncCall >(lib,"clang_getTemplateCursorKind","clang_getTemplateCursorKind") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4925:1 - makeExtern< CXAvailabilityKind (*)(void *) , clang_getCompletionAvailability , SimNode_ExtFuncCall >(lib,"clang_getCompletionAvailability","clang_getCompletionAvailability") - ->args({"completion_string"}) +// from clang-c/Index.h:4933:25 + makeExtern< CXCursor (*)(CXCursor) , clang_getSpecializedCursorTemplate , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getSpecializedCursorTemplate","clang_getSpecializedCursorTemplate") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4937:1 - makeExtern< unsigned int (*)(void *) , clang_getCompletionNumAnnotations , SimNode_ExtFuncCall >(lib,"clang_getCompletionNumAnnotations","clang_getCompletionNumAnnotations") - ->args({"completion_string"}) +// from clang-c/Index.h:4953:30 + makeExtern< CXSourceRange (*)(CXCursor,unsigned int,unsigned int) , clang_getCursorReferenceNameRange , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorReferenceNameRange","clang_getCursorReferenceNameRange") + ->args({"C","NameFlags","PieceIndex"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4950:25 - makeExtern< CXString (*)(void *,unsigned int) , clang_getCompletionAnnotation , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCompletionAnnotation","clang_getCompletionAnnotation") - ->args({"completion_string","annotation_number"}) +// from clang-c/Index.h:5045:25 + makeExtern< CXToken * (*)(CXTranslationUnitImpl *,CXSourceLocation) , clang_getToken , SimNode_ExtFuncCall >(lib,"clang_getToken","clang_getToken") + ->args({"TU","Location"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4969:25 - makeExtern< CXString (*)(void *,CXCursorKind *) , clang_getCompletionParent , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCompletionParent","clang_getCompletionParent") - ->args({"completion_string","kind"}) +// from clang-c/Index.h:5051:28 + makeExtern< CXTokenKind (*)(CXToken) , clang_getTokenKind , SimNode_ExtFuncCall >(lib,"clang_getTokenKind","clang_getTokenKind") + ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4977:1 - makeExtern< CXString (*)(void *) , clang_getCompletionBriefComment , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCompletionBriefComment","clang_getCompletionBriefComment") - ->args({"completion_string"}) +// from clang-c/Index.h:5059:25 + makeExtern< CXString (*)(CXTranslationUnitImpl *,CXToken) , clang_getTokenSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTokenSpelling","clang_getTokenSpelling") + ->args({"",""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:4989:1 - makeExtern< void * (*)(CXCursor) , clang_getCursorCompletionString , SimNode_ExtFuncCall >(lib,"clang_getCursorCompletionString","clang_getCursorCompletionString") - ->args({"cursor"}) +// from clang-c/Index.h:5064:33 + makeExtern< CXSourceLocation (*)(CXTranslationUnitImpl *,CXToken) , clang_getTokenLocation , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTokenLocation","clang_getTokenLocation") + ->args({"",""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5025:1 - makeExtern< unsigned int (*)(CXCodeCompleteResults *,unsigned int) , clang_getCompletionNumFixIts , SimNode_ExtFuncCall >(lib,"clang_getCompletionNumFixIts","clang_getCompletionNumFixIts") - ->args({"results","completion_index"}) +// from clang-c/Index.h:5070:30 + makeExtern< CXSourceRange (*)(CXTranslationUnitImpl *,CXToken) , clang_getTokenExtent , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTokenExtent","clang_getTokenExtent") + ->args({"",""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5071:25 - makeExtern< CXString (*)(CXCodeCompleteResults *,unsigned int,unsigned int,CXSourceRange *) , clang_getCompletionFixIt , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCompletionFixIt","clang_getCompletionFixIt") - ->args({"results","completion_index","fixit_index","replacement_range"}) +// from clang-c/Index.h:5089:21 + makeExtern< void (*)(CXTranslationUnitImpl *,CXSourceRange,CXToken **,unsigned int *) , clang_tokenize , SimNode_ExtFuncCall >(lib,"clang_tokenize","clang_tokenize") + ->args({"TU","Range","Tokens","NumTokens"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5255:25 - makeExtern< unsigned int (*)() , clang_defaultCodeCompleteOptions , SimNode_ExtFuncCall >(lib,"clang_defaultCodeCompleteOptions","clang_defaultCodeCompleteOptions") +// from clang-c/Index.h:5122:21 + makeExtern< void (*)(CXTranslationUnitImpl *,CXToken *,unsigned int,CXCursor *) , clang_annotateTokens , SimNode_ExtFuncCall >(lib,"clang_annotateTokens","clang_annotateTokens") + ->args({"TU","Tokens","NumTokens","Cursors"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5327:1 - makeExtern< CXCodeCompleteResults * (*)(CXTranslationUnitImpl *,const char *,unsigned int,unsigned int,CXUnsavedFile *,unsigned int,unsigned int) , clang_codeCompleteAt , SimNode_ExtFuncCall >(lib,"clang_codeCompleteAt","clang_codeCompleteAt") - ->args({"TU","complete_filename","complete_line","complete_column","unsaved_files","num_unsaved_files","options"}) +// from clang-c/Index.h:5128:21 + makeExtern< void (*)(CXTranslationUnitImpl *,CXToken *,unsigned int) , clang_disposeTokens , SimNode_ExtFuncCall >(lib,"clang_disposeTokens","clang_disposeTokens") + ->args({"TU","Tokens","NumTokens"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5340:6 - makeExtern< void (*)(CXCompletionResult *,unsigned int) , clang_sortCodeCompletionResults , SimNode_ExtFuncCall >(lib,"clang_sortCodeCompletionResults","clang_sortCodeCompletionResults") - ->args({"Results","NumResults"}) +// from clang-c/Index.h:5145:25 + makeExtern< CXString (*)(CXCursorKind) , clang_getCursorKindSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorKindSpelling","clang_getCursorKindSpelling") + ->args({"Kind"}) ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_15.cpp b/modules/dasClangBind/src/dasClangBind.func_15.cpp index f8b98ae45a..4b954e28bf 100644 --- a/modules/dasClangBind/src/dasClangBind.func_15.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_15.cpp @@ -12,84 +12,83 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_15() { -// from clang-c/Index.h:5347:6 - makeExtern< void (*)(CXCodeCompleteResults *) , clang_disposeCodeCompleteResults , SimNode_ExtFuncCall >(lib,"clang_disposeCodeCompleteResults","clang_disposeCodeCompleteResults") - ->args({"Results"}) +// from clang-c/Index.h:5146:21 + makeExtern< void (*)(CXCursor,const char **,const char **,unsigned int *,unsigned int *,unsigned int *,unsigned int *) , clang_getDefinitionSpellingAndExtent , SimNode_ExtFuncCall >(lib,"clang_getDefinitionSpellingAndExtent","clang_getDefinitionSpellingAndExtent") + ->args({"","startBuf","endBuf","startLine","startColumn","endLine","endColumn"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5354:10 - makeExtern< unsigned int (*)(CXCodeCompleteResults *) , clang_codeCompleteGetNumDiagnostics , SimNode_ExtFuncCall >(lib,"clang_codeCompleteGetNumDiagnostics","clang_codeCompleteGetNumDiagnostics") - ->args({"Results"}) +// from clang-c/Index.h:5149:21 + makeExtern< void (*)() , clang_enableStackTraces , SimNode_ExtFuncCall >(lib,"clang_enableStackTraces","clang_enableStackTraces") ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5366:14 - makeExtern< void * (*)(CXCodeCompleteResults *,unsigned int) , clang_codeCompleteGetDiagnostic , SimNode_ExtFuncCall >(lib,"clang_codeCompleteGetDiagnostic","clang_codeCompleteGetDiagnostic") - ->args({"Results","Index"}) +// from clang-c/Index.h:5388:1 + makeExtern< CXCompletionChunkKind (*)(void *,unsigned int) , clang_getCompletionChunkKind , SimNode_ExtFuncCall >(lib,"clang_getCompletionChunkKind","clang_getCompletionChunkKind") + ->args({"completion_string","chunk_number"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5380:1 - makeExtern< unsigned long long (*)(CXCodeCompleteResults *) , clang_codeCompleteGetContexts , SimNode_ExtFuncCall >(lib,"clang_codeCompleteGetContexts","clang_codeCompleteGetContexts") - ->args({"Results"}) +// from clang-c/Index.h:5401:25 + makeExtern< CXString (*)(void *,unsigned int) , clang_getCompletionChunkText , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCompletionChunkText","clang_getCompletionChunkText") + ->args({"completion_string","chunk_number"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5400:1 - makeExtern< CXCursorKind (*)(CXCodeCompleteResults *,unsigned int *) , clang_codeCompleteGetContainerKind , SimNode_ExtFuncCall >(lib,"clang_codeCompleteGetContainerKind","clang_codeCompleteGetContainerKind") - ->args({"Results","IsIncomplete"}) +// from clang-c/Index.h:5415:35 + makeExtern< void * (*)(void *,unsigned int) , clang_getCompletionChunkCompletionString , SimNode_ExtFuncCall >(lib,"clang_getCompletionChunkCompletionString","clang_getCompletionChunkCompletionString") + ->args({"completion_string","chunk_number"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5413:10 - makeExtern< CXString (*)(CXCodeCompleteResults *) , clang_codeCompleteGetContainerUSR , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_codeCompleteGetContainerUSR","clang_codeCompleteGetContainerUSR") - ->args({"Results"}) +// from clang-c/Index.h:5422:1 + makeExtern< unsigned int (*)(void *) , clang_getNumCompletionChunks , SimNode_ExtFuncCall >(lib,"clang_getNumCompletionChunks","clang_getNumCompletionChunks") + ->args({"completion_string"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5427:10 - makeExtern< CXString (*)(CXCodeCompleteResults *) , clang_codeCompleteGetObjCSelector , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_codeCompleteGetObjCSelector","clang_codeCompleteGetObjCSelector") - ->args({"Results"}) +// from clang-c/Index.h:5437:1 + makeExtern< unsigned int (*)(void *) , clang_getCompletionPriority , SimNode_ExtFuncCall >(lib,"clang_getCompletionPriority","clang_getCompletionPriority") + ->args({"completion_string"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5443:25 - makeExtern< CXString (*)() , clang_getClangVersion , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getClangVersion","clang_getClangVersion") +// from clang-c/Index.h:5448:1 + makeExtern< CXAvailabilityKind (*)(void *) , clang_getCompletionAvailability , SimNode_ExtFuncCall >(lib,"clang_getCompletionAvailability","clang_getCompletionAvailability") + ->args({"completion_string"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5451:21 - makeExtern< void (*)(unsigned int) , clang_toggleCrashRecovery , SimNode_ExtFuncCall >(lib,"clang_toggleCrashRecovery","clang_toggleCrashRecovery") - ->args({"isEnabled"}) +// from clang-c/Index.h:5460:1 + makeExtern< unsigned int (*)(void *) , clang_getCompletionNumAnnotations , SimNode_ExtFuncCall >(lib,"clang_getCompletionNumAnnotations","clang_getCompletionNumAnnotations") + ->args({"completion_string"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5502:29 - makeExtern< void * (*)(CXCursor) , clang_Cursor_Evaluate , SimNode_ExtFuncCall >(lib,"clang_Cursor_Evaluate","clang_Cursor_Evaluate") - ->args({"C"}) +// from clang-c/Index.h:5473:25 + makeExtern< CXString (*)(void *,unsigned int) , clang_getCompletionAnnotation , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCompletionAnnotation","clang_getCompletionAnnotation") + ->args({"completion_string","annotation_number"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5507:33 - makeExtern< CXEvalResultKind (*)(void *) , clang_EvalResult_getKind , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getKind","clang_EvalResult_getKind") - ->args({"E"}) +// from clang-c/Index.h:5492:25 + makeExtern< CXString (*)(void *,CXCursorKind *) , clang_getCompletionParent , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCompletionParent","clang_getCompletionParent") + ->args({"completion_string","kind"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5513:20 - makeExtern< int (*)(void *) , clang_EvalResult_getAsInt , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getAsInt","clang_EvalResult_getAsInt") - ->args({"E"}) +// from clang-c/Index.h:5500:1 + makeExtern< CXString (*)(void *) , clang_getCompletionBriefComment , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCompletionBriefComment","clang_getCompletionBriefComment") + ->args({"completion_string"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5520:26 - makeExtern< long long (*)(void *) , clang_EvalResult_getAsLongLong , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getAsLongLong","clang_EvalResult_getAsLongLong") - ->args({"E"}) +// from clang-c/Index.h:5512:1 + makeExtern< void * (*)(CXCursor) , clang_getCursorCompletionString , SimNode_ExtFuncCall >(lib,"clang_getCursorCompletionString","clang_getCursorCompletionString") + ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5526:25 - makeExtern< unsigned int (*)(void *) , clang_EvalResult_isUnsignedInt , SimNode_ExtFuncCall >(lib,"clang_EvalResult_isUnsignedInt","clang_EvalResult_isUnsignedInt") - ->args({"E"}) +// from clang-c/Index.h:5548:1 + makeExtern< unsigned int (*)(CXCodeCompleteResults *,unsigned int) , clang_getCompletionNumFixIts , SimNode_ExtFuncCall >(lib,"clang_getCompletionNumFixIts","clang_getCompletionNumFixIts") + ->args({"results","completion_index"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5533:1 - makeExtern< unsigned long long (*)(void *) , clang_EvalResult_getAsUnsigned , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getAsUnsigned","clang_EvalResult_getAsUnsigned") - ->args({"E"}) +// from clang-c/Index.h:5594:25 + makeExtern< CXString (*)(CXCodeCompleteResults *,unsigned int,unsigned int,CXSourceRange *) , clang_getCompletionFixIt , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCompletionFixIt","clang_getCompletionFixIt") + ->args({"results","completion_index","fixit_index","replacement_range"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5539:23 - makeExtern< double (*)(void *) , clang_EvalResult_getAsDouble , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getAsDouble","clang_EvalResult_getAsDouble") - ->args({"E"}) +// from clang-c/Index.h:5778:25 + makeExtern< unsigned int (*)() , clang_defaultCodeCompleteOptions , SimNode_ExtFuncCall >(lib,"clang_defaultCodeCompleteOptions","clang_defaultCodeCompleteOptions") ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5547:28 - makeExtern< const char * (*)(void *) , clang_EvalResult_getAsStr , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getAsStr","clang_EvalResult_getAsStr") - ->args({"E"}) +// from clang-c/Index.h:5850:1 + makeExtern< CXCodeCompleteResults * (*)(CXTranslationUnitImpl *,const char *,unsigned int,unsigned int,CXUnsavedFile *,unsigned int,unsigned int) , clang_codeCompleteAt , SimNode_ExtFuncCall >(lib,"clang_codeCompleteAt","clang_codeCompleteAt") + ->args({"TU","complete_filename","complete_line","complete_column","unsaved_files","num_unsaved_files","options"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5552:21 - makeExtern< void (*)(void *) , clang_EvalResult_dispose , SimNode_ExtFuncCall >(lib,"clang_EvalResult_dispose","clang_EvalResult_dispose") - ->args({"E"}) +// from clang-c/Index.h:5863:6 + makeExtern< void (*)(CXCompletionResult *,unsigned int) , clang_sortCodeCompletionResults , SimNode_ExtFuncCall >(lib,"clang_sortCodeCompletionResults","clang_sortCodeCompletionResults") + ->args({"Results","NumResults"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5575:28 - makeExtern< void * (*)(const char *) , clang_getRemappings , SimNode_ExtFuncCall >(lib,"clang_getRemappings","clang_getRemappings") - ->args({"path"}) +// from clang-c/Index.h:5870:6 + makeExtern< void (*)(CXCodeCompleteResults *) , clang_disposeCodeCompleteResults , SimNode_ExtFuncCall >(lib,"clang_disposeCodeCompleteResults","clang_disposeCodeCompleteResults") + ->args({"Results"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5588:13 - makeExtern< void * (*)(const char **,unsigned int) , clang_getRemappingsFromFileList , SimNode_ExtFuncCall >(lib,"clang_getRemappingsFromFileList","clang_getRemappingsFromFileList") - ->args({"filePaths","numFiles"}) +// from clang-c/Index.h:5877:10 + makeExtern< unsigned int (*)(CXCodeCompleteResults *) , clang_codeCompleteGetNumDiagnostics , SimNode_ExtFuncCall >(lib,"clang_codeCompleteGetNumDiagnostics","clang_codeCompleteGetNumDiagnostics") + ->args({"Results"}) ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_16.cpp b/modules/dasClangBind/src/dasClangBind.func_16.cpp index a78a2ce827..f906592bb3 100644 --- a/modules/dasClangBind/src/dasClangBind.func_16.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_16.cpp @@ -12,85 +12,84 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_16() { -// from clang-c/Index.h:5594:25 - makeExtern< unsigned int (*)(void *) , clang_remap_getNumFiles , SimNode_ExtFuncCall >(lib,"clang_remap_getNumFiles","clang_remap_getNumFiles") - ->args({""}) +// from clang-c/Index.h:5889:14 + makeExtern< void * (*)(CXCodeCompleteResults *,unsigned int) , clang_codeCompleteGetDiagnostic , SimNode_ExtFuncCall >(lib,"clang_codeCompleteGetDiagnostic","clang_codeCompleteGetDiagnostic") + ->args({"Results","Index"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5604:21 - makeExtern< void (*)(void *,unsigned int,CXString *,CXString *) , clang_remap_getFilenames , SimNode_ExtFuncCall >(lib,"clang_remap_getFilenames","clang_remap_getFilenames") - ->args({"","index","original","transformed"}) +// from clang-c/Index.h:5903:1 + makeExtern< unsigned long long (*)(CXCodeCompleteResults *) , clang_codeCompleteGetContexts , SimNode_ExtFuncCall >(lib,"clang_codeCompleteGetContexts","clang_codeCompleteGetContexts") + ->args({"Results"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5611:21 - makeExtern< void (*)(void *) , clang_remap_dispose , SimNode_ExtFuncCall >(lib,"clang_remap_dispose","clang_remap_dispose") - ->args({""}) +// from clang-c/Index.h:5923:1 + makeExtern< CXCursorKind (*)(CXCodeCompleteResults *,unsigned int *) , clang_codeCompleteGetContainerKind , SimNode_ExtFuncCall >(lib,"clang_codeCompleteGetContainerKind","clang_codeCompleteGetContainerKind") + ->args({"Results","IsIncomplete"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5660:25 - makeExtern< CXResult (*)(CXCursor,void *,CXCursorAndRangeVisitor) , clang_findReferencesInFile , SimNode_ExtFuncCall >(lib,"clang_findReferencesInFile","clang_findReferencesInFile") - ->args({"cursor","file","visitor"}) +// from clang-c/Index.h:5936:10 + makeExtern< CXString (*)(CXCodeCompleteResults *) , clang_codeCompleteGetContainerUSR , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_codeCompleteGetContainerUSR","clang_codeCompleteGetContainerUSR") + ->args({"Results"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:5675:25 - makeExtern< CXResult (*)(CXTranslationUnitImpl *,void *,CXCursorAndRangeVisitor) , clang_findIncludesInFile , SimNode_ExtFuncCall >(lib,"clang_findIncludesInFile","clang_findIncludesInFile") - ->args({"TU","file","visitor"}) +// from clang-c/Index.h:5950:10 + makeExtern< CXString (*)(CXCodeCompleteResults *) , clang_codeCompleteGetObjCSelector , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_codeCompleteGetObjCSelector","clang_codeCompleteGetObjCSelector") + ->args({"Results"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6077:20 - makeExtern< int (*)(CXIdxEntityKind) , clang_index_isEntityObjCContainerKind , SimNode_ExtFuncCall >(lib,"clang_index_isEntityObjCContainerKind","clang_index_isEntityObjCContainerKind") - ->args({""}) +// from clang-c/Index.h:5966:25 + makeExtern< CXString (*)() , clang_getClangVersion , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getClangVersion","clang_getClangVersion") ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6079:1 - makeExtern< const CXIdxObjCContainerDeclInfo * (*)(const CXIdxDeclInfo *) , clang_index_getObjCContainerDeclInfo , SimNode_ExtFuncCall >(lib,"clang_index_getObjCContainerDeclInfo","clang_index_getObjCContainerDeclInfo") - ->args({""}) +// from clang-c/Index.h:5974:21 + makeExtern< void (*)(unsigned int) , clang_toggleCrashRecovery , SimNode_ExtFuncCall >(lib,"clang_toggleCrashRecovery","clang_toggleCrashRecovery") + ->args({"isEnabled"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6082:1 - makeExtern< const CXIdxObjCInterfaceDeclInfo * (*)(const CXIdxDeclInfo *) , clang_index_getObjCInterfaceDeclInfo , SimNode_ExtFuncCall >(lib,"clang_index_getObjCInterfaceDeclInfo","clang_index_getObjCInterfaceDeclInfo") - ->args({""}) +// from clang-c/Index.h:6025:29 + makeExtern< void * (*)(CXCursor) , clang_Cursor_Evaluate , SimNode_ExtFuncCall >(lib,"clang_Cursor_Evaluate","clang_Cursor_Evaluate") + ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6086:1 - makeExtern< const CXIdxObjCCategoryDeclInfo * (*)(const CXIdxDeclInfo *) , clang_index_getObjCCategoryDeclInfo , SimNode_ExtFuncCall >(lib,"clang_index_getObjCCategoryDeclInfo","clang_index_getObjCCategoryDeclInfo") - ->args({""}) +// from clang-c/Index.h:6030:33 + makeExtern< CXEvalResultKind (*)(void *) , clang_EvalResult_getKind , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getKind","clang_EvalResult_getKind") + ->args({"E"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6089:1 - makeExtern< const CXIdxObjCProtocolRefListInfo * (*)(const CXIdxDeclInfo *) , clang_index_getObjCProtocolRefListInfo , SimNode_ExtFuncCall >(lib,"clang_index_getObjCProtocolRefListInfo","clang_index_getObjCProtocolRefListInfo") - ->args({""}) +// from clang-c/Index.h:6036:20 + makeExtern< int (*)(void *) , clang_EvalResult_getAsInt , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getAsInt","clang_EvalResult_getAsInt") + ->args({"E"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6092:1 - makeExtern< const CXIdxObjCPropertyDeclInfo * (*)(const CXIdxDeclInfo *) , clang_index_getObjCPropertyDeclInfo , SimNode_ExtFuncCall >(lib,"clang_index_getObjCPropertyDeclInfo","clang_index_getObjCPropertyDeclInfo") - ->args({""}) +// from clang-c/Index.h:6043:26 + makeExtern< long long (*)(void *) , clang_EvalResult_getAsLongLong , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getAsLongLong","clang_EvalResult_getAsLongLong") + ->args({"E"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6095:1 - makeExtern< const CXIdxIBOutletCollectionAttrInfo * (*)(const CXIdxAttrInfo *) , clang_index_getIBOutletCollectionAttrInfo , SimNode_ExtFuncCall >(lib,"clang_index_getIBOutletCollectionAttrInfo","clang_index_getIBOutletCollectionAttrInfo") - ->args({""}) +// from clang-c/Index.h:6049:25 + makeExtern< unsigned int (*)(void *) , clang_EvalResult_isUnsignedInt , SimNode_ExtFuncCall >(lib,"clang_EvalResult_isUnsignedInt","clang_EvalResult_isUnsignedInt") + ->args({"E"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6098:1 - makeExtern< const CXIdxCXXClassDeclInfo * (*)(const CXIdxDeclInfo *) , clang_index_getCXXClassDeclInfo , SimNode_ExtFuncCall >(lib,"clang_index_getCXXClassDeclInfo","clang_index_getCXXClassDeclInfo") - ->args({""}) +// from clang-c/Index.h:6056:1 + makeExtern< unsigned long long (*)(void *) , clang_EvalResult_getAsUnsigned , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getAsUnsigned","clang_EvalResult_getAsUnsigned") + ->args({"E"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6105:1 - makeExtern< void * (*)(const CXIdxContainerInfo *) , clang_index_getClientContainer , SimNode_ExtFuncCall >(lib,"clang_index_getClientContainer","clang_index_getClientContainer") - ->args({""}) +// from clang-c/Index.h:6062:23 + makeExtern< double (*)(void *) , clang_EvalResult_getAsDouble , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getAsDouble","clang_EvalResult_getAsDouble") + ->args({"E"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6111:21 - makeExtern< void (*)(const CXIdxContainerInfo *,void *) , clang_index_setClientContainer , SimNode_ExtFuncCall >(lib,"clang_index_setClientContainer","clang_index_setClientContainer") - ->args({"",""}) +// from clang-c/Index.h:6070:28 + makeExtern< const char * (*)(void *) , clang_EvalResult_getAsStr , SimNode_ExtFuncCall >(lib,"clang_EvalResult_getAsStr","clang_EvalResult_getAsStr") + ->args({"E"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6118:1 - makeExtern< void * (*)(const CXIdxEntityInfo *) , clang_index_getClientEntity , SimNode_ExtFuncCall >(lib,"clang_index_getClientEntity","clang_index_getClientEntity") - ->args({""}) +// from clang-c/Index.h:6075:21 + makeExtern< void (*)(void *) , clang_EvalResult_dispose , SimNode_ExtFuncCall >(lib,"clang_EvalResult_dispose","clang_EvalResult_dispose") + ->args({"E"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6123:21 - makeExtern< void (*)(const CXIdxEntityInfo *,void *) , clang_index_setClientEntity , SimNode_ExtFuncCall >(lib,"clang_index_setClientEntity","clang_index_setClientEntity") - ->args({"",""}) +// from clang-c/Index.h:6123:25 + makeExtern< CXResult (*)(CXCursor,void *,CXCursorAndRangeVisitor) , clang_findReferencesInFile , SimNode_ExtFuncCall >(lib,"clang_findReferencesInFile","clang_findReferencesInFile") + ->args({"cursor","file","visitor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6138:30 - makeExtern< void * (*)(void *) , clang_IndexAction_create , SimNode_ExtFuncCall >(lib,"clang_IndexAction_create","clang_IndexAction_create") - ->args({"CIdx"}) +// from clang-c/Index.h:6138:25 + makeExtern< CXResult (*)(CXTranslationUnitImpl *,void *,CXCursorAndRangeVisitor) , clang_findIncludesInFile , SimNode_ExtFuncCall >(lib,"clang_findIncludesInFile","clang_findIncludesInFile") + ->args({"TU","file","visitor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6146:21 - makeExtern< void (*)(void *) , clang_IndexAction_dispose , SimNode_ExtFuncCall >(lib,"clang_IndexAction_dispose","clang_IndexAction_dispose") - ->args({""}) +// from clang-c/Index.h:6149:10 + makeExtern< CXResult (*)(CXCursor,void *,_CXCursorAndRangeVisitorBlock *) , clang_findReferencesInFileWithBlock , SimNode_ExtFuncCall >(lib,"clang_findReferencesInFileWithBlock","clang_findReferencesInFileWithBlock") + ->args({"","",""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6212:20 - makeExtern< int (*)(void *,void *,IndexerCallbacks *,unsigned int,unsigned int,const char *,const char *const *,int,CXUnsavedFile *,unsigned int,CXTranslationUnitImpl **,unsigned int) , clang_indexSourceFile , SimNode_ExtFuncCall >(lib,"clang_indexSourceFile","clang_indexSourceFile") - ->args({"","client_data","index_callbacks","index_callbacks_size","index_options","source_filename","command_line_args","num_command_line_args","unsaved_files","num_unsaved_files","out_TU","TU_options"}) +// from clang-c/Index.h:6153:10 + makeExtern< CXResult (*)(CXTranslationUnitImpl *,void *,_CXCursorAndRangeVisitorBlock *) , clang_findIncludesInFileWithBlock , SimNode_ExtFuncCall >(lib,"clang_findIncludesInFileWithBlock","clang_findIncludesInFileWithBlock") + ->args({"","",""}) ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_17.cpp b/modules/dasClangBind/src/dasClangBind.func_17.cpp index ebc686ca4f..3b5793b210 100644 --- a/modules/dasClangBind/src/dasClangBind.func_17.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_17.cpp @@ -12,22 +12,86 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_17() { -// from clang-c/Index.h:6224:20 +// from clang-c/Index.h:6538:20 + makeExtern< int (*)(CXIdxEntityKind) , clang_index_isEntityObjCContainerKind , SimNode_ExtFuncCall >(lib,"clang_index_isEntityObjCContainerKind","clang_index_isEntityObjCContainerKind") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6540:1 + makeExtern< const CXIdxObjCContainerDeclInfo * (*)(const CXIdxDeclInfo *) , clang_index_getObjCContainerDeclInfo , SimNode_ExtFuncCall >(lib,"clang_index_getObjCContainerDeclInfo","clang_index_getObjCContainerDeclInfo") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6543:1 + makeExtern< const CXIdxObjCInterfaceDeclInfo * (*)(const CXIdxDeclInfo *) , clang_index_getObjCInterfaceDeclInfo , SimNode_ExtFuncCall >(lib,"clang_index_getObjCInterfaceDeclInfo","clang_index_getObjCInterfaceDeclInfo") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6547:1 + makeExtern< const CXIdxObjCCategoryDeclInfo * (*)(const CXIdxDeclInfo *) , clang_index_getObjCCategoryDeclInfo , SimNode_ExtFuncCall >(lib,"clang_index_getObjCCategoryDeclInfo","clang_index_getObjCCategoryDeclInfo") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6550:1 + makeExtern< const CXIdxObjCProtocolRefListInfo * (*)(const CXIdxDeclInfo *) , clang_index_getObjCProtocolRefListInfo , SimNode_ExtFuncCall >(lib,"clang_index_getObjCProtocolRefListInfo","clang_index_getObjCProtocolRefListInfo") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6553:1 + makeExtern< const CXIdxObjCPropertyDeclInfo * (*)(const CXIdxDeclInfo *) , clang_index_getObjCPropertyDeclInfo , SimNode_ExtFuncCall >(lib,"clang_index_getObjCPropertyDeclInfo","clang_index_getObjCPropertyDeclInfo") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6556:1 + makeExtern< const CXIdxIBOutletCollectionAttrInfo * (*)(const CXIdxAttrInfo *) , clang_index_getIBOutletCollectionAttrInfo , SimNode_ExtFuncCall >(lib,"clang_index_getIBOutletCollectionAttrInfo","clang_index_getIBOutletCollectionAttrInfo") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6559:1 + makeExtern< const CXIdxCXXClassDeclInfo * (*)(const CXIdxDeclInfo *) , clang_index_getCXXClassDeclInfo , SimNode_ExtFuncCall >(lib,"clang_index_getCXXClassDeclInfo","clang_index_getCXXClassDeclInfo") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6566:1 + makeExtern< void * (*)(const CXIdxContainerInfo *) , clang_index_getClientContainer , SimNode_ExtFuncCall >(lib,"clang_index_getClientContainer","clang_index_getClientContainer") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6572:21 + makeExtern< void (*)(const CXIdxContainerInfo *,void *) , clang_index_setClientContainer , SimNode_ExtFuncCall >(lib,"clang_index_setClientContainer","clang_index_setClientContainer") + ->args({"",""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6579:1 + makeExtern< void * (*)(const CXIdxEntityInfo *) , clang_index_getClientEntity , SimNode_ExtFuncCall >(lib,"clang_index_getClientEntity","clang_index_getClientEntity") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6584:21 + makeExtern< void (*)(const CXIdxEntityInfo *,void *) , clang_index_setClientEntity , SimNode_ExtFuncCall >(lib,"clang_index_setClientEntity","clang_index_setClientEntity") + ->args({"",""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6599:30 + makeExtern< void * (*)(void *) , clang_IndexAction_create , SimNode_ExtFuncCall >(lib,"clang_IndexAction_create","clang_IndexAction_create") + ->args({"CIdx"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6607:21 + makeExtern< void (*)(void *) , clang_IndexAction_dispose , SimNode_ExtFuncCall >(lib,"clang_IndexAction_dispose","clang_IndexAction_dispose") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6673:20 + makeExtern< int (*)(void *,void *,IndexerCallbacks *,unsigned int,unsigned int,const char *,const char *const *,int,CXUnsavedFile *,unsigned int,CXTranslationUnitImpl **,unsigned int) , clang_indexSourceFile , SimNode_ExtFuncCall >(lib,"clang_indexSourceFile","clang_indexSourceFile") + ->args({"","client_data","index_callbacks","index_callbacks_size","index_options","source_filename","command_line_args","num_command_line_args","unsaved_files","num_unsaved_files","out_TU","TU_options"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6685:20 makeExtern< int (*)(void *,void *,IndexerCallbacks *,unsigned int,unsigned int,const char *,const char *const *,int,CXUnsavedFile *,unsigned int,CXTranslationUnitImpl **,unsigned int) , clang_indexSourceFileFullArgv , SimNode_ExtFuncCall >(lib,"clang_indexSourceFileFullArgv","clang_indexSourceFileFullArgv") ->args({"","client_data","index_callbacks","index_callbacks_size","index_options","source_filename","command_line_args","num_command_line_args","unsaved_files","num_unsaved_files","out_TU","TU_options"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6247:20 +// from clang-c/Index.h:6708:20 makeExtern< int (*)(void *,void *,IndexerCallbacks *,unsigned int,unsigned int,CXTranslationUnitImpl *) , clang_indexTranslationUnit , SimNode_ExtFuncCall >(lib,"clang_indexTranslationUnit","clang_indexTranslationUnit") ->args({"","client_data","index_callbacks","index_callbacks_size","index_options",""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6259:21 +// from clang-c/Index.h:6720:21 makeExtern< void (*)(CXIdxLoc,void **,void **,unsigned int *,unsigned int *,unsigned int *) , clang_indexLoc_getFileLocation , SimNode_ExtFuncCall >(lib,"clang_indexLoc_getFileLocation","clang_indexLoc_getFileLocation") ->args({"loc","indexFile","file","line","column","offset"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:6269:18 +// from clang-c/Index.h:6730:18 makeExtern< CXSourceLocation (*)(CXIdxLoc) , clang_indexLoc_getCXSourceLocation , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_indexLoc_getCXSourceLocation","clang_indexLoc_getCXSourceLocation") ->args({"loc"}) ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6892:1 + makeExtern< CXString (*)(CXBinaryOperatorKind) , clang_getBinaryOperatorKindSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getBinaryOperatorKindSpelling","clang_getBinaryOperatorKindSpelling") + ->args({"kind"}) + ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_18.cpp b/modules/dasClangBind/src/dasClangBind.func_18.cpp new file mode 100644 index 0000000000..1e339cc1a6 --- /dev/null +++ b/modules/dasClangBind/src/dasClangBind.func_18.cpp @@ -0,0 +1,49 @@ +// this file is generated via Daslang automatic binder +// all user modifications will be lost after this file is re-generated + +#include "daScript/misc/platform.h" +#include "daScript/ast/ast.h" +#include "daScript/ast/ast_interop.h" +#include "daScript/ast/ast_handle.h" +#include "daScript/ast/ast_typefactory_bind.h" +#include "daScript/simulate/bind_enum.h" +#include "dasClangBind.h" +#include "need_dasClangBind.h" +namespace das { +#include "dasClangBind.func.aot.decl.inc" +void Module_dasClangBind::initFunctions_18() { +// from clang-c/Index.h:6900:1 + makeExtern< CXBinaryOperatorKind (*)(CXCursor) , clang_getCursorBinaryOperatorKind , SimNode_ExtFuncCall >(lib,"clang_getCursorBinaryOperatorKind","clang_getCursorBinaryOperatorKind") + ->args({"cursor"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6942:1 + makeExtern< CXString (*)(CXUnaryOperatorKind) , clang_getUnaryOperatorKindSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getUnaryOperatorKindSpelling","clang_getUnaryOperatorKindSpelling") + ->args({"kind"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6950:1 + makeExtern< CXUnaryOperatorKind (*)(CXCursor) , clang_getCursorUnaryOperatorKind , SimNode_ExtFuncCall >(lib,"clang_getCursorUnaryOperatorKind","clang_getCursorUnaryOperatorKind") + ->args({"cursor"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6963:46 + makeExtern< void * (*)(const char *) , clang_getRemappings , SimNode_ExtFuncCall >(lib,"clang_getRemappings","clang_getRemappings") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6966:1 + makeExtern< void * (*)(const char **,unsigned int) , clang_getRemappingsFromFileList , SimNode_ExtFuncCall >(lib,"clang_getRemappingsFromFileList","clang_getRemappingsFromFileList") + ->args({"",""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6968:43 + makeExtern< unsigned int (*)(void *) , clang_remap_getNumFiles , SimNode_ExtFuncCall >(lib,"clang_remap_getNumFiles","clang_remap_getNumFiles") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6971:1 + makeExtern< void (*)(void *,unsigned int,CXString *,CXString *) , clang_remap_getFilenames , SimNode_ExtFuncCall >(lib,"clang_remap_getFilenames","clang_remap_getFilenames") + ->args({"","","",""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:6973:39 + makeExtern< void (*)(void *) , clang_remap_dispose , SimNode_ExtFuncCall >(lib,"clang_remap_dispose","clang_remap_dispose") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +} +} + diff --git a/modules/dasClangBind/src/dasClangBind.func_2.cpp b/modules/dasClangBind/src/dasClangBind.func_2.cpp index 14446513ad..325066cb80 100644 --- a/modules/dasClangBind/src/dasClangBind.func_2.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_2.cpp @@ -12,19 +12,23 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_2() { -// from clang-c/CXSourceLocation.h:247:21 +// from clang-c/CXSourceLocation.h:229:21 + makeExtern< void (*)(CXSourceLocation,void **,unsigned int *,unsigned int *,unsigned int *) , clang_getSpellingLocation , SimNode_ExtFuncCall >(lib,"clang_getSpellingLocation","clang_getSpellingLocation") + ->args({"location","file","line","column","offset"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/CXSourceLocation.h:257:21 makeExtern< void (*)(CXSourceLocation,void **,unsigned int *,unsigned int *,unsigned int *) , clang_getFileLocation , SimNode_ExtFuncCall >(lib,"clang_getFileLocation","clang_getFileLocation") ->args({"location","file","line","column","offset"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:255:33 +// from clang-c/CXSourceLocation.h:265:33 makeExtern< CXSourceLocation (*)(CXSourceRange) , clang_getRangeStart , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getRangeStart","clang_getRangeStart") ->args({"range"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:261:33 +// from clang-c/CXSourceLocation.h:271:33 makeExtern< CXSourceLocation (*)(CXSourceRange) , clang_getRangeEnd , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getRangeEnd","clang_getRangeEnd") ->args({"range"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXSourceLocation.h:278:21 +// from clang-c/CXSourceLocation.h:288:21 makeExtern< void (*)(CXSourceRangeList *) , clang_disposeSourceRangeList , SimNode_ExtFuncCall >(lib,"clang_disposeSourceRangeList","clang_disposeSourceRangeList") ->args({"ranges"}) ->addToModule(*this, SideEffects::worstDefault); @@ -87,10 +91,6 @@ void Module_dasClangBind::initFunctions_2() { makeExtern< CXString (*)(void *) , clang_getDiagnosticCategoryText , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getDiagnosticCategoryText","clang_getDiagnosticCategoryText") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/CXDiagnostic.h:321:25 - makeExtern< unsigned int (*)(void *) , clang_getDiagnosticNumRanges , SimNode_ExtFuncCall >(lib,"clang_getDiagnosticNumRanges","clang_getDiagnosticNumRanges") - ->args({""}) - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_3.cpp b/modules/dasClangBind/src/dasClangBind.func_3.cpp index 99204ee627..4115d1be0a 100644 --- a/modules/dasClangBind/src/dasClangBind.func_3.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_3.cpp @@ -12,6 +12,10 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_3() { +// from clang-c/CXDiagnostic.h:321:25 + makeExtern< unsigned int (*)(void *) , clang_getDiagnosticNumRanges , SimNode_ExtFuncCall >(lib,"clang_getDiagnosticNumRanges","clang_getDiagnosticNumRanges") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); // from clang-c/CXDiagnostic.h:336:30 makeExtern< CXSourceRange (*)(void *,unsigned int) , clang_getDiagnosticRange , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getDiagnosticRange","clang_getDiagnosticRange") ->args({"Diagnostic","Range"}) @@ -24,74 +28,70 @@ void Module_dasClangBind::initFunctions_3() { makeExtern< CXString (*)(void *,unsigned int,CXSourceRange *) , clang_getDiagnosticFixIt , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getDiagnosticFixIt","clang_getDiagnosticFixIt") ->args({"Diagnostic","FixIt","ReplacementRange"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:267:24 +// from clang-c/Index.h:271:24 makeExtern< void * (*)(int,int) , clang_createIndex , SimNode_ExtFuncCall >(lib,"clang_createIndex","clang_createIndex") ->args({"excludeDeclarationsFromPCH","displayDiagnostics"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:276:21 +// from clang-c/Index.h:280:21 makeExtern< void (*)(void *) , clang_disposeIndex , SimNode_ExtFuncCall >(lib,"clang_disposeIndex","clang_disposeIndex") ->args({"index"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:325:21 +// from clang-c/Index.h:447:1 + makeExtern< void * (*)(const CXIndexOptions *) , clang_createIndexWithOptions , SimNode_ExtFuncCall >(lib,"clang_createIndexWithOptions","clang_createIndexWithOptions") + ->args({"options"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:467:21 makeExtern< void (*)(void *,unsigned int) , clang_CXIndex_setGlobalOptions , SimNode_ExtFuncCall >(lib,"clang_CXIndex_setGlobalOptions","clang_CXIndex_setGlobalOptions") ->args({"","options"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:333:25 +// from clang-c/Index.h:478:25 makeExtern< unsigned int (*)(void *) , clang_CXIndex_getGlobalOptions , SimNode_ExtFuncCall >(lib,"clang_CXIndex_getGlobalOptions","clang_CXIndex_getGlobalOptions") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:343:1 +// from clang-c/Index.h:491:1 makeExtern< void (*)(void *,const char *) , clang_CXIndex_setInvocationEmissionPathOption , SimNode_ExtFuncCall >(lib,"clang_CXIndex_setInvocationEmissionPathOption","clang_CXIndex_setInvocationEmissionPathOption") ->args({"","Path"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:350:25 +// from clang-c/Index.h:498:25 makeExtern< unsigned int (*)(CXTranslationUnitImpl *,void *) , clang_isFileMultipleIncludeGuarded , SimNode_ExtFuncCall >(lib,"clang_isFileMultipleIncludeGuarded","clang_isFileMultipleIncludeGuarded") ->args({"tu","file"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:363:23 +// from clang-c/Index.h:511:23 makeExtern< void * (*)(CXTranslationUnitImpl *,const char *) , clang_getFile , SimNode_ExtFuncCall >(lib,"clang_getFile","clang_getFile") ->args({"tu","file_name"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:378:28 +// from clang-c/Index.h:526:28 makeExtern< const char * (*)(CXTranslationUnitImpl *,void *,size_t *) , clang_getFileContents , SimNode_ExtFuncCall >(lib,"clang_getFileContents","clang_getFileContents") ->args({"tu","file","size"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:385:33 +// from clang-c/Index.h:533:33 makeExtern< CXSourceLocation (*)(CXTranslationUnitImpl *,void *,unsigned int,unsigned int) , clang_getLocation , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getLocation","clang_getLocation") ->args({"tu","file","line","column"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:392:33 +// from clang-c/Index.h:540:33 makeExtern< CXSourceLocation (*)(CXTranslationUnitImpl *,void *,unsigned int) , clang_getLocationForOffset , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getLocationForOffset","clang_getLocationForOffset") ->args({"tu","file","offset"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:402:35 +// from clang-c/Index.h:550:35 makeExtern< CXSourceRangeList * (*)(CXTranslationUnitImpl *,void *) , clang_getSkippedRanges , SimNode_ExtFuncCall >(lib,"clang_getSkippedRanges","clang_getSkippedRanges") ->args({"tu","file"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:413:1 +// from clang-c/Index.h:561:1 makeExtern< CXSourceRangeList * (*)(CXTranslationUnitImpl *) , clang_getAllSkippedRanges , SimNode_ExtFuncCall >(lib,"clang_getAllSkippedRanges","clang_getAllSkippedRanges") ->args({"tu"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:419:25 +// from clang-c/Index.h:567:25 makeExtern< unsigned int (*)(CXTranslationUnitImpl *) , clang_getNumDiagnostics , SimNode_ExtFuncCall >(lib,"clang_getNumDiagnostics","clang_getNumDiagnostics") ->args({"Unit"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:430:29 +// from clang-c/Index.h:578:29 makeExtern< void * (*)(CXTranslationUnitImpl *,unsigned int) , clang_getDiagnostic , SimNode_ExtFuncCall >(lib,"clang_getDiagnostic","clang_getDiagnostic") ->args({"Unit","Index"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:440:1 +// from clang-c/Index.h:588:1 makeExtern< void * (*)(CXTranslationUnitImpl *) , clang_getDiagnosticSetFromTU , SimNode_ExtFuncCall >(lib,"clang_getDiagnosticSetFromTU","clang_getDiagnosticSetFromTU") ->args({"Unit"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:456:1 - makeExtern< CXString (*)(CXTranslationUnitImpl *) , clang_getTranslationUnitSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTranslationUnitSpelling","clang_getTranslationUnitSpelling") - ->args({"CTUnit"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:498:34 - makeExtern< CXTranslationUnitImpl * (*)(void *,const char *,int,const char *const *,unsigned int,CXUnsavedFile *) , clang_createTranslationUnitFromSourceFile , SimNode_ExtFuncCall >(lib,"clang_createTranslationUnitFromSourceFile","clang_createTranslationUnitFromSourceFile") - ->args({"CIdx","source_filename","num_clang_command_line_args","clang_command_line_args","num_unsaved_files","unsaved_files"}) - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_4.cpp b/modules/dasClangBind/src/dasClangBind.func_4.cpp index 86a4ee156f..ffb50ae32a 100644 --- a/modules/dasClangBind/src/dasClangBind.func_4.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_4.cpp @@ -12,84 +12,85 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_4() { -// from clang-c/Index.h:510:1 +// from clang-c/Index.h:604:1 + makeExtern< CXString (*)(CXTranslationUnitImpl *) , clang_getTranslationUnitSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTranslationUnitSpelling","clang_getTranslationUnitSpelling") + ->args({"CTUnit"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:646:34 + makeExtern< CXTranslationUnitImpl * (*)(void *,const char *,int,const char *const *,unsigned int,CXUnsavedFile *) , clang_createTranslationUnitFromSourceFile , SimNode_ExtFuncCall >(lib,"clang_createTranslationUnitFromSourceFile","clang_createTranslationUnitFromSourceFile") + ->args({"CIdx","source_filename","num_clang_command_line_args","clang_command_line_args","num_unsaved_files","unsaved_files"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:658:1 makeExtern< CXTranslationUnitImpl * (*)(void *,const char *) , clang_createTranslationUnit , SimNode_ExtFuncCall >(lib,"clang_createTranslationUnit","clang_createTranslationUnit") ->args({"CIdx","ast_filename"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:521:1 +// from clang-c/Index.h:669:1 makeExtern< CXErrorCode (*)(void *,const char *,CXTranslationUnitImpl **) , clang_createTranslationUnit2 , SimNode_ExtFuncCall >(lib,"clang_createTranslationUnit2","clang_createTranslationUnit2") ->args({"CIdx","ast_filename","out_TU"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:692:25 +// from clang-c/Index.h:840:25 makeExtern< unsigned int (*)() , clang_defaultEditingTranslationUnitOptions , SimNode_ExtFuncCall >(lib,"clang_defaultEditingTranslationUnitOptions","clang_defaultEditingTranslationUnitOptions") ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:700:34 +// from clang-c/Index.h:848:34 makeExtern< CXTranslationUnitImpl * (*)(void *,const char *,const char *const *,int,CXUnsavedFile *,unsigned int,unsigned int) , clang_parseTranslationUnit , SimNode_ExtFuncCall >(lib,"clang_parseTranslationUnit","clang_parseTranslationUnit") ->args({"CIdx","source_filename","command_line_args","num_command_line_args","unsaved_files","num_unsaved_files","options"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:750:33 +// from clang-c/Index.h:898:33 makeExtern< CXErrorCode (*)(void *,const char *,const char *const *,int,CXUnsavedFile *,unsigned int,unsigned int,CXTranslationUnitImpl **) , clang_parseTranslationUnit2 , SimNode_ExtFuncCall >(lib,"clang_parseTranslationUnit2","clang_parseTranslationUnit2") ->args({"CIdx","source_filename","command_line_args","num_command_line_args","unsaved_files","num_unsaved_files","options","out_TU"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:761:33 +// from clang-c/Index.h:909:33 makeExtern< CXErrorCode (*)(void *,const char *,const char *const *,int,CXUnsavedFile *,unsigned int,unsigned int,CXTranslationUnitImpl **) , clang_parseTranslationUnit2FullArgv , SimNode_ExtFuncCall >(lib,"clang_parseTranslationUnit2FullArgv","clang_parseTranslationUnit2FullArgv") ->args({"CIdx","source_filename","command_line_args","num_command_line_args","unsaved_files","num_unsaved_files","options","out_TU"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:790:25 +// from clang-c/Index.h:938:25 makeExtern< unsigned int (*)(CXTranslationUnitImpl *) , clang_defaultSaveOptions , SimNode_ExtFuncCall >(lib,"clang_defaultSaveOptions","clang_defaultSaveOptions") ->args({"TU"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:850:20 +// from clang-c/Index.h:998:20 makeExtern< int (*)(CXTranslationUnitImpl *,const char *,unsigned int) , clang_saveTranslationUnit , SimNode_ExtFuncCall >(lib,"clang_saveTranslationUnit","clang_saveTranslationUnit") ->args({"TU","FileName","options"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:861:25 +// from clang-c/Index.h:1009:25 makeExtern< unsigned int (*)(CXTranslationUnitImpl *) , clang_suspendTranslationUnit , SimNode_ExtFuncCall >(lib,"clang_suspendTranslationUnit","clang_suspendTranslationUnit") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:866:21 +// from clang-c/Index.h:1014:21 makeExtern< void (*)(CXTranslationUnitImpl *) , clang_disposeTranslationUnit , SimNode_ExtFuncCall >(lib,"clang_disposeTranslationUnit","clang_disposeTranslationUnit") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:892:25 +// from clang-c/Index.h:1040:25 makeExtern< unsigned int (*)(CXTranslationUnitImpl *) , clang_defaultReparseOptions , SimNode_ExtFuncCall >(lib,"clang_defaultReparseOptions","clang_defaultReparseOptions") ->args({"TU"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:934:1 +// from clang-c/Index.h:1082:1 makeExtern< int (*)(CXTranslationUnitImpl *,unsigned int,CXUnsavedFile *,unsigned int) , clang_reparseTranslationUnit , SimNode_ExtFuncCall >(lib,"clang_reparseTranslationUnit","clang_reparseTranslationUnit") ->args({"TU","num_unsaved_files","unsaved_files","options"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:969:13 +// from clang-c/Index.h:1117:13 makeExtern< const char * (*)(CXTUResourceUsageKind) , clang_getTUResourceUsageName , SimNode_ExtFuncCall >(lib,"clang_getTUResourceUsageName","clang_getTUResourceUsageName") ->args({"kind"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:1000:1 +// from clang-c/Index.h:1148:1 makeExtern< CXTUResourceUsage (*)(CXTranslationUnitImpl *) , clang_getCXTUResourceUsage , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCXTUResourceUsage","clang_getCXTUResourceUsage") ->args({"TU"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:1002:21 +// from clang-c/Index.h:1150:21 makeExtern< void (*)(CXTUResourceUsage) , clang_disposeCXTUResourceUsage , SimNode_ExtFuncCall >(lib,"clang_disposeCXTUResourceUsage","clang_disposeCXTUResourceUsage") ->args({"usage"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:1010:1 +// from clang-c/Index.h:1158:1 makeExtern< CXTargetInfoImpl * (*)(CXTranslationUnitImpl *) , clang_getTranslationUnitTargetInfo , SimNode_ExtFuncCall >(lib,"clang_getTranslationUnitTargetInfo","clang_getTranslationUnitTargetInfo") ->args({"CTUnit"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:1015:21 +// from clang-c/Index.h:1163:21 makeExtern< void (*)(CXTargetInfoImpl *) , clang_TargetInfo_dispose , SimNode_ExtFuncCall >(lib,"clang_TargetInfo_dispose","clang_TargetInfo_dispose") ->args({"Info"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:1022:25 +// from clang-c/Index.h:1170:25 makeExtern< CXString (*)(CXTargetInfoImpl *) , clang_TargetInfo_getTriple , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_TargetInfo_getTriple","clang_TargetInfo_getTriple") ->args({"Info"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:1029:20 - makeExtern< int (*)(CXTargetInfoImpl *) , clang_TargetInfo_getPointerWidth , SimNode_ExtFuncCall >(lib,"clang_TargetInfo_getPointerWidth","clang_TargetInfo_getPointerWidth") - ->args({"Info"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2122:25 - makeExtern< CXCursor (*)() , clang_getNullCursor , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getNullCursor","clang_getNullCursor") - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_5.cpp b/modules/dasClangBind/src/dasClangBind.func_5.cpp index ac4ed149ff..8168e887b7 100644 --- a/modules/dasClangBind/src/dasClangBind.func_5.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_5.cpp @@ -12,86 +12,85 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_5() { -// from clang-c/Index.h:2130:25 +// from clang-c/Index.h:1177:20 + makeExtern< int (*)(CXTargetInfoImpl *) , clang_TargetInfo_getPointerWidth , SimNode_ExtFuncCall >(lib,"clang_TargetInfo_getPointerWidth","clang_TargetInfo_getPointerWidth") + ->args({"Info"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:2356:25 + makeExtern< CXCursor (*)() , clang_getNullCursor , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getNullCursor","clang_getNullCursor") + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:2364:25 makeExtern< CXCursor (*)(CXTranslationUnitImpl *) , clang_getTranslationUnitCursor , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTranslationUnitCursor","clang_getTranslationUnitCursor") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2135:25 +// from clang-c/Index.h:2369:25 makeExtern< unsigned int (*)(CXCursor,CXCursor) , clang_equalCursors , SimNode_ExtFuncCall >(lib,"clang_equalCursors","clang_equalCursors") ->args({"",""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2140:20 +// from clang-c/Index.h:2374:20 makeExtern< int (*)(CXCursor) , clang_Cursor_isNull , SimNode_ExtFuncCall >(lib,"clang_Cursor_isNull","clang_Cursor_isNull") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2145:25 +// from clang-c/Index.h:2379:25 makeExtern< unsigned int (*)(CXCursor) , clang_hashCursor , SimNode_ExtFuncCall >(lib,"clang_hashCursor","clang_hashCursor") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2150:34 +// from clang-c/Index.h:2384:34 makeExtern< CXCursorKind (*)(CXCursor) , clang_getCursorKind , SimNode_ExtFuncCall >(lib,"clang_getCursorKind","clang_getCursorKind") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2155:25 +// from clang-c/Index.h:2389:25 makeExtern< unsigned int (*)(CXCursorKind) , clang_isDeclaration , SimNode_ExtFuncCall >(lib,"clang_isDeclaration","clang_isDeclaration") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2165:25 +// from clang-c/Index.h:2399:25 makeExtern< unsigned int (*)(CXCursor) , clang_isInvalidDeclaration , SimNode_ExtFuncCall >(lib,"clang_isInvalidDeclaration","clang_isInvalidDeclaration") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2175:25 +// from clang-c/Index.h:2409:25 makeExtern< unsigned int (*)(CXCursorKind) , clang_isReference , SimNode_ExtFuncCall >(lib,"clang_isReference","clang_isReference") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2180:25 +// from clang-c/Index.h:2414:25 makeExtern< unsigned int (*)(CXCursorKind) , clang_isExpression , SimNode_ExtFuncCall >(lib,"clang_isExpression","clang_isExpression") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2185:25 +// from clang-c/Index.h:2419:25 makeExtern< unsigned int (*)(CXCursorKind) , clang_isStatement , SimNode_ExtFuncCall >(lib,"clang_isStatement","clang_isStatement") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2190:25 +// from clang-c/Index.h:2424:25 makeExtern< unsigned int (*)(CXCursorKind) , clang_isAttribute , SimNode_ExtFuncCall >(lib,"clang_isAttribute","clang_isAttribute") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2195:25 +// from clang-c/Index.h:2429:25 makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_hasAttrs , SimNode_ExtFuncCall >(lib,"clang_Cursor_hasAttrs","clang_Cursor_hasAttrs") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2201:25 +// from clang-c/Index.h:2435:25 makeExtern< unsigned int (*)(CXCursorKind) , clang_isInvalid , SimNode_ExtFuncCall >(lib,"clang_isInvalid","clang_isInvalid") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2207:25 +// from clang-c/Index.h:2441:25 makeExtern< unsigned int (*)(CXCursorKind) , clang_isTranslationUnit , SimNode_ExtFuncCall >(lib,"clang_isTranslationUnit","clang_isTranslationUnit") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2213:25 +// from clang-c/Index.h:2447:25 makeExtern< unsigned int (*)(CXCursorKind) , clang_isPreprocessing , SimNode_ExtFuncCall >(lib,"clang_isPreprocessing","clang_isPreprocessing") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2219:25 +// from clang-c/Index.h:2453:25 makeExtern< unsigned int (*)(CXCursorKind) , clang_isUnexposed , SimNode_ExtFuncCall >(lib,"clang_isUnexposed","clang_isUnexposed") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2245:35 +// from clang-c/Index.h:2479:35 makeExtern< CXLinkageKind (*)(CXCursor) , clang_getCursorLinkage , SimNode_ExtFuncCall >(lib,"clang_getCursorLinkage","clang_getCursorLinkage") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2271:38 +// from clang-c/Index.h:2505:38 makeExtern< CXVisibilityKind (*)(CXCursor) , clang_getCursorVisibility , SimNode_ExtFuncCall >(lib,"clang_getCursorVisibility","clang_getCursorVisibility") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2282:1 - makeExtern< CXAvailabilityKind (*)(CXCursor) , clang_getCursorAvailability , SimNode_ExtFuncCall >(lib,"clang_getCursorAvailability","clang_getCursorAvailability") - ->args({"cursor"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2357:20 - makeExtern< int (*)(CXCursor,int *,CXString *,int *,CXString *,CXPlatformAvailability *,int) , clang_getCursorPlatformAvailability , SimNode_ExtFuncCall >(lib,"clang_getCursorPlatformAvailability","clang_getCursorPlatformAvailability") - ->args({"cursor","always_deprecated","deprecated_message","always_unavailable","unavailable_message","availability","availability_size"}) - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_6.cpp b/modules/dasClangBind/src/dasClangBind.func_6.cpp index c93e77f8a6..34657f4eaa 100644 --- a/modules/dasClangBind/src/dasClangBind.func_6.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_6.cpp @@ -12,85 +12,85 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_6() { -// from clang-c/Index.h:2366:1 +// from clang-c/Index.h:2516:1 + makeExtern< CXAvailabilityKind (*)(CXCursor) , clang_getCursorAvailability , SimNode_ExtFuncCall >(lib,"clang_getCursorAvailability","clang_getCursorAvailability") + ->args({"cursor"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:2591:20 + makeExtern< int (*)(CXCursor,int *,CXString *,int *,CXString *,CXPlatformAvailability *,int) , clang_getCursorPlatformAvailability , SimNode_ExtFuncCall >(lib,"clang_getCursorPlatformAvailability","clang_getCursorPlatformAvailability") + ->args({"cursor","always_deprecated","deprecated_message","always_unavailable","unavailable_message","availability","availability_size"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:2600:1 makeExtern< void (*)(CXPlatformAvailability *) , clang_disposeCXPlatformAvailability , SimNode_ExtFuncCall >(lib,"clang_disposeCXPlatformAvailability","clang_disposeCXPlatformAvailability") ->args({"availability"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2372:25 +// from clang-c/Index.h:2606:25 makeExtern< CXCursor (*)(CXCursor) , clang_Cursor_getVarDeclInitializer , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getVarDeclInitializer","clang_Cursor_getVarDeclInitializer") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2379:20 +// from clang-c/Index.h:2613:20 makeExtern< int (*)(CXCursor) , clang_Cursor_hasVarDeclGlobalStorage , SimNode_ExtFuncCall >(lib,"clang_Cursor_hasVarDeclGlobalStorage","clang_Cursor_hasVarDeclGlobalStorage") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2386:20 +// from clang-c/Index.h:2620:20 makeExtern< int (*)(CXCursor) , clang_Cursor_hasVarDeclExternalStorage , SimNode_ExtFuncCall >(lib,"clang_Cursor_hasVarDeclExternalStorage","clang_Cursor_hasVarDeclExternalStorage") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2401:36 +// from clang-c/Index.h:2635:36 makeExtern< CXLanguageKind (*)(CXCursor) , clang_getCursorLanguage , SimNode_ExtFuncCall >(lib,"clang_getCursorLanguage","clang_getCursorLanguage") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2413:31 +// from clang-c/Index.h:2647:31 makeExtern< CXTLSKind (*)(CXCursor) , clang_getCursorTLSKind , SimNode_ExtFuncCall >(lib,"clang_getCursorTLSKind","clang_getCursorTLSKind") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2418:34 +// from clang-c/Index.h:2652:34 makeExtern< CXTranslationUnitImpl * (*)(CXCursor) , clang_Cursor_getTranslationUnit , SimNode_ExtFuncCall >(lib,"clang_Cursor_getTranslationUnit","clang_Cursor_getTranslationUnit") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2428:28 +// from clang-c/Index.h:2662:28 makeExtern< CXCursorSetImpl * (*)() , clang_createCXCursorSet , SimNode_ExtFuncCall >(lib,"clang_createCXCursorSet","clang_createCXCursorSet") ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2433:21 +// from clang-c/Index.h:2667:21 makeExtern< void (*)(CXCursorSetImpl *) , clang_disposeCXCursorSet , SimNode_ExtFuncCall >(lib,"clang_disposeCXCursorSet","clang_disposeCXCursorSet") ->args({"cset"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2440:25 +// from clang-c/Index.h:2674:25 makeExtern< unsigned int (*)(CXCursorSetImpl *,CXCursor) , clang_CXCursorSet_contains , SimNode_ExtFuncCall >(lib,"clang_CXCursorSet_contains","clang_CXCursorSet_contains") ->args({"cset","cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2448:25 +// from clang-c/Index.h:2682:25 makeExtern< unsigned int (*)(CXCursorSetImpl *,CXCursor) , clang_CXCursorSet_insert , SimNode_ExtFuncCall >(lib,"clang_CXCursorSet_insert","clang_CXCursorSet_insert") ->args({"cset","cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2484:25 +// from clang-c/Index.h:2718:25 makeExtern< CXCursor (*)(CXCursor) , clang_getCursorSemanticParent , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorSemanticParent","clang_getCursorSemanticParent") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2520:25 +// from clang-c/Index.h:2754:25 makeExtern< CXCursor (*)(CXCursor) , clang_getCursorLexicalParent , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorLexicalParent","clang_getCursorLexicalParent") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2565:21 +// from clang-c/Index.h:2799:21 makeExtern< void (*)(CXCursor,CXCursor **,unsigned int *) , clang_getOverriddenCursors , SimNode_ExtFuncCall >(lib,"clang_getOverriddenCursors","clang_getOverriddenCursors") ->args({"cursor","overridden","num_overridden"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2573:21 +// from clang-c/Index.h:2807:21 makeExtern< void (*)(CXCursor *) , clang_disposeOverriddenCursors , SimNode_ExtFuncCall >(lib,"clang_disposeOverriddenCursors","clang_disposeOverriddenCursors") ->args({"overridden"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2579:23 +// from clang-c/Index.h:2813:23 makeExtern< void * (*)(CXCursor) , clang_getIncludedFile , SimNode_ExtFuncCall >(lib,"clang_getIncludedFile","clang_getIncludedFile") ->args({"cursor"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2611:25 +// from clang-c/Index.h:2845:25 makeExtern< CXCursor (*)(CXTranslationUnitImpl *,CXSourceLocation) , clang_getCursor , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursor","clang_getCursor") ->args({"",""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2623:33 +// from clang-c/Index.h:2857:33 makeExtern< CXSourceLocation (*)(CXCursor) , clang_getCursorLocation , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorLocation","clang_getCursorLocation") ->args({""}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2636:30 - makeExtern< CXSourceRange (*)(CXCursor) , clang_getCursorExtent , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorExtent","clang_getCursorExtent") - ->args({""}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2843:23 - makeExtern< CXType (*)(CXCursor) , clang_getCursorType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorType","clang_getCursorType") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_7.cpp b/modules/dasClangBind/src/dasClangBind.func_7.cpp index 513b359b15..10e3bceda5 100644 --- a/modules/dasClangBind/src/dasClangBind.func_7.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_7.cpp @@ -12,86 +12,86 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_7() { -// from clang-c/Index.h:2851:25 +// from clang-c/Index.h:2870:30 + makeExtern< CXSourceRange (*)(CXCursor) , clang_getCursorExtent , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorExtent","clang_getCursorExtent") + ->args({""}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3102:23 + makeExtern< CXType (*)(CXCursor) , clang_getCursorType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorType","clang_getCursorType") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3110:25 makeExtern< CXString (*)(CXType) , clang_getTypeSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTypeSpelling","clang_getTypeSpelling") ->args({"CT"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2859:23 +// from clang-c/Index.h:3118:23 makeExtern< CXType (*)(CXCursor) , clang_getTypedefDeclUnderlyingType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTypedefDeclUnderlyingType","clang_getTypedefDeclUnderlyingType") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2867:23 +// from clang-c/Index.h:3126:23 makeExtern< CXType (*)(CXCursor) , clang_getEnumDeclIntegerType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getEnumDeclIntegerType","clang_getEnumDeclIntegerType") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2877:26 +// from clang-c/Index.h:3136:26 makeExtern< long long (*)(CXCursor) , clang_getEnumConstantDeclValue , SimNode_ExtFuncCall >(lib,"clang_getEnumConstantDeclValue","clang_getEnumConstantDeclValue") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2888:1 +// from clang-c/Index.h:3147:1 makeExtern< unsigned long long (*)(CXCursor) , clang_getEnumConstantDeclUnsignedValue , SimNode_ExtFuncCall >(lib,"clang_getEnumConstantDeclUnsignedValue","clang_getEnumConstantDeclUnsignedValue") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2895:20 +// from clang-c/Index.h:3152:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isBitField , SimNode_ExtFuncCall >(lib,"clang_Cursor_isBitField","clang_Cursor_isBitField") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3170:20 makeExtern< int (*)(CXCursor) , clang_getFieldDeclBitWidth , SimNode_ExtFuncCall >(lib,"clang_getFieldDeclBitWidth","clang_getFieldDeclBitWidth") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2904:20 +// from clang-c/Index.h:3179:20 makeExtern< int (*)(CXCursor) , clang_Cursor_getNumArguments , SimNode_ExtFuncCall >(lib,"clang_Cursor_getNumArguments","clang_Cursor_getNumArguments") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2913:25 +// from clang-c/Index.h:3188:25 makeExtern< CXCursor (*)(CXCursor,unsigned int) , clang_Cursor_getArgument , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getArgument","clang_Cursor_getArgument") ->args({"C","i"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2951:20 +// from clang-c/Index.h:3226:20 makeExtern< int (*)(CXCursor) , clang_Cursor_getNumTemplateArguments , SimNode_ExtFuncCall >(lib,"clang_Cursor_getNumTemplateArguments","clang_Cursor_getNumTemplateArguments") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2971:1 +// from clang-c/Index.h:3246:1 makeExtern< CXTemplateArgumentKind (*)(CXCursor,unsigned int) , clang_Cursor_getTemplateArgumentKind , SimNode_ExtFuncCall >(lib,"clang_Cursor_getTemplateArgumentKind","clang_Cursor_getTemplateArgumentKind") ->args({"C","I"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:2991:23 +// from clang-c/Index.h:3266:23 makeExtern< CXType (*)(CXCursor,unsigned int) , clang_Cursor_getTemplateArgumentType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Cursor_getTemplateArgumentType","clang_Cursor_getTemplateArgumentType") ->args({"C","I"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3012:26 +// from clang-c/Index.h:3287:26 makeExtern< long long (*)(CXCursor,unsigned int) , clang_Cursor_getTemplateArgumentValue , SimNode_ExtFuncCall >(lib,"clang_Cursor_getTemplateArgumentValue","clang_Cursor_getTemplateArgumentValue") ->args({"C","I"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3034:1 +// from clang-c/Index.h:3309:1 makeExtern< unsigned long long (*)(CXCursor,unsigned int) , clang_Cursor_getTemplateArgumentUnsignedValue , SimNode_ExtFuncCall >(lib,"clang_Cursor_getTemplateArgumentUnsignedValue","clang_Cursor_getTemplateArgumentUnsignedValue") ->args({"C","I"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3042:25 +// from clang-c/Index.h:3317:25 makeExtern< unsigned int (*)(CXType,CXType) , clang_equalTypes , SimNode_ExtFuncCall >(lib,"clang_equalTypes","clang_equalTypes") ->args({"A","B"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3052:23 +// from clang-c/Index.h:3327:23 makeExtern< CXType (*)(CXType) , clang_getCanonicalType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCanonicalType","clang_getCanonicalType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3059:25 +// from clang-c/Index.h:3334:25 makeExtern< unsigned int (*)(CXType) , clang_isConstQualifiedType , SimNode_ExtFuncCall >(lib,"clang_isConstQualifiedType","clang_isConstQualifiedType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3065:25 +// from clang-c/Index.h:3340:25 makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isMacroFunctionLike , SimNode_ExtFuncCall >(lib,"clang_Cursor_isMacroFunctionLike","clang_Cursor_isMacroFunctionLike") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3071:25 - makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isMacroBuiltin , SimNode_ExtFuncCall >(lib,"clang_Cursor_isMacroBuiltin","clang_Cursor_isMacroBuiltin") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3077:25 - makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isFunctionInlined , SimNode_ExtFuncCall >(lib,"clang_Cursor_isFunctionInlined","clang_Cursor_isFunctionInlined") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3084:25 - makeExtern< unsigned int (*)(CXType) , clang_isVolatileQualifiedType , SimNode_ExtFuncCall >(lib,"clang_isVolatileQualifiedType","clang_isVolatileQualifiedType") - ->args({"T"}) - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_8.cpp b/modules/dasClangBind/src/dasClangBind.func_8.cpp index d04dedc6b4..f3c24cfa2c 100644 --- a/modules/dasClangBind/src/dasClangBind.func_8.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_8.cpp @@ -12,86 +12,86 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_8() { -// from clang-c/Index.h:3091:25 +// from clang-c/Index.h:3346:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isMacroBuiltin , SimNode_ExtFuncCall >(lib,"clang_Cursor_isMacroBuiltin","clang_Cursor_isMacroBuiltin") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3352:25 + makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isFunctionInlined , SimNode_ExtFuncCall >(lib,"clang_Cursor_isFunctionInlined","clang_Cursor_isFunctionInlined") + ->args({"C"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3359:25 + makeExtern< unsigned int (*)(CXType) , clang_isVolatileQualifiedType , SimNode_ExtFuncCall >(lib,"clang_isVolatileQualifiedType","clang_isVolatileQualifiedType") + ->args({"T"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3366:25 makeExtern< unsigned int (*)(CXType) , clang_isRestrictQualifiedType , SimNode_ExtFuncCall >(lib,"clang_isRestrictQualifiedType","clang_isRestrictQualifiedType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3096:25 +// from clang-c/Index.h:3371:25 makeExtern< unsigned int (*)(CXType) , clang_getAddressSpace , SimNode_ExtFuncCall >(lib,"clang_getAddressSpace","clang_getAddressSpace") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3101:25 +// from clang-c/Index.h:3376:25 makeExtern< CXString (*)(CXType) , clang_getTypedefName , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTypedefName","clang_getTypedefName") ->args({"CT"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3106:23 +// from clang-c/Index.h:3381:23 makeExtern< CXType (*)(CXType) , clang_getPointeeType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getPointeeType","clang_getPointeeType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3143:23 +// from clang-c/Index.h:3418:23 makeExtern< CXType (*)(CXType) , clang_getUnqualifiedType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getUnqualifiedType","clang_getUnqualifiedType") ->args({"CT"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3154:23 +// from clang-c/Index.h:3429:23 makeExtern< CXType (*)(CXType) , clang_getNonReferenceType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getNonReferenceType","clang_getNonReferenceType") ->args({"CT"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3159:25 +// from clang-c/Index.h:3434:25 makeExtern< CXCursor (*)(CXType) , clang_getTypeDeclaration , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTypeDeclaration","clang_getTypeDeclaration") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3164:25 +// from clang-c/Index.h:3439:25 makeExtern< CXString (*)(CXCursor) , clang_getDeclObjCTypeEncoding , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getDeclObjCTypeEncoding","clang_getDeclObjCTypeEncoding") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3169:25 +// from clang-c/Index.h:3444:25 makeExtern< CXString (*)(CXType) , clang_Type_getObjCEncoding , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getObjCEncoding","clang_Type_getObjCEncoding") ->args({"type"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3174:25 +// from clang-c/Index.h:3449:25 makeExtern< CXString (*)(CXTypeKind) , clang_getTypeKindSpelling , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getTypeKindSpelling","clang_getTypeKindSpelling") ->args({"K"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3181:35 +// from clang-c/Index.h:3456:35 makeExtern< CXCallingConv (*)(CXType) , clang_getFunctionTypeCallingConv , SimNode_ExtFuncCall >(lib,"clang_getFunctionTypeCallingConv","clang_getFunctionTypeCallingConv") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3188:23 +// from clang-c/Index.h:3463:23 makeExtern< CXType (*)(CXType) , clang_getResultType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getResultType","clang_getResultType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3196:20 +// from clang-c/Index.h:3471:20 makeExtern< int (*)(CXType) , clang_getExceptionSpecificationType , SimNode_ExtFuncCall >(lib,"clang_getExceptionSpecificationType","clang_getExceptionSpecificationType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3204:20 +// from clang-c/Index.h:3479:20 makeExtern< int (*)(CXType) , clang_getNumArgTypes , SimNode_ExtFuncCall >(lib,"clang_getNumArgTypes","clang_getNumArgTypes") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3212:23 +// from clang-c/Index.h:3487:23 makeExtern< CXType (*)(CXType,unsigned int) , clang_getArgType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getArgType","clang_getArgType") ->args({"T","i"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3219:23 +// from clang-c/Index.h:3494:23 makeExtern< CXType (*)(CXType) , clang_Type_getObjCObjectBaseType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getObjCObjectBaseType","clang_Type_getObjCObjectBaseType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3226:25 +// from clang-c/Index.h:3501:25 makeExtern< unsigned int (*)(CXType) , clang_Type_getNumObjCProtocolRefs , SimNode_ExtFuncCall >(lib,"clang_Type_getNumObjCProtocolRefs","clang_Type_getNumObjCProtocolRefs") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3234:25 - makeExtern< CXCursor (*)(CXType,unsigned int) , clang_Type_getObjCProtocolDecl , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getObjCProtocolDecl","clang_Type_getObjCProtocolDecl") - ->args({"T","i"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3241:25 - makeExtern< unsigned int (*)(CXType) , clang_Type_getNumObjCTypeArgs , SimNode_ExtFuncCall >(lib,"clang_Type_getNumObjCTypeArgs","clang_Type_getNumObjCTypeArgs") - ->args({"T"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3249:23 - makeExtern< CXType (*)(CXType,unsigned int) , clang_Type_getObjCTypeArg , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getObjCTypeArg","clang_Type_getObjCTypeArg") - ->args({"T","i"}) - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.func_9.cpp b/modules/dasClangBind/src/dasClangBind.func_9.cpp index 6e5913cabd..14e4e21b52 100644 --- a/modules/dasClangBind/src/dasClangBind.func_9.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_9.cpp @@ -12,86 +12,86 @@ namespace das { #include "dasClangBind.func.aot.decl.inc" void Module_dasClangBind::initFunctions_9() { -// from clang-c/Index.h:3254:25 +// from clang-c/Index.h:3509:25 + makeExtern< CXCursor (*)(CXType,unsigned int) , clang_Type_getObjCProtocolDecl , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getObjCProtocolDecl","clang_Type_getObjCProtocolDecl") + ->args({"T","i"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3516:25 + makeExtern< unsigned int (*)(CXType) , clang_Type_getNumObjCTypeArgs , SimNode_ExtFuncCall >(lib,"clang_Type_getNumObjCTypeArgs","clang_Type_getNumObjCTypeArgs") + ->args({"T"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3524:23 + makeExtern< CXType (*)(CXType,unsigned int) , clang_Type_getObjCTypeArg , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getObjCTypeArg","clang_Type_getObjCTypeArg") + ->args({"T","i"}) + ->addToModule(*this, SideEffects::worstDefault); +// from clang-c/Index.h:3529:25 makeExtern< unsigned int (*)(CXType) , clang_isFunctionTypeVariadic , SimNode_ExtFuncCall >(lib,"clang_isFunctionTypeVariadic","clang_isFunctionTypeVariadic") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3261:23 +// from clang-c/Index.h:3536:23 makeExtern< CXType (*)(CXCursor) , clang_getCursorResultType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getCursorResultType","clang_getCursorResultType") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3270:20 +// from clang-c/Index.h:3545:20 makeExtern< int (*)(CXCursor) , clang_getCursorExceptionSpecificationType , SimNode_ExtFuncCall >(lib,"clang_getCursorExceptionSpecificationType","clang_getCursorExceptionSpecificationType") ->args({"C"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3276:25 +// from clang-c/Index.h:3551:25 makeExtern< unsigned int (*)(CXType) , clang_isPODType , SimNode_ExtFuncCall >(lib,"clang_isPODType","clang_isPODType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3284:23 +// from clang-c/Index.h:3559:23 makeExtern< CXType (*)(CXType) , clang_getElementType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getElementType","clang_getElementType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3292:26 +// from clang-c/Index.h:3567:26 makeExtern< long long (*)(CXType) , clang_getNumElements , SimNode_ExtFuncCall >(lib,"clang_getNumElements","clang_getNumElements") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3299:23 +// from clang-c/Index.h:3574:23 makeExtern< CXType (*)(CXType) , clang_getArrayElementType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_getArrayElementType","clang_getArrayElementType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3306:26 +// from clang-c/Index.h:3581:26 makeExtern< long long (*)(CXType) , clang_getArraySize , SimNode_ExtFuncCall >(lib,"clang_getArraySize","clang_getArraySize") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3313:23 +// from clang-c/Index.h:3588:23 makeExtern< CXType (*)(CXType) , clang_Type_getNamedType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getNamedType","clang_Type_getNamedType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3323:25 +// from clang-c/Index.h:3598:25 makeExtern< unsigned int (*)(CXType) , clang_Type_isTransparentTagTypedef , SimNode_ExtFuncCall >(lib,"clang_Type_isTransparentTagTypedef","clang_Type_isTransparentTagTypedef") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3358:43 +// from clang-c/Index.h:3633:43 makeExtern< CXTypeNullabilityKind (*)(CXType) , clang_Type_getNullability , SimNode_ExtFuncCall >(lib,"clang_Type_getNullability","clang_Type_getNullability") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3407:26 +// from clang-c/Index.h:3682:26 makeExtern< long long (*)(CXType) , clang_Type_getAlignOf , SimNode_ExtFuncCall >(lib,"clang_Type_getAlignOf","clang_Type_getAlignOf") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3414:23 +// from clang-c/Index.h:3689:23 makeExtern< CXType (*)(CXType) , clang_Type_getClassType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getClassType","clang_Type_getClassType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3425:26 +// from clang-c/Index.h:3700:26 makeExtern< long long (*)(CXType) , clang_Type_getSizeOf , SimNode_ExtFuncCall >(lib,"clang_Type_getSizeOf","clang_Type_getSizeOf") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3440:26 +// from clang-c/Index.h:3715:26 makeExtern< long long (*)(CXType,const char *) , clang_Type_getOffsetOf , SimNode_ExtFuncCall >(lib,"clang_Type_getOffsetOf","clang_Type_getOffsetOf") ->args({"T","S"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3447:23 +// from clang-c/Index.h:3722:23 makeExtern< CXType (*)(CXType) , clang_Type_getModifiedType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getModifiedType","clang_Type_getModifiedType") ->args({"T"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3454:23 +// from clang-c/Index.h:3729:23 makeExtern< CXType (*)(CXType) , clang_Type_getValueType , SimNode_ExtFuncCallAndCopyOrMove >(lib,"clang_Type_getValueType","clang_Type_getValueType") ->args({"CT"}) ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3469:26 - makeExtern< long long (*)(CXCursor) , clang_Cursor_getOffsetOfField , SimNode_ExtFuncCall >(lib,"clang_Cursor_getOffsetOfField","clang_Cursor_getOffsetOfField") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3475:25 - makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isAnonymous , SimNode_ExtFuncCall >(lib,"clang_Cursor_isAnonymous","clang_Cursor_isAnonymous") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); -// from clang-c/Index.h:3481:25 - makeExtern< unsigned int (*)(CXCursor) , clang_Cursor_isAnonymousRecordDecl , SimNode_ExtFuncCall >(lib,"clang_Cursor_isAnonymousRecordDecl","clang_Cursor_isAnonymousRecordDecl") - ->args({"C"}) - ->addToModule(*this, SideEffects::worstDefault); } } diff --git a/modules/dasClangBind/src/dasClangBind.struct.add.inc b/modules/dasClangBind/src/dasClangBind.struct.add.inc index e524154b9f..4485eefd10 100644 --- a/modules/dasClangBind/src/dasClangBind.struct.add.inc +++ b/modules/dasClangBind/src/dasClangBind.struct.add.inc @@ -17,6 +17,8 @@ auto ann_CXUnsavedFile = new CXUnsavedFile_GeneratedAnnotation(lib); addAnnotation(ann_CXUnsavedFile); auto ann_CXVersion = new CXVersion_GeneratedAnnotation(lib); addAnnotation(ann_CXVersion); +auto ann_CXIndexOptions = new CXIndexOptions_GeneratedAnnotation(lib); +addAnnotation(ann_CXIndexOptions); auto ann_CXTUResourceUsageEntry = new CXTUResourceUsageEntry_GeneratedAnnotation(lib); addAnnotation(ann_CXTUResourceUsageEntry); auto ann_CXTUResourceUsage = new CXTUResourceUsage_GeneratedAnnotation(lib); diff --git a/modules/dasClangBind/src/dasClangBind.struct.cast.inc b/modules/dasClangBind/src/dasClangBind.struct.cast.inc index c76f5448e9..0f39afaa05 100644 --- a/modules/dasClangBind/src/dasClangBind.struct.cast.inc +++ b/modules/dasClangBind/src/dasClangBind.struct.cast.inc @@ -49,6 +49,12 @@ template <> struct cast_arg { return * cast::to(res); } }; +template <> struct cast_arg { + static __forceinline const CXIndexOptions & to ( Context & ctx, SimNode * node ) { + vec4f res = node->eval(ctx); + return * cast::to(res); + } +}; template <> struct cast_arg { static __forceinline const CXTUResourceUsageEntry & to ( Context & ctx, SimNode * node ) { vec4f res = node->eval(ctx); diff --git a/modules/dasClangBind/src/dasClangBind.struct.class.inc b/modules/dasClangBind/src/dasClangBind.struct.class.inc index 77f07f05dc..bdc779fe8c 100644 --- a/modules/dasClangBind/src/dasClangBind.struct.class.inc +++ b/modules/dasClangBind/src/dasClangBind.struct.class.inc @@ -51,7 +51,7 @@ struct CXSourceRange_GeneratedAnnotation : ManagedStructureAnnotation { CXSourceRangeList_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXSourceRangeList", ml, "CXSourceRangeList") { } @@ -61,7 +61,7 @@ struct CXSourceRangeList_GeneratedAnnotation : ManagedStructureAnnotation { CXUnsavedFile_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXUnsavedFile", ml, "CXUnsavedFile") { } @@ -72,7 +72,7 @@ struct CXUnsavedFile_GeneratedAnnotation : ManagedStructureAnnotation { CXVersion_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXVersion", ml, "CXVersion") { } @@ -83,7 +83,20 @@ struct CXVersion_GeneratedAnnotation : ManagedStructureAnnotation { } }; -// from clang-c/Index.h:971:16 +// from clang-c/Index.h:353:16 +struct CXIndexOptions_GeneratedAnnotation : ManagedStructureAnnotation { + CXIndexOptions_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIndexOptions", ml, "CXIndexOptions") { + } + void init () { + addField("Size","Size"); + addField("ThreadBackgroundPriorityForIndexing","ThreadBackgroundPriorityForIndexing"); + addField("ThreadBackgroundPriorityForEditing","ThreadBackgroundPriorityForEditing"); + addField("PreambleStoragePath","PreambleStoragePath"); + addField("InvocationEmissionPath","InvocationEmissionPath"); + } +}; + +// from clang-c/Index.h:1119:16 struct CXTUResourceUsageEntry_GeneratedAnnotation : ManagedStructureAnnotation { CXTUResourceUsageEntry_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXTUResourceUsageEntry", ml, "CXTUResourceUsageEntry") { } @@ -93,7 +106,7 @@ struct CXTUResourceUsageEntry_GeneratedAnnotation : ManagedStructureAnnotation { CXTUResourceUsage_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXTUResourceUsage", ml, "CXTUResourceUsage") { } @@ -104,7 +117,7 @@ struct CXTUResourceUsage_GeneratedAnnotation : ManagedStructureAnnotation { CXCursor_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXCursor", ml, "CXCursor") { } @@ -115,7 +128,7 @@ struct CXCursor_GeneratedAnnotation : ManagedStructureAnnotation { } }; -// from clang-c/Index.h:2288:16 +// from clang-c/Index.h:2522:16 struct CXPlatformAvailability_GeneratedAnnotation : ManagedStructureAnnotation { CXPlatformAvailability_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXPlatformAvailability", ml, "CXPlatformAvailability") { } @@ -129,7 +142,7 @@ struct CXPlatformAvailability_GeneratedAnnotation : ManagedStructureAnnotation { CXType_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXType", ml, "CXType") { } @@ -139,7 +152,7 @@ struct CXType_GeneratedAnnotation : ManagedStructureAnnotation { } }; -// from clang-c/Index.h:4506:9 +// from clang-c/Index.h:5029:9 struct CXToken_GeneratedAnnotation : ManagedStructureAnnotation { CXToken_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXToken", ml, "CXToken") { } @@ -149,7 +162,7 @@ struct CXToken_GeneratedAnnotation : ManagedStructureAnnotation { } }; -// from clang-c/Index.h:4664:9 +// from clang-c/Index.h:5187:9 struct CXCompletionResult_GeneratedAnnotation : ManagedStructureAnnotation { CXCompletionResult_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXCompletionResult", ml, "CXCompletionResult") { } @@ -159,7 +172,7 @@ struct CXCompletionResult_GeneratedAnnotation : ManagedStructureAnnotation { CXCodeCompleteResults_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXCodeCompleteResults", ml, "CXCodeCompleteResults") { } @@ -169,7 +182,7 @@ struct CXCodeCompleteResults_GeneratedAnnotation : ManagedStructureAnnotation { CXCursorAndRangeVisitor_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXCursorAndRangeVisitor", ml, "CXCursorAndRangeVisitor") { } @@ -178,7 +191,7 @@ struct CXCursorAndRangeVisitor_GeneratedAnnotation : ManagedStructureAnnotation< } }; -// from clang-c/Index.h:5720:9 +// from clang-c/Index.h:6181:9 struct CXIdxLoc_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxLoc_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxLoc", ml, "CXIdxLoc") { } @@ -188,7 +201,7 @@ struct CXIdxLoc_GeneratedAnnotation : ManagedStructureAnnotation { } }; -// from clang-c/Index.h:5728:9 +// from clang-c/Index.h:6189:9 struct CXIdxIncludedFileInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxIncludedFileInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxIncludedFileInfo", ml, "CXIdxIncludedFileInfo") { } @@ -202,7 +215,7 @@ struct CXIdxIncludedFileInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxImportedASTFileInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxImportedASTFileInfo", ml, "CXIdxImportedASTFileInfo") { } @@ -214,7 +227,7 @@ struct CXIdxImportedASTFileInfo_GeneratedAnnotation : ManagedStructureAnnotation } }; -// from clang-c/Index.h:5842:9 +// from clang-c/Index.h:6303:9 struct CXIdxAttrInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxAttrInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxAttrInfo", ml, "CXIdxAttrInfo") { } @@ -225,7 +238,7 @@ struct CXIdxAttrInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxEntityInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxEntityInfo", ml, "CXIdxEntityInfo") { } @@ -241,7 +254,7 @@ struct CXIdxEntityInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxContainerInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxContainerInfo", ml, "CXIdxContainerInfo") { } @@ -250,7 +263,7 @@ struct CXIdxContainerInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxIBOutletCollectionAttrInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxIBOutletCollectionAttrInfo", ml, "CXIdxIBOutletCollectionAttrInfo") { } @@ -262,7 +275,7 @@ struct CXIdxIBOutletCollectionAttrInfo_GeneratedAnnotation : ManagedStructureAnn } }; -// from clang-c/Index.h:5872:9 +// from clang-c/Index.h:6333:9 struct CXIdxDeclInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxDeclInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxDeclInfo", ml, "CXIdxDeclInfo") { } @@ -283,7 +296,7 @@ struct CXIdxDeclInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxObjCContainerDeclInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxObjCContainerDeclInfo", ml, "CXIdxObjCContainerDeclInfo") { } @@ -293,7 +306,7 @@ struct CXIdxObjCContainerDeclInfo_GeneratedAnnotation : ManagedStructureAnnotati } }; -// from clang-c/Index.h:5909:9 +// from clang-c/Index.h:6370:9 struct CXIdxBaseClassInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxBaseClassInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxBaseClassInfo", ml, "CXIdxBaseClassInfo") { } @@ -304,7 +317,7 @@ struct CXIdxBaseClassInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxObjCProtocolRefInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxObjCProtocolRefInfo", ml, "CXIdxObjCProtocolRefInfo") { } @@ -315,7 +328,7 @@ struct CXIdxObjCProtocolRefInfo_GeneratedAnnotation : ManagedStructureAnnotation } }; -// from clang-c/Index.h:5921:9 +// from clang-c/Index.h:6382:9 struct CXIdxObjCProtocolRefListInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxObjCProtocolRefListInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxObjCProtocolRefListInfo", ml, "CXIdxObjCProtocolRefListInfo") { } @@ -325,7 +338,7 @@ struct CXIdxObjCProtocolRefListInfo_GeneratedAnnotation : ManagedStructureAnnota } }; -// from clang-c/Index.h:5926:9 +// from clang-c/Index.h:6387:9 struct CXIdxObjCInterfaceDeclInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxObjCInterfaceDeclInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxObjCInterfaceDeclInfo", ml, "CXIdxObjCInterfaceDeclInfo") { } @@ -336,7 +349,7 @@ struct CXIdxObjCInterfaceDeclInfo_GeneratedAnnotation : ManagedStructureAnnotati } }; -// from clang-c/Index.h:5932:9 +// from clang-c/Index.h:6393:9 struct CXIdxObjCCategoryDeclInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxObjCCategoryDeclInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxObjCCategoryDeclInfo", ml, "CXIdxObjCCategoryDeclInfo") { } @@ -349,7 +362,7 @@ struct CXIdxObjCCategoryDeclInfo_GeneratedAnnotation : ManagedStructureAnnotatio } }; -// from clang-c/Index.h:5940:9 +// from clang-c/Index.h:6401:9 struct CXIdxObjCPropertyDeclInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxObjCPropertyDeclInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxObjCPropertyDeclInfo", ml, "CXIdxObjCPropertyDeclInfo") { } @@ -360,7 +373,7 @@ struct CXIdxObjCPropertyDeclInfo_GeneratedAnnotation : ManagedStructureAnnotatio } }; -// from clang-c/Index.h:5946:9 +// from clang-c/Index.h:6407:9 struct CXIdxCXXClassDeclInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxCXXClassDeclInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxCXXClassDeclInfo", ml, "CXIdxCXXClassDeclInfo") { } @@ -371,7 +384,7 @@ struct CXIdxCXXClassDeclInfo_GeneratedAnnotation : ManagedStructureAnnotation { CXIdxEntityRefInfo_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("CXIdxEntityRefInfo", ml, "CXIdxEntityRefInfo") { } @@ -386,7 +399,7 @@ struct CXIdxEntityRefInfo_GeneratedAnnotation : ManagedStructureAnnotation { IndexerCallbacks_GeneratedAnnotation(ModuleLibrary & ml) : ManagedStructureAnnotation ("IndexerCallbacks", ml, "IndexerCallbacks") { } diff --git a/modules/dasClangBind/src/dasClangBind.struct.decl.inc b/modules/dasClangBind/src/dasClangBind.struct.decl.inc index 93b410f76c..9842c875a0 100644 --- a/modules/dasClangBind/src/dasClangBind.struct.decl.inc +++ b/modules/dasClangBind/src/dasClangBind.struct.decl.inc @@ -11,16 +11,19 @@ MAKE_EXTERNAL_TYPE_FACTORY(CXTargetInfoImpl,CXTargetInfoImpl); MAKE_EXTERNAL_TYPE_FACTORY(CXTranslationUnitImpl,CXTranslationUnitImpl); MAKE_EXTERNAL_TYPE_FACTORY(CXUnsavedFile,CXUnsavedFile); MAKE_EXTERNAL_TYPE_FACTORY(CXVersion,CXVersion); +MAKE_EXTERNAL_TYPE_FACTORY(CXIndexOptions,CXIndexOptions); MAKE_EXTERNAL_TYPE_FACTORY(CXTUResourceUsageEntry,CXTUResourceUsageEntry); MAKE_EXTERNAL_TYPE_FACTORY(CXTUResourceUsage,CXTUResourceUsage); MAKE_EXTERNAL_TYPE_FACTORY(CXCursor,CXCursor); MAKE_EXTERNAL_TYPE_FACTORY(CXPlatformAvailability,CXPlatformAvailability); MAKE_EXTERNAL_TYPE_FACTORY(CXCursorSetImpl,CXCursorSetImpl); MAKE_EXTERNAL_TYPE_FACTORY(CXType,CXType); +MAKE_EXTERNAL_TYPE_FACTORY(_CXChildVisitResult,_CXChildVisitResult); MAKE_EXTERNAL_TYPE_FACTORY(CXToken,CXToken); MAKE_EXTERNAL_TYPE_FACTORY(CXCompletionResult,CXCompletionResult); MAKE_EXTERNAL_TYPE_FACTORY(CXCodeCompleteResults,CXCodeCompleteResults); MAKE_EXTERNAL_TYPE_FACTORY(CXCursorAndRangeVisitor,CXCursorAndRangeVisitor); +MAKE_EXTERNAL_TYPE_FACTORY(_CXCursorAndRangeVisitorBlock,_CXCursorAndRangeVisitorBlock); MAKE_EXTERNAL_TYPE_FACTORY(CXIdxLoc,CXIdxLoc); MAKE_EXTERNAL_TYPE_FACTORY(CXIdxIncludedFileInfo,CXIdxIncludedFileInfo); MAKE_EXTERNAL_TYPE_FACTORY(CXIdxImportedASTFileInfo,CXIdxImportedASTFileInfo); diff --git a/modules/dasClangBind/src/dasClangBind.struct.impl.inc b/modules/dasClangBind/src/dasClangBind.struct.impl.inc index 73b17408de..92185fae6d 100644 --- a/modules/dasClangBind/src/dasClangBind.struct.impl.inc +++ b/modules/dasClangBind/src/dasClangBind.struct.impl.inc @@ -11,16 +11,19 @@ IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXTargetInfoImpl,CXTargetInfoImpl); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXTranslationUnitImpl,CXTranslationUnitImpl); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXUnsavedFile,CXUnsavedFile); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXVersion,CXVersion); +IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXIndexOptions,CXIndexOptions); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXTUResourceUsageEntry,CXTUResourceUsageEntry); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXTUResourceUsage,CXTUResourceUsage); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXCursor,CXCursor); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXPlatformAvailability,CXPlatformAvailability); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXCursorSetImpl,CXCursorSetImpl); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXType,CXType); +IMPLEMENT_EXTERNAL_TYPE_FACTORY(_CXChildVisitResult,_CXChildVisitResult); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXToken,CXToken); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXCompletionResult,CXCompletionResult); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXCodeCompleteResults,CXCodeCompleteResults); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXCursorAndRangeVisitor,CXCursorAndRangeVisitor); +IMPLEMENT_EXTERNAL_TYPE_FACTORY(_CXCursorAndRangeVisitorBlock,_CXCursorAndRangeVisitorBlock); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXIdxLoc,CXIdxLoc); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXIdxIncludedFileInfo,CXIdxIncludedFileInfo); IMPLEMENT_EXTERNAL_TYPE_FACTORY(CXIdxImportedASTFileInfo,CXIdxImportedASTFileInfo); diff --git a/modules/dasClangBind/src/dasClangBind.struct.postadd.inc b/modules/dasClangBind/src/dasClangBind.struct.postadd.inc index bf4c54aa2b..163ae6ae65 100644 --- a/modules/dasClangBind/src/dasClangBind.struct.postadd.inc +++ b/modules/dasClangBind/src/dasClangBind.struct.postadd.inc @@ -9,6 +9,7 @@ initRecAnnotation(ann_CXSourceRange,lib); initRecAnnotation(ann_CXSourceRangeList,lib); initRecAnnotation(ann_CXUnsavedFile,lib); initRecAnnotation(ann_CXVersion,lib); +initRecAnnotation(ann_CXIndexOptions,lib); initRecAnnotation(ann_CXTUResourceUsageEntry,lib); initRecAnnotation(ann_CXTUResourceUsage,lib); initRecAnnotation(ann_CXCursor,lib); From 5399dbb5792cee7780ceda880304b385dd752511 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 20:14:34 -0700 Subject: [PATCH 02/14] dasClangBind: fix CI find_package + guard install() on empty DLL list Two fixes for the failing CI on #2846: 1. linux extended_checks: find_package(Clang 22.1) couldn't find a compatible ClangConfig.cmake because Ubuntu noble's default cmake search path only finds /usr/lib/cmake/clang-{16,17,18}/. The apt.llvm.org noble-22 install puts ClangConfig.cmake under /usr/lib/llvm-22/lib/cmake/clang/. Pass PATH_TO_LIBCLANG=/usr/lib/llvm-22 so find_package's PATHS argument lands the search there. 2. modules/dasClangBind/CMakeLists.txt: guard the install(FILES ...) for the libclang runtime DLLs with the same IF(_DAS_CLANG_BIND_DLLS) predicate that wraps the POST_BUILD copy. Without it, install(FILES "" DESTINATION ...) would error at configure time when the DLL set can't be resolved, defeating the soft-warning intent. (Per Copilot review comment on #2846.) Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/extended_checks.yml | 1 + modules/dasClangBind/CMakeLists.txt | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/extended_checks.yml b/.github/workflows/extended_checks.yml index 8cc627858b..0e0491ef3b 100644 --- a/.github/workflows/extended_checks.yml +++ b/.github/workflows/extended_checks.yml @@ -139,6 +139,7 @@ jobs: -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_OSX_ARCHITECTURES="${{ matrix.architecture_string }}" \ -DDAS_CLANG_BIND_DISABLED=OFF \ + -DPATH_TO_LIBCLANG=/usr/lib/llvm-22 \ -DDAS_GLFW_DISABLED=OFF \ -G "${{ matrix.cmake_generator }}" $ACTIVE_MODULES cmake --build ./build --config Release --target daslang daslang_static diff --git a/modules/dasClangBind/CMakeLists.txt b/modules/dasClangBind/CMakeLists.txt index 5453f801e9..a33f5e9698 100644 --- a/modules/dasClangBind/CMakeLists.txt +++ b/modules/dasClangBind/CMakeLists.txt @@ -124,9 +124,14 @@ IF(WIN32) ELSE() MESSAGE(WARNING "dasClangBind: no libclang DLLs found under ${LLVM_INSTALL_PREFIX}/bin — dasModuleClangBind.shared_module dlopen will fail at runtime.") ENDIF() - install(FILES ${_DAS_CLANG_BIND_DLLS} - DESTINATION ${DAS_INSTALL_BINDIR} - ) + # Guard install() with the same predicate as POST_BUILD — + # install(FILES "" DESTINATION ...) errors at configure time, which + # would defeat the soft warning above. + IF(_DAS_CLANG_BIND_DLLS) + install(FILES ${_DAS_CLANG_BIND_DLLS} + DESTINATION ${DAS_INSTALL_BINDIR} + ) + ENDIF() install(FILES ${PROJECT_SOURCE_DIR}/modules/dasClangBind/LICENSE.TXT DESTINATION ${DAS_INSTALL_DOCDIR} RENAME LLVM.LICENSE) ENDIF() From a7eed551c823002db59001f7446e34e0da7b74b3 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 20:21:56 -0700 Subject: [PATCH 03/14] sqlite_linq: expression keys in _group_by + PR #2845 review fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two improvements this PR: 1. Expression-key support in `_group_by` (Session 2 from the post-PR #2843 plan). `_group_by(_.Price % 100)` (and tuples mixing field keys with expression keys) now lower to `GROUP BY ((price) % (100))`. The rendered fragment is reused verbatim in SELECT (`K = _._0`) and ORDER BY (`_order_by(_._0)`) positions, so the SQL stays a single source of truth across all three clauses. Mechanism: `collect_group_keys` calls `pred_to_sql` with a new `q.inlineConstants` mode so the bound `_.X` field refs render as columns and `ExprConst*` literals (ints, floats, strings, bools) inline as SQL literals instead of `?` placeholders. The fragment carries no binds, which lets us re-use it at multiple SQL positions without bind-position bookkeeping. Runtime values (`_.Col - capturedVar`) reject loudly with a precise diagnostic — same one exercised by `failed_sql_macro` case 25. Order swap in the `_group_by` peel: recurse into the source first so `q.rootType` is set before `pred_to_sql` runs on the key (the existing field-key path didn't need this since translation was deferred to emission; expression keys do). Backfills `benchmarks/sql/groupby_select_sum.das` m1 lane. The bench uses the explicit-inner-select shape inside SUM (`_._1 |> select($(c : Car) => c.price) |> sum()`) — m3f/m4 keep their splice-friendly bare-`sum` form; both emit equivalent SQL/compute. results.md refreshed per the living-doc policy, "Notes on missing lanes" bullet for `groupby_select_sum SQL` removed. 2. Two PR #2845 review fixes (Copilot, both real): - `peel_count_terminal`'s predicate-overload error mis-named the terminal: it said `_count(predicate)` and suggested `_count()`, but in `_sql` chains the bare `count()` / `long_count()` linq functions are the actual terminals. Drop the underscores in both the offending name and the suggested fix. - `try_peel_distinct_by_field` pinned receiver to `ExprVar` but didn't verify the var IS the lambda's bound parameter. So `_distinct_by(capturedRow.Brand) |> count()` would silently emit `COUNT(DISTINCT "Brand")` against the SQL source — wrong result, no diagnostic. Now extracts the lambda's arg name from `keyLambda._block.arguments[0]` and rejects when receiver name differs (`failed_sql_macro` case 24). Test surface: - `tests/dasSQLITE/test_32_group_by_expression_keys.das` — 6 tests covering SQL emission + runtime for single expression keys, multi-key tuples mixing field + expression keys, ORDER BY on the group key, and aggregate-over-expression-key projection. - `failed_sql_macro.das` cases 24 + 25 added (50503:23). Validation: 796/796 dasSQLITE (interp + AOT), 1390/1390 linq, 0 JIT bench failures, lint clean. Co-Authored-By: Claude Opus 4.7 --- benchmarks/sql/groupby_select_sum.das | 35 ++++- benchmarks/sql/results.md | 135 ++++++++--------- modules/dasSQLITE/daslib/sqlite_linq.das | 138 ++++++++++++++---- tests/dasSQLITE/failed_sql_macro.das | 15 +- .../test_32_group_by_expression_keys.das | 95 ++++++++++++ 5 files changed, 307 insertions(+), 111 deletions(-) create mode 100644 tests/dasSQLITE/test_32_group_by_expression_keys.das diff --git a/benchmarks/sql/groupby_select_sum.das b/benchmarks/sql/groupby_select_sum.das index b295d303da..adaf991df7 100644 --- a/benchmarks/sql/groupby_select_sum.das +++ b/benchmarks/sql/groupby_select_sum.das @@ -3,14 +3,28 @@ options persistent_heap require _common public -// _select(c => c.price) |> _group_by(price % 100) |> _select((K=key, S=sum)). -// SQL omitted: sqlite_linq's `_group_by` requires `_.Field` or a tuple of `_.Field`s. -// The expression key (`_ % 100`) is rejected. [Follow-up TODO 2026-05-23: error[50503] -// `_sql: _group_by: key must be \`_.Field\` or a tuple of \`_.Field\`s; got: (_ % 100)` -// — would need expression-key support in sqlite_linq lowering.] -// Array vs Decs is the headline comparison. Splice (PR-B) fuses the upstream Car→price -// projection into an intermediate var bind so the key + sum acc reference the projected -// int (no per-element Car re-access). +// _group_by(price % 100) |> _select((K = key, S = sum(price))). +// SQL: `SELECT (price % 100), SUM(price) FROM Cars GROUP BY (price % 100)` — exercises +// sqlite_linq's expression-key support in _group_by (PR S2). The m1 form uses +// `_group_by(_.price % 100)` + explicit inner select inside SUM (the shape the +// grouped-aggregate dispatch recognises); the m3f/m4 forms keep their splice-friendly +// `_select(_.price) |> _group_by(_ % 100) |> _select((K, S=_._1 |> sum()))` pattern, +// which fuses the upstream Car→price projection into an intermediate var bind. + +def run_m1(b : B?; n : int) { + with_sqlite(":memory:") $(db) { + fixture_db(db, n) + b |> run("m1_sql/{n}", n) { + let groups <- _sql(db |> select_from(type) + |> _group_by(_.price % 100) + |> _select((K = _._0, S = _._1 |> select($(c : Car) => c.price) |> sum()))) + b |> accept(groups) + if (empty(groups)) { + b->failNow() + } + } + } +} def run_m3f(b : B?; n : int) { let arr <- fixture_array(n) @@ -42,6 +56,11 @@ def run_m4(b : B?; n : int) { } } +[benchmark] +def groupby_select_sum_m1(b : B?) { + run_m1(b, 100000) +} + [benchmark] def groupby_select_sum_m3f(b : B?) { run_m3f(b, 100000) diff --git a/benchmarks/sql/results.md b/benchmarks/sql/results.md index c1579e3031..a848f0286e 100644 --- a/benchmarks/sql/results.md +++ b/benchmarks/sql/results.md @@ -1,6 +1,6 @@ # Benchmarks — SQL / Array / Decs comparison -Generated 2026-05-23 from master `30021f183`. Fixture size: n = 100 000 +Generated 2026-05-23 from master `31e4339a8`. Fixture size: n = 100 000 (cars), 100 dealers, 5 brands. Each row is one bench family in `benchmarks/sql/`; columns are nanoseconds per logical operation. `—` marks an intentionally absent lane — see "Notes on missing lanes" @@ -26,57 +26,57 @@ before the timer resolution can measure them — they should be read as | Benchmark | SQL (m1) | Array (m3f) | Decs (m4) | Decs vs Array | |---|---:|---:|---:|---:| -| `aggregate_match` | 34.7 | 5.9 | 5.8 | 0.98× | -| `all_match` | 27.6 | 3.5 | 3.4 | 0.97× | +| `aggregate_match` | 34.4 | 6.0 | 5.9 | 0.98× | +| `all_match` | 27.6 | 3.7 | 3.5 | 0.95× | | `any_match` | 0.00 | 0.00 | 0.00 | — | -| `average_aggregate` | 29.9 | 5.8 | 8.7 | 1.50× | -| `bare_order_where` | 274.4 | 117.6 | 125.5 | 1.07× | -| `chained_where` | 36.2 | 6.7 | 6.6 | 0.99× | +| `average_aggregate` | 29.5 | 5.9 | 8.8 | 1.49× | +| `bare_order_where` | 275.1 | 118.3 | 126.0 | 1.07× | +| `chained_where` | 36.0 | 6.7 | 6.6 | 0.99× | | `contains_match` | 0.00 | 2.2 | 1.4 | 0.64× | -| `count_aggregate` | 29.4 | 4.1 | 4.1 | 1.00× | -| `distinct_by_count` | 40.5 | 15.6 | 16.0 | 1.03× | -| `distinct_count` | 41.1 | 15.9 | 15.8 | 0.99× | +| `count_aggregate` | 29.7 | 4.1 | 4.1 | 1.00× | +| `distinct_by_count` | 41.0 | 15.6 | 15.9 | 1.02× | +| `distinct_count` | 41.2 | 15.9 | 15.8 | 0.99× | | `distinct_take` | 0.00 | 0.00 | 0.00 | — | | `element_at_match` | 0.00 | 0.00 | 0.00 | — | | `first_match` | 0.00 | 0.00 | 0.00 | — | | `first_or_default_match` | 0.00 | 0.00 | 0.00 | — | -| `groupby_average` | 170.0 | 30.1 | 30.1 | 1.00× | -| `groupby_count` | 140.2 | 19.2 | 19.2 | 1.00× | +| `groupby_average` | 170.6 | 29.9 | 30.0 | 1.00× | +| `groupby_count` | 140.3 | 19.2 | 19.3 | 1.01× | | `groupby_first` | — | 18.4 | 19.1 | 1.04× | -| `groupby_having_count` | 140.4 | 19.5 | 19.2 | 0.98× | -| `groupby_having_hidden_sum` | 173.9 | 24.3 | 24.0 | 0.99× | -| `groupby_max` | 176.4 | 24.8 | 25.9 | 1.04× | -| `groupby_min` | 172.1 | 24.8 | 25.2 | 1.02× | -| `groupby_multi_reducer` | 188.7 | 32.3 | 32.3 | 1.00× | -| `groupby_select_sum` | — | 36.5 | 36.0 | 0.99× | -| `groupby_sum` | 173.7 | 18.6 | 18.6 | 1.00× | -| `groupby_where_count` | 74.8 | 14.6 | 14.8 | 1.01× | +| `groupby_having_count` | 139.9 | 19.1 | 19.2 | 1.01× | +| `groupby_having_hidden_sum` | 174.7 | 24.3 | 24.0 | 0.99× | +| `groupby_max` | 173.4 | 24.9 | 25.2 | 1.01× | +| `groupby_min` | 172.4 | 24.9 | 25.2 | 1.01× | +| `groupby_multi_reducer` | 188.8 | 32.2 | 32.3 | 1.00× | +| `groupby_select_sum` | 200.4 | 36.5 | 36.3 | 0.99× | +| `groupby_sum` | 169.3 | 18.6 | 18.6 | 1.00× | +| `groupby_where_count` | 75.6 | 14.6 | 14.8 | 1.01× | | `groupby_where_sum` | 85.9 | 14.1 | 14.6 | 1.04× | -| `indexed_lookup` | 1454.2 | 202887.8 | 479.4 | 0.00× | -| `join_count` | 38.1 | 127.5 | — | — | -| `last_match` | 0.00 | 6.2 | 14.0 | 2.26× | +| `indexed_lookup` | 1441.6 | 203340.0 | 474.5 | 0.00× | +| `join_count` | 37.9 | 121.3 | — | — | +| `last_match` | 0.00 | 5.8 | 13.8 | 2.38× | | `long_count_aggregate` | 29.4 | 4.2 | 4.0 | 0.95× | -| `max_aggregate` | 30.8 | 6.0 | 6.9 | 1.15× | -| `min_aggregate` | 30.8 | 6.1 | 6.9 | 1.13× | -| `order_take_desc` | 37.9 | 15.8 | 19.9 | 1.26× | +| `max_aggregate` | 30.9 | 6.0 | 6.9 | 1.15× | +| `min_aggregate` | 31.0 | 6.1 | 6.9 | 1.13× | +| `order_take_desc` | 38.2 | 15.8 | 19.9 | 1.26× | | `reverse_take` | 0.10 | 0.00 | 9.2 | — | | `select_count` | 0.10 | 0.00 | 2.2 | — | -| `select_where` | 194.9 | 11.1 | 19.4 | 1.75× | -| `select_where_count` | 32.4 | 5.2 | 7.4 | 1.42× | -| `select_where_order_take` | 36.1 | 12.1 | 15.1 | 1.25× | -| `select_where_sum` | 36.8 | 7.4 | 7.5 | 1.01× | -| `single_match` | 0.00 | 2.9 | 5.4 | 1.86× | +| `select_where` | 196.8 | 11.1 | 19.6 | 1.77× | +| `select_where_count` | 32.6 | 5.2 | 7.4 | 1.42× | +| `select_where_order_take` | 36.5 | 12.2 | 14.9 | 1.22× | +| `select_where_sum` | 36.8 | 7.5 | 7.5 | 1.00× | +| `single_match` | 0.00 | 2.9 | 5.5 | 1.90× | | `skip_take` | 0.50 | 0.10 | 0.20 | 2.00× | | `skip_while_match` | 3.4 | 5.3 | 5.3 | 1.00× | -| `sort_first` | 37.4 | 11.0 | 13.3 | 1.21× | -| `sort_take` | 38.0 | 16.2 | 20.1 | 1.24× | -| `sum_aggregate` | 29.7 | 2.1 | 2.1 | 1.00× | -| `sum_where` | 32.8 | 4.2 | 4.3 | 1.02× | +| `sort_first` | 37.8 | 11.0 | 13.3 | 1.21× | +| `sort_take` | 38.1 | 16.3 | 20.2 | 1.24× | +| `sum_aggregate` | 30.0 | 2.2 | 2.1 | 0.95× | +| `sum_where` | 33.0 | 4.2 | 4.3 | 1.02× | | `take_count` | 3.6 | 0.20 | 0.40 | 2.00× | | `take_count_filtered` | — | 0.20 | 0.20 | 1.00× | | `take_sum_aggregate` | — | 0.10 | 0.10 | 1.00× | -| `take_while_match` | 7.9 | 2.4 | 2.5 | 1.04× | -| `to_array_filter` | 69.9 | 11.7 | 11.7 | 1.00× | +| `take_while_match` | 8.0 | 2.7 | 2.5 | 0.93× | +| `to_array_filter` | 70.0 | 11.6 | 11.7 | 1.01× | | `zip_dot_product` | — | 8.0 | 4.8 | 0.60× | ## JIT @@ -87,53 +87,53 @@ before the timer resolution can measure them — they should be read as | `all_match` | 27.4 | 0.30 | 0.20 | 0.67× | | `any_match` | 0.00 | 0.00 | 0.00 | — | | `average_aggregate` | 30.0 | 1.0 | 3.5 | 3.50× | -| `bare_order_where` | 183.7 | 33.5 | 34.7 | 1.04× | -| `chained_where` | 35.8 | 0.60 | 0.80 | 1.33× | +| `bare_order_where` | 184.2 | 33.5 | 34.8 | 1.04× | +| `chained_where` | 36.2 | 0.60 | 0.80 | 1.33× | | `contains_match` | 0.00 | 0.20 | 0.10 | 0.50× | -| `count_aggregate` | 29.5 | 0.30 | 0.60 | 2.00× | -| `distinct_by_count` | 40.9 | 2.1 | 2.1 | 1.00× | +| `count_aggregate` | 29.4 | 0.30 | 0.60 | 2.00× | +| `distinct_by_count` | 41.0 | 2.1 | 2.1 | 1.00× | | `distinct_count` | 41.1 | 2.1 | 2.1 | 1.00× | | `distinct_take` | 0.00 | 0.00 | 0.00 | — | | `element_at_match` | 0.00 | 0.00 | 0.00 | — | | `first_match` | 0.00 | 0.00 | 0.00 | — | | `first_or_default_match` | 0.00 | 0.00 | 0.00 | — | | `groupby_average` | 170.0 | 2.6 | 2.9 | 1.12× | -| `groupby_count` | 143.0 | 2.3 | 2.5 | 1.09× | +| `groupby_count` | 140.7 | 2.3 | 2.5 | 1.09× | | `groupby_first` | — | 2.2 | 3.1 | 1.41× | -| `groupby_having_count` | 139.6 | 2.3 | 2.5 | 1.09× | -| `groupby_having_hidden_sum` | 173.4 | 2.5 | 2.8 | 1.12× | -| `groupby_max` | 171.5 | 2.4 | 2.7 | 1.13× | -| `groupby_min` | 172.8 | 2.4 | 2.7 | 1.13× | -| `groupby_multi_reducer` | 187.7 | 2.7 | 2.9 | 1.07× | -| `groupby_select_sum` | — | 3.2 | 3.7 | 1.16× | -| `groupby_sum` | 169.2 | 2.4 | 2.7 | 1.13× | +| `groupby_having_count` | 140.5 | 2.3 | 2.5 | 1.09× | +| `groupby_having_hidden_sum` | 174.0 | 2.5 | 2.8 | 1.12× | +| `groupby_max` | 175.1 | 2.4 | 2.7 | 1.13× | +| `groupby_min` | 172.6 | 2.4 | 2.7 | 1.13× | +| `groupby_multi_reducer` | 187.8 | 2.7 | 2.9 | 1.07× | +| `groupby_select_sum` | 198.1 | 3.2 | 3.7 | 1.16× | +| `groupby_sum` | 169.5 | 2.4 | 2.7 | 1.13× | | `groupby_where_count` | 75.0 | 1.7 | 1.8 | 1.06× | -| `groupby_where_sum` | 85.9 | 1.7 | 1.8 | 1.06× | -| `indexed_lookup` | 1228.9 | 34818.1 | 102.7 | 0.00× | -| `join_count` | 38.0 | 35.8 | — | — | +| `groupby_where_sum` | 87.9 | 1.7 | 1.8 | 1.06× | +| `indexed_lookup` | 1238.5 | 35025.4 | 101.7 | 0.00× | +| `join_count` | 37.6 | 35.7 | — | — | | `last_match` | 0.00 | 0.50 | 1.4 | 2.80× | -| `long_count_aggregate` | 29.5 | 0.40 | 0.60 | 1.50× | -| `max_aggregate` | 30.6 | 0.70 | 0.50 | 0.71× | -| `min_aggregate` | 31.4 | 0.60 | 0.50 | 0.83× | +| `long_count_aggregate` | 28.8 | 0.30 | 0.60 | 2.00× | +| `max_aggregate` | 30.5 | 0.60 | 0.50 | 0.83× | +| `min_aggregate` | 30.5 | 0.60 | 0.50 | 0.83× | | `order_take_desc` | 37.6 | 0.70 | 1.3 | 1.86× | | `reverse_take` | 0.00 | 0.00 | 1.1 | — | | `select_count` | 0.10 | 0.00 | 0.00 | — | -| `select_where` | 105.9 | 4.1 | 5.4 | 1.32× | +| `select_where` | 105.3 | 4.1 | 5.5 | 1.34× | | `select_where_count` | 32.4 | 0.40 | 0.60 | 1.50× | -| `select_where_order_take` | 36.3 | 0.70 | 1.4 | 2.00× | -| `select_where_sum` | 36.7 | 0.50 | 0.60 | 1.20× | +| `select_where_order_take` | 36.2 | 0.70 | 1.3 | 1.86× | +| `select_where_sum` | 36.6 | 0.50 | 0.60 | 1.20× | | `single_match` | 0.00 | 0.40 | 1.1 | 2.75× | | `skip_take` | 0.30 | 0.00 | 0.00 | — | | `skip_while_match` | 3.4 | 0.40 | 0.40 | 1.00× | -| `sort_first` | 37.4 | 0.40 | 1.3 | 3.25× | -| `sort_take` | 37.7 | 0.70 | 1.3 | 1.86× | -| `sum_aggregate` | 29.7 | 0.40 | 0.30 | 0.75× | -| `sum_where` | 32.4 | 0.40 | 0.60 | 1.50× | -| `take_count` | 1.8 | 0.10 | 0.10 | 1.00× | +| `sort_first` | 37.5 | 0.40 | 1.3 | 3.25× | +| `sort_take` | 37.6 | 0.70 | 1.3 | 1.86× | +| `sum_aggregate` | 29.8 | 0.40 | 0.30 | 0.75× | +| `sum_where` | 32.3 | 0.40 | 0.60 | 1.50× | +| `take_count` | 1.8 | 0.10 | 0.20 | 2.00× | | `take_count_filtered` | — | 0.00 | 0.00 | — | | `take_sum_aggregate` | — | 0.00 | 0.00 | — | | `take_while_match` | 7.9 | 0.20 | 0.30 | 1.50× | -| `to_array_filter` | 48.8 | 3.2 | 3.3 | 1.03× | +| `to_array_filter` | 47.6 | 3.2 | 3.4 | 1.06× | | `zip_dot_product` | — | 0.50 | 0.50 | 1.00× | ## Notes on missing lanes (the `—` cells) @@ -146,15 +146,6 @@ corresponding `.das` bench file; the bullets below quote that comment. (PARTITION BY brand ORDER BY id)` + outer `WHERE rn=1`) would be the SQL equivalent; sqlite_linq does not currently lower window functions. Follow-up TODO 2026-05-23. -- **`groupby_select_sum` SQL** — sqlite_linq's `_group_by` requires - `_.Field` or a tuple of `_.Field`s; the expression key (`_ % 100`) - is rejected. Follow-up TODO 2026-05-23: expression-key support in - sqlite_linq lowering. Probe error: - - ``` - error[50503]: _sql: _group_by: key must be `_.Field` or - a tuple of `_.Field`s; got: (_ % 100) - ``` - **`take_count_filtered` SQL** — by design. In SQL, LIMIT after an aggregate has no effect (the aggregate collapses to one row), so the bound-then-count shape has no faithful SQL translation. No follow-up. diff --git a/modules/dasSQLITE/daslib/sqlite_linq.das b/modules/dasSQLITE/daslib/sqlite_linq.das index 380627bc85..493c62afe5 100644 --- a/modules/dasSQLITE/daslib/sqlite_linq.das +++ b/modules/dasSQLITE/daslib/sqlite_linq.das @@ -160,6 +160,9 @@ struct private SqlQuery { orderByCols : array orderByInlineExprs : array groupByCols : array + // nolint:STYLE014 Parallel to groupByCols: null for `_.Field` keys (groupByCols holds the daslang field name quoted, emitter translates); body for computed-expression keys (groupByCols holds the rendered SQL fragment). + groupByKeyExprs : array + groupByKeyTypes : array havingSql : string havingBindExprs : array groupedSelectExprs : array @@ -189,6 +192,8 @@ struct private SqlQuery { inView : bool hadError : bool lastError : string + // nolint:STYLE014 When true, pred_to_sql's bind fallthrough inlines ExprConst* literals into the SQL string instead of pushing `?` binds — used by expression-key contexts (e.g. _group_by) where the rendered fragment is re-used in multiple SQL positions and can't carry binds. + inlineConstants : bool // Multi-Q lowering: phase-order conflict (e.g. `take(n) |> _where(p)`) snapshots // the inner subtree's SQL+binds here; outer FROM renders as `() AS t0`. innerSql : string // null/empty = base-table FROM; else nested SELECT body @@ -576,7 +581,7 @@ def private peel_column_aggregate(var node : ExpressionPtr; var q : SqlQuery&; return true } -// nolint:STYLE015 Receiver-pin to ExprVar rejects `u.opt.X` keys SQL can't reproduce. +// nolint:STYLE015 Verifies the receiver IS the lambda's bound param — outer captures (`outer.Brand`) reject loudly instead of emitting a wrong `COUNT(DISTINCT "Brand")` against the SQL source. [macro_function] def private try_peel_distinct_by_field(var node : ExpressionPtr; var distinctSource : ExpressionPtr&; var q : SqlQuery&; prog : ProgramPtr; at : LineInfo) : string { @@ -587,7 +592,20 @@ def private try_peel_distinct_by_field(var node : ExpressionPtr; var distinctSou q.hadError = true return "" } - var body = peel_lambda_single_return(dbCall.arguments[1]) + var lam = dbCall.arguments[1] + if (lam == null || !(lam is ExprMakeBlock)) { + macro_error(prog, at, "_sql: _distinct_by key has unexpected shape (not a lambda)") + q.hadError = true + return "" + } + var blk = (lam as ExprMakeBlock)._block as ExprBlock + if (blk == null || blk.arguments |> length != 1) { + macro_error(prog, at, "_sql: _distinct_by key lambda must take exactly one argument") + q.hadError = true + return "" + } + let expectedArgName = string(blk.arguments[0].name) + var body = peel_lambda_single_return(lam) if (body == null) { macro_error(prog, at, "_sql: _distinct_by key lambda has unexpected shape") q.hadError = true @@ -601,6 +619,12 @@ def private try_peel_distinct_by_field(var node : ExpressionPtr; var distinctSou q.hadError = true return "" } + let argName = string((receiver as ExprVar).name) + if (argName != expectedArgName) { + macro_error(prog, at, "_sql: _distinct_by key references `{argName}` but the lambda's argument is `{expectedArgName}` — outer captures can't be translated, the key must read `{expectedArgName}.`") + q.hadError = true + return "" + } distinctSource = dbCall.arguments[0] return fieldName } @@ -618,7 +642,7 @@ def private peel_count_terminal(var node : ExpressionPtr; var q : SqlQuery&; return true } if (cCall.arguments |> length != 1) { - macro_error(prog, at, "_sql: `_{linqName}(predicate)` is not yet supported — use `|> _where(predicate) |> _{linqName}()` instead") + macro_error(prog, at, "_sql: `{linqName}(predicate)` is not yet supported — use `|> _where(predicate) |> {linqName}()` instead") q.hadError = true return true } @@ -758,6 +782,8 @@ def private snapshot_q_to_subquery_wrap(var q : SqlQuery&; prog : ProgramPtr; at q.orderByCols |> clear q.orderByInlineExprs |> clear q.groupByCols |> clear + q.groupByKeyExprs |> clear + q.groupByKeyTypes |> clear q.havingSql := "" q.havingBindExprs |> clear q.groupedSelectExprs |> clear @@ -1580,9 +1606,11 @@ def private analyze_chain(var node : ExpressionPtr; var q : SqlQuery&; prog : Pr macro_error(prog, at, "_sql: _group_by key lambda has unexpected shape") return false } - if (!collect_group_keys(body, q, prog, at)) return false + // nolint:STYLE015 Source first so q.rootType is set before pred_to_sql on computed keys. + if (!analyze_chain(gbCall.arguments[0], q, prog, at) + || !collect_group_keys(body, q, prog, at)) return false q.seenGroupBy = true - return analyze_chain(gbCall.arguments[0], q, prog, at) + return true } } // Peel _where — recurse first so q.rootType is set before pred_to_sql runs (needs it for @sql_json/@sql_blob descent). @@ -2145,6 +2173,13 @@ def private analyze_grouped_projection(var body : ExpressionPtr; var q : SqlQuer var val = mkTup.values[i] // single-key `_._0` — direct group-key reference. if (nKeys == 1 && qmatch(val, _._0).matched) { + if (q.groupByKeyExprs[0] != null) { + // Computed-expression key — reuse the rendered SQL fragment from collect_group_keys. + q.groupedSelectExprs |> push(q.groupByCols[0]) + q.groupedSelectTypes |> push(q.groupByKeyTypes[0]) + q.projRecordNames |> push(string(tupT.argNames[i])) + continue + } let col = group_key_column_name(q, 0) var fieldType = lookup_struct_field_type(q.rootType, col) if (fieldType == null) { @@ -2164,6 +2199,12 @@ def private analyze_grouped_projection(var body : ExpressionPtr; var q : SqlQuer let suffix = slice(outerName, 1, length(outerName)) let keyIdx = try_to_int(suffix) ?? -1 if (keyIdx >= 0 && keyIdx < nKeys) { + if (q.groupByKeyExprs[keyIdx] != null) { + q.groupedSelectExprs |> push(q.groupByCols[keyIdx]) + q.groupedSelectTypes |> push(q.groupByKeyTypes[keyIdx]) + q.projRecordNames |> push(string(tupT.argNames[i])) + continue + } let col = group_key_column_name(q, keyIdx) var fieldType = lookup_struct_field_type(q.rootType, col) if (fieldType == null) { @@ -2230,6 +2271,10 @@ def private collect_order_keys(var body : ExpressionPtr; var q : SqlQuery&; dire if (nKeys == 1 && recv != null && recv is ExprVar && (recv as ExprVar).name == "_" && outerName == "_0") { + if (q.groupByKeyExprs[0] != null) { + q.orderByCols |> push("{q.groupByCols[0]} {direction}") + return true + } let dasName = group_key_column_name(q, 0) let sqlCol = field_to_column_name(q.rootType, dasName) q.orderByCols |> push("\"{sqlCol}\" {direction}") @@ -2249,6 +2294,10 @@ def private collect_order_keys(var body : ExpressionPtr; var q : SqlQuery&; dire let suffix = slice(outerName, 1, length(outerName)) let keyIdx = try_to_int(suffix) ?? -1 if (keyIdx >= 0 && keyIdx < nKeys) { + if (q.groupByKeyExprs[keyIdx] != null) { + q.orderByCols |> push("{q.groupByCols[keyIdx]} {direction}") + return true + } let dasName = group_key_column_name(q, keyIdx) let sqlCol = field_to_column_name(q.rootType, dasName) q.orderByCols |> push("\"{sqlCol}\" {direction}") @@ -2299,6 +2348,35 @@ def private collect_order_keys(var body : ExpressionPtr; var q : SqlQuery&; dire return false } +[macro_function] +def private push_group_key(var entry : ExpressionPtr; var q : SqlQuery&; prog : ProgramPtr; at : LineInfo) : bool { + var fieldName : string + if (qmatch(entry, _.$f(fieldName)).matched) { + q.groupByCols |> push("\"{fieldName}\"") + q.groupByKeyExprs |> push(null) + q.groupByKeyTypes |> push(null) + return true + } + // nolint:STYLE015 Render with constants inlined so the fragment carries no binds and can be re-used in SELECT/GROUP BY/ORDER BY positions. + let savedInlineFlag = q.inlineConstants + let beforeBinds = length(q.bindExprs) + q.inlineConstants = true + let exprSql = pred_to_sql(entry, q, prog, at) + q.inlineConstants = savedInlineFlag + if (q.hadError || empty(exprSql)) return false + if (length(q.bindExprs) > beforeBinds) { + // nolint:STYLE015 Runtime bind in a key fragment would have to be re-pushed at each use site (SELECT/GROUP BY/ORDER BY); reject loud instead. + q.bindExprs |> resize(beforeBinds) + macro_error(prog, at, "_sql: _group_by expression key references a runtime value — only column refs (`_.X`) and constant literals (`100`, `0.5`) are allowed inside the key expression; got: {describe(entry)}") + q.hadError = true + return false + } + q.groupByCols |> push("({exprSql})") + q.groupByKeyExprs |> push <| clone_expression(entry) + q.groupByKeyTypes |> push(entry._type) + return true +} + [macro_function] def private collect_group_keys(var body : ExpressionPtr; var q : SqlQuery&; prog : ProgramPtr; at : LineInfo) : bool { if (body == null) { @@ -2312,15 +2390,7 @@ def private collect_group_keys(var body : ExpressionPtr; var q : SqlQuery&; prog return false } } - // Single-column form: _.FieldName. groupByCols stores DASLANG names; SQL translation deferred to emission. - { - var fieldName : string - if (qmatch(body, _.$f(fieldName)).matched) { - q.groupByCols |> push("\"{fieldName}\"") - return true - } - } - // Multi-column form: tuple literal `(_.k1, _.k2)`. + // Multi-column form: tuple literal `(k1, k2, ...)` — each entry is either `_.Field` or a computed expression. if (body is ExprMakeTuple) { var mkTup = body as ExprMakeTuple if (empty(mkTup.values)) { @@ -2328,19 +2398,12 @@ def private collect_group_keys(var body : ExpressionPtr; var q : SqlQuery&; prog return false } for (i in range(length(mkTup.values))) { - var val = mkTup.values[i] - var fieldName : string - if (qmatch(val, _.$f(fieldName)).matched) { - q.groupByCols |> push("\"{fieldName}\"") - } else { - macro_error(prog, at, "_sql: _group_by: tuple-key entries must be `_.Field`; got: {describe(val)}") - return false - } + if (!push_group_key(mkTup.values[i], q, prog, at)) return false } return true } - macro_error(prog, at, "_sql: _group_by: key must be `_.Field` or a tuple of `_.Field`s; got: {describe(body)}") - return false + // Single key: `_.Field`, or any expression pred_to_sql can render (`_.X % 100`, `_.X + _.Y`, etc.). + return push_group_key(body, q, prog, at) } [macro_function] @@ -2707,6 +2770,17 @@ def private pred_to_sql(var node : ExpressionPtr; var q : SqlQuery&; prog : Prog } } } + // Literal-inline mode (set by expression-key contexts) — emit ExprConst* value directly so the fragment carries no binds and can be re-used at multiple SQL positions. + if (q.inlineConstants) { + if (node is ExprConstInt) return "{(node as ExprConstInt).value}" + if (node is ExprConstInt64) return "{(node as ExprConstInt64).value}" + if (node is ExprConstUInt) return "{(node as ExprConstUInt).value}" + if (node is ExprConstUInt64) return "{(node as ExprConstUInt64).value}" + if (node is ExprConstFloat) return fmt(":.9g", (node as ExprConstFloat).value) + if (node is ExprConstDouble) return fmt(":.17g", (node as ExprConstDouble).value) + if (node is ExprConstBool) return (node as ExprConstBool).value ? "1" : "0" + if (node is ExprConstString) return sql_quote_lit(string((node as ExprConstString).value)) + } // Bind fallthrough: unrecognized exprs become `?`; sql_bind catch-all + concept_assert error if not bindable. if (q.inHaving) { q.havingBindExprs |> push <| clone_expression(node) @@ -3295,18 +3369,22 @@ def private build_sql_select(var q : SqlQuery&; force_aliases : bool = false) : w |> write(" WHERE ") w |> write(q.whereSql) } - // groupByCols hold daslang field names (quoted); translate to SQL identifier here. + // nolint:STYLE015 groupByCols hold either daslang field names (quoted) or pre-rendered SQL expression fragments; discriminate via groupByKeyExprs. if (!empty(q.groupByCols)) { w |> write(" GROUP BY ") for (i in range(length(q.groupByCols))) { if (i > 0) { w |> write(", ") } - let dasName = group_key_column_name(q, i) - let sqlCol = field_to_column_name(q.rootType, dasName) - w |> write("\"") - w |> write(sqlCol) - w |> write("\"") + if (q.groupByKeyExprs[i] != null) { + w |> write(q.groupByCols[i]) + } else { + let dasName = group_key_column_name(q, i) + let sqlCol = field_to_column_name(q.rootType, dasName) + w |> write("\"") + w |> write(sqlCol) + w |> write("\"") + } } } if (!empty(q.havingSql)) { diff --git a/tests/dasSQLITE/failed_sql_macro.das b/tests/dasSQLITE/failed_sql_macro.das index 2dfedd4213..de6f53922b 100644 --- a/tests/dasSQLITE/failed_sql_macro.das +++ b/tests/dasSQLITE/failed_sql_macro.das @@ -6,7 +6,7 @@ options gen2 // some malformed chains additionally cascade real type errors before the // analyzer ever runs — e.g. `_select(_.Name) |> _select(_.Price)` is a // genuine type bug (string has no `Price` field). Those cascades are expected. -expect 30341, 30928:2, 50503:21 +expect 30341, 30928:2, 50503:23 require daslib/sql require sqlite/sqlite_boost @@ -144,6 +144,19 @@ def main() { // keys lower to `COUNT(DISTINCT "col")`; computed keys like `_.Price % // 100` would need a general expression-to-SQL emitter not yet wired. let bad23 <- _sql(db |> select_from(type) |> _distinct_by(_.Price % 100) |> count()) + + // 24. `_distinct_by(.Field)` — the key reads a captured + // variable instead of the lambda's bound parameter (`_`); without + // the arg-name check this would silently emit `COUNT(DISTINCT "Field")` + // against the SQL row source — wrong result. + var capturedRow = Car(Id = 0, Name = "captured", Price = 0) + let bad24 <- _sql(db |> select_from(type) |> _distinct_by(capturedRow.Name) |> count()) + + // 25. `_group_by(_.Col - )` — expression-key support inlines + // constants only; a runtime-var bind would need to be re-pushed at each + // re-use of the key fragment (SELECT, GROUP BY, ORDER BY positions). + let runtimeOffset = 5 + let bad25 <- _sql(db |> select_from(type) |> _group_by(_.Price - runtimeOffset) |> _select((K = _._0, N = _._1 |> length))) // (Note: the "_in subquery without _select(_.Col)" diagnostic added in // this round is also belt-and-suspenders — a daslang `contains` type- // check rejects mismatched element types before sqlite_linq even sees diff --git a/tests/dasSQLITE/test_32_group_by_expression_keys.das b/tests/dasSQLITE/test_32_group_by_expression_keys.das new file mode 100644 index 0000000000..828244c3b0 --- /dev/null +++ b/tests/dasSQLITE/test_32_group_by_expression_keys.das @@ -0,0 +1,95 @@ +options gen2 + +require dastest/testing_boost public + +require daslib/sql +require sqlite/sqlite_boost +require sqlite/sqlite_linq + +[sql_table(name = "Cars")] +struct Car { + @sql_primary_key Id : int + Brand : string + Price : int +} + +def private fixture(db : SqlRunner) { + db |> create_table(type) + for (i in range(20)) { + db |> insert(Car(Id = i + 1, Brand = "B{i % 3}", Price = i * 10)) + } +} + +[test] +def test_expr_key_modulo_emits_inline_constant(t : T?) { + var _db = SqlRunner() + let sql = _sql_text(_db |> select_from(type) |> _group_by(_.Price % 100) |> _select((K = _._0, N = _._1 |> length))) + t |> equal(sql, "SELECT ((\"Price\") % (100)), COUNT(*) FROM \"Cars\" GROUP BY ((\"Price\") % (100))", + "expr-key SELECT + GROUP BY share the same inlined fragment, no `?` binds") +} + +[test] +def test_expr_key_modulo_runtime(t : T?) { + with_sqlite(":memory:") $(db) { + fixture(db) + let groups <- _sql(db |> select_from(type) |> _group_by(_.Price % 100) |> _select((K = _._0, N = _._1 |> length))) + t |> equal(length(groups), 10, "20 rows with Price 0,10,...,190 split by % 100 → 10 groups of 2") + var seen = 0 + for (g in groups) { + t |> equal(g.N, 2, "every group has 2 entries") + seen++ + } + t |> equal(seen, 10, "10 groups iterated") + } +} + +[test] +def test_expr_key_with_inner_select_sum(t : T?) { + with_sqlite(":memory:") $(db) { + fixture(db) + let groups <- _sql(db |> select_from(type) + |> _group_by(_.Price % 100) + |> _select((K = _._0, S = _._1 |> select($(c : Car) => c.Price) |> sum()))) + t |> equal(length(groups), 10, "10 groups") + for (g in groups) { + t |> equal(g.S, g.K * 2 + 100, "K=0 → S=100, K=10 → S=120, etc.") + } + } +} + +[test] +def test_expr_key_order_by_uses_same_fragment(t : T?) { + var _db = SqlRunner() + let sql = _sql_text(_db |> select_from(type) + |> _group_by(_.Price % 100) + |> _select((K = _._0, N = _._1 |> length)) + |> _order_by(_._0)) + t |> success(sql |> find("ORDER BY ((\"Price\") % (100)) ASC") >= 0, + "ORDER BY on the group key re-uses the expression-key fragment verbatim") +} + +[test] +def test_multi_key_mixed_field_and_expression(t : T?) { + var _db = SqlRunner() + let sql = _sql_text(_db |> select_from(type) + |> _group_by((_.Brand, _.Price % 100)) + |> _select((B = _._0._0, K = _._0._1, N = _._1 |> length))) + t |> equal(sql, "SELECT \"Brand\", ((\"Price\") % (100)), COUNT(*) FROM \"Cars\" GROUP BY \"Brand\", ((\"Price\") % (100))", + "multi-key tuple mixes field key and expression key; both render in SELECT + GROUP BY in order") +} + +[test] +def test_expr_key_runtime_runs_correctly(t : T?) { + with_sqlite(":memory:") $(db) { + fixture(db) + let groups <- _sql(db |> select_from(type) + |> _group_by((_.Brand, _.Price % 100)) + |> _select((B = _._0._0, K = _._0._1, N = _._1 |> length))) + t |> success(!empty(groups), "non-empty multi-key result") + var total = 0 + for (g in groups) { + total += g.N + } + t |> equal(total, 20, "every row visits exactly one group") + } +} From 96ac474a5f95634fbe79d586c4e6c477cafb12c1 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 20:40:51 -0700 Subject: [PATCH 04/14] dasClangBind CI: add clang-22 apt package for ClangConfig.cmake MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit apt.llvm.org's libclang-22-dev ships libclang.so + headers but NOT the ClangConfig.cmake that find_package(Clang 22.1) needs. The Clang cmake config files live in the clang-22 package (the compiler frontend), which also pulls in /usr/lib/llvm-22/lib/cmake/clang/ClangConfig.cmake. Found via the failing-CI error message: cmake's "considered but not accepted" list shows only Ubuntu's /usr/lib/cmake/clang-{16,17,18}/ ClangConfig.cmake — meaning the apt.llvm.org noble llvm-22 install didn't put any ClangConfig.cmake on disk that find_package could see. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/extended_checks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/extended_checks.yml b/.github/workflows/extended_checks.yml index 0e0491ef3b..d7cd65c5b7 100644 --- a/.github/workflows/extended_checks.yml +++ b/.github/workflows/extended_checks.yml @@ -109,6 +109,7 @@ jobs: libxcursor-dev \ libxinerama-dev \ libxi-dev \ + clang-22 \ libclang-22-dev \ llvm-22-dev ;; From dd7fa56a9d6fadc5d2a3730a91bb9d8300590af4 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 21:49:15 -0700 Subject: [PATCH 05/14] dasClangBind CI: disable on linux (libLLVM-22 collision with dasLLVM) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When dasClangBind is enabled on linux extended_checks, its libclang.so import pulls libLLVM-22.so.1 into the process — the same .so that dasLLVM already uses. Both modules then share LLVM's global Pass Registry; double-initialization corrupts JIT pass setup, so dasbind_example.das (which JIT-compiles to a standalone exe via dasLLVM) dies with: Pass 'Pre-ISel Intrinsic Lowering' is not initialized. Verify if there is a pass dependency cycle. Master worked because it used libclang-16 (different SONAME from libLLVM-22) — the two LLVMs were ABI-isolated. With this PR moving dasClangBind to libclang-22, the SONAMEs coincide and they collide. Resolution: dasClangBind stays OFF on linux extended_checks; only the mingw worker (build.yml build_windows_mingw) builds it, where the worker doesn't load dasLLVM in the same process that runs the binder. Changes: - .github/workflows/extended_checks.yml: DAS_CLANG_BIND_DISABLED=ON on linux build; dropped clang-22 + libclang-22-dev apt packages (no longer needed there); kept llvm-22-dev (dasLLVM still needs LLVMConfig.cmake). Dropped PATH_TO_LIBCLANG. Removed the bind_clangbind + bind_llvm self-binder steps that ran here. - .github/workflows/build.yml: added bind_clangbind self-binder step to build_windows_mingw. Uses cygpath to convert msys2's ${MSYSTEM_PREFIX}/include to a Windows path for daslang.exe. Known regression: bind_llvm.das self-binder doesn't run anywhere in this PR — it has its own Windows-mingw blocker (libclang-as- library doesn't find via msys2's libcxx auto-detection). Marked as a TODO comment on the mingw worker. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/build.yml | 20 ++++++++++++++++++ .github/workflows/extended_checks.yml | 30 ++++++++++----------------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bc335483f4..d22fb3c163 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -548,3 +548,23 @@ jobs: cd bin ./test_aot -use-aot _dasroot_/dastest/dastest.das -- --use-aot --color --failures-only --timeout 900 --test ../tests + # bind_clangbind self-binder lives here (not on linux extended_checks) + # because dasClangBind on linux pulls libclang.so → libLLVM-22.so.1, + # which collides with dasLLVM in the same process (shared pass + # registry, double-init breaks JIT). msys2 clang64 ships libclang as + # a separate SO chain, and the mingw worker doesn't exercise JIT-uses- + # dasClangBind paths, so they coexist cleanly. + # + # TODO: bind_llvm.das self-binder doesn't run on mingw — libclang as + # library doesn't find via msys2's libcxx auto-detection. + # Needs explicit -resource-dir / -isystem injection. Tracked as a + # follow-up; we lose master's previous bind_llvm.das CI coverage in + # the meantime. + - name: "Run self-binder (bind_clangbind.das)" + run: | + set -eux + CLANG_INCLUDE="$(cygpath -w "${MSYSTEM_PREFIX}/include")" + ./bin/daslang.exe modules/dasClangBind/bind/bind_clangbind.das -- --clang_path "${CLANG_INCLUDE}/" + git diff --exit-code -- modules/dasClangBind/src/ \ + || (echo "ERROR: dasClangBind generated files are out of date. Run './bin/daslang modules/dasClangBind/bind/bind_clangbind.das -- --clang_path ' locally and commit the result." && exit 1) + diff --git a/.github/workflows/extended_checks.yml b/.github/workflows/extended_checks.yml index d7cd65c5b7..92c7498d9b 100644 --- a/.github/workflows/extended_checks.yml +++ b/.github/workflows/extended_checks.yml @@ -109,8 +109,6 @@ jobs: libxcursor-dev \ libxinerama-dev \ libxi-dev \ - clang-22 \ - libclang-22-dev \ llvm-22-dev ;; esac @@ -136,11 +134,17 @@ jobs: ;; linux) echo "BIN=./bin" >> $GITHUB_ENV + # dasClangBind stays OFF here — its libclang.so pulls in + # libLLVM-22.so.1 which collides with dasLLVM's own use of + # the same .so (shared LLVM pass registry → double init, + # breaks dasbind_example JIT-to-exe). dasClangBind is built + # and self-binder-checked on the mingw worker (build.yml) + # where it links against msys2's libclang and there is no + # dasLLVM in the same process. CC=clang CXX=clang++ cmake --no-warn-unused-cli -B./build \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_OSX_ARCHITECTURES="${{ matrix.architecture_string }}" \ - -DDAS_CLANG_BIND_DISABLED=OFF \ - -DPATH_TO_LIBCLANG=/usr/lib/llvm-22 \ + -DDAS_CLANG_BIND_DISABLED=ON \ -DDAS_GLFW_DISABLED=OFF \ -G "${{ matrix.cmake_generator }}" $ACTIVE_MODULES cmake --build ./build --config Release --target daslang daslang_static @@ -251,21 +255,9 @@ jobs: set -eux $BIN/daslang _dasroot_/dastest/dastest.das -- --color --failures-only --test ./utils/mcp/test_tools.das - - name: "Run self-binder (bind_clangbind.das)" - if: matrix.target == 'linux' - run: | - set -eux - $BIN/daslang modules/dasClangBind/bind/bind_clangbind.das -- --clang_path /usr/lib/llvm-22/include/ - git diff --exit-code -- modules/dasClangBind/src/ \ - || (echo "ERROR: dasClangBind generated files are out of date. Run './bin/daslang modules/dasClangBind/bind/bind_clangbind.das -- --clang_path ' locally and commit the result." && exit 1) - - - name: "Run self-binder (bind_llvm.das)" - if: matrix.target == 'linux' - run: | - set -eux - $BIN/daslang modules/dasClangBind/bind/bind_llvm.das -- --input /usr/lib/llvm-22/include - git diff --exit-code -- modules/dasLLVM/bindings/ \ - || (echo "ERROR: dasLLVM generated bindings are out of date. Run './bin/daslang modules/dasClangBind/bind/bind_llvm.das -- --input ' locally and commit the result." && exit 1) + # Self-binders for dasClangBind + dasLLVM bindings live on the mingw + # worker (build.yml build_windows_mingw) — see comment on the linux + # build step above for why dasClangBind can't be enabled here. - name: "Install dasImgui (daspkg)" run: | From 62336a4a70b120b374a99f6d098030cab06cae40 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 21:38:04 -0700 Subject: [PATCH 06/14] linq_fold: plan_decs_join + LinqJoin auto-typed result lambda MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes the last missing-lane cell in `benchmarks/sql/results.md`: the `join_count` Decs lane. Builds a `table>` from the smaller side (srcb) inside one `for_each_archetype` pass, then walks the larger side (srca) and probes — same algorithm as `join_impl` (linq.das:1674) but inlines keya/keyb/result lambdas via the existing peel helpers so per-pair invoke overhead vanishes. Supported chain shapes (v1): - `from_decs_template(type) |> _join(from_decs_template(type), on, into) |> count()` - same chain ending in implicit `to_array()` Interleaved `_where`/`_select` and non-primitive key types cascade to tier-2 (`fold_linq_default`). Auto-typed `_join` result lambda: existing tests all spell out the two result-arg types because the `on` macro auto-injects them but the result lambda was passed through verbatim. Over decs sources the iterator element is `tuple<...>` (verbose to spell out by hand), so `LinqJoinBase.visit` now mirrors the `on` path — when the result lambda's two args are untyped (`$(l, r) => (...)`), inject the source element types. Strictly additive: existing typed callers untouched. Bench (join_count, n=100k, 100 dealers): - INTERP m4 = 64.0 ns/op (m3f = 121.2, SQL = 38.0) — 0.53× of array - JIT m4 = 13.3 ns/op (m3f = 36.2, SQL = 38.0) — 0.37× of array, fastest lane Tests: 5 new tests in `tests/linq/test_linq_from_decs.das` covering count + to_array + empty sides + many-to-one + unmatched-cars; full existing suite (193 tests in same file, 37 in test_linq_join.das, 21 in test_linq.das) green. Co-Authored-By: Claude Opus 4.7 --- benchmarks/sql/_common.das | 27 ++++++ benchmarks/sql/join_count.das | 28 +++++- daslib/linq_boost.das | 16 ++++ daslib/linq_fold.das | 132 +++++++++++++++++++++++++++++ tests/linq/test_linq_from_decs.das | 91 ++++++++++++++++++++ 5 files changed, 290 insertions(+), 4 deletions(-) diff --git a/benchmarks/sql/_common.das b/benchmarks/sql/_common.das index 5c1d1d14c1..364c75e410 100644 --- a/benchmarks/sql/_common.das +++ b/benchmarks/sql/_common.das @@ -88,6 +88,12 @@ struct public DecsCar { dealer_id : int } +[decs_template(prefix = "dealer_")] +struct public DecsDealer { + id : int + name : string +} + def public fixture_decs(n : int) { restart() create_entities(n) $(eid : EntityId; i : int; var cmp : ComponentMap) { @@ -102,6 +108,27 @@ def public fixture_decs(n : int) { } } +// Cars + Dealers together for the decs join lane. Both archetypes co-exist in the same decs world; plan_decs_join builds an in-query hash from the smaller side (dealers) then walks the larger side (cars). +def public fixture_decs_cars_and_dealers(n : int) { + restart() + create_entities(n) $(eid : EntityId; i : int; var cmp : ComponentMap) { + apply_decs_template(cmp, DecsCar( + id = i + 1, + name = "Car{i}", + price = (i * 37) % 1000, + brand = i % BRAND_COUNT, + year = 2010 + (i * 7) % 16, + dealer_id = (i % DEALER_COUNT) + 1 + )) + } + create_entities(DEALER_COUNT) $(eid : EntityId; i : int; var cmp : ComponentMap) { + apply_decs_template(cmp, DecsDealer( + id = i + 1, + name = "Dealer{i}" + )) + } +} + // Same fixture as fixture_decs, but returns the eid of the n/2-th entity for indexed-lookup benches. // The decs O(1) lookup path keys on EntityId (not the Car.id column), so the bench needs an actual eid // captured at creation time. fixture_decs has no return so call sites can't reuse it for this. diff --git a/benchmarks/sql/join_count.das b/benchmarks/sql/join_count.das index fe7a8560a0..8c5f6f2a97 100644 --- a/benchmarks/sql/join_count.das +++ b/benchmarks/sql/join_count.das @@ -7,10 +7,11 @@ require _common public // SQL lane works via `_sql(... |> _join(db |> select_from(type), ...))` // — the projection must be a named-tuple (positional tuples like `(c.name, d.name)` // are rejected by `_sql`'s _select shape check; use `(CarName=..., DealerName=...)`). -// The Decs lane is absent — `_join` doesn't lower onto the archetype walk, and -// faithfully porting cross-archetype lookup would need a Dealer decs template + -// hash-by-id index. [Follow-up TODO 2026-05-23: decs join / cross-archetype lookup -// machinery — see plan_join in linq_fold.das, currently only handles iterator/array.] +// Decs lane: plan_decs_join (linq_fold.das) builds a hash from the smaller side +// (dealers) inside one `for_each_archetype` pass, then walks the larger side +// (cars) and probes — same algorithm as `join_impl` in linq.das (line 1674). +// Auto-typed result lambda (`$(l,r)=>...`) skips the verbose tuple type spelling +// over decs sources. def run_m1(b : B?; n : int) { with_sqlite(":memory:") $(db) { @@ -43,6 +44,20 @@ def run_m3f(b : B?; n : int) { } } +def run_m4(b : B?; n : int) { + fixture_decs_cars_and_dealers(n) + b |> run("m4_decs_fold/{n}", n) { + let c = _fold(from_decs_template(type) |> _join(from_decs_template(type), + $(l, r) => l.dealer_id == r.id, + $(l, r) => (CarName = l.name, DealerName = r.name)) + |> count()) + b |> accept(c) + if (c == 0) { + b->failNow() + } + } +} + [benchmark] def join_count_m1(b : B?) { run_m1(b, 100000) @@ -52,3 +67,8 @@ def join_count_m1(b : B?) { def join_count_m3f(b : B?) { run_m3f(b, 100000) } + +[benchmark] +def join_count_m4(b : B?) { + run_m4(b, 100000) +} diff --git a/daslib/linq_boost.das b/daslib/linq_boost.das index bb7b848dc8..4fd3f31f23 100644 --- a/daslib/linq_boost.das +++ b/daslib/linq_boost.das @@ -535,6 +535,22 @@ class private AstCallMacro_LinqJoinBase : AstCallMacro { let lb_fresh = "__lb__" var keya_body = rename_var_in_expr(parts.keya_body, parts.larg_name, la_fresh) var keyb_body = rename_var_in_expr(parts.keyb_body, parts.rarg_name, lb_fresh) + // Auto-type the result lambda's args when untyped — symmetric with `on`, which accepts `(l,r)=>...` without types. Lets users write `_join(..., $(l,r)=>l.id==r.id, $(l,r)=>(l.x,r.y))` against any source — including from_decs_template(type) where the iterator element is a tuple<...> that's painful to spell out by hand. Plain `_join` only: `_left_join` / `_right_join` / `_full_outer_join` need Option on one or both sides, so their untyped result lambdas must stay user-spelled. + if (fnName == "join") { + var resultArg = call.arguments[3] + if (resultArg != null && resultArg is ExprMakeBlock) { + var rblk = (resultArg as ExprMakeBlock)._block + if (rblk != null && rblk is ExprBlock) { + var rb = rblk as ExprBlock + if (rb.arguments |> length == 2 + && (rb.arguments[0]._type == null || rb.arguments[0]._type.isAutoOrAlias) + && (rb.arguments[1]._type == null || rb.arguments[1]._type.isAutoOrAlias)) { + rb.arguments[0]._type = clone_type(iterTypeA) + rb.arguments[1]._type = clone_type(iterTypeB) + } + } + } + } var res = qmacro($c(fnName)( $e(call.arguments[0]), $e(call.arguments[1]), diff --git a/daslib/linq_fold.das b/daslib/linq_fold.das index 64f66a08df..89504c0cdf 100644 --- a/daslib/linq_fold.das +++ b/daslib/linq_fold.das @@ -5261,6 +5261,136 @@ def private plan_decs_distinct(var expr : Expression?) : Expression? { return finalize_decs_emission(emission, at, expr._type.isIterator && needBuffer) } +// ── decs join splice (Session 3 — hashed O(N+M) via collect-on-srcb + probe-on-srca) ─────── + +[macro_function] +def private plan_decs_join(var expr : Expression?) : Expression? { + // Hashed equi-join over two from_decs_template eager bridges. Walks the smaller side (srcb in the source order — the user writes the smaller side as srcb) into a `table>`, then walks the larger side (srca) and probes via `table.get`. Matches array-side `join_impl` algorithm (linq.das:1674) but inlines keya/keyb/result lambdas so per-pair invoke overhead vanishes. For v1: only the `[join, count]` and `[join, ]` shapes; interleaved where/select bails to tier-2. Runtime-value or non-primitive keys: keya/keyb's block return type is used directly as the table key type — primitive equi-keys (int, string) are the common case and the `_join` macro's equi-shape constraint keeps the key expression on one side of `==`. + var (top, calls) = flatten_linq(expr) + if (expr._type == null) return null + // Terminator: count (1-arg) or implicit to_array. Anything else cascades. + var terminatorName : string = "" + { + let lastName = empty(calls) ? "" : calls.back()._1.name + if (lastName == "count" && length(calls.back()._0.arguments) == 1) { + terminatorName = lastName + calls |> pop + } + } + // Must end on a single `join` call now — interleaved where/select unsupported in v1. + if (empty(calls) || calls.back()._1.name != "join") return null + var joinCall = calls.back()._0 + calls |> pop + if (!empty(calls) || (terminatorName == "" && !expr._type.isGoodArrayType)) return null + // Both sides must be from_decs_template eager bridges. + var bridgeA = extract_decs_bridge(top) + if (bridgeA == null || joinCall.arguments |> length != 5) return null + var bridgeB = extract_decs_bridge(joinCall.arguments[1]) + if (bridgeB == null) return null + // keya/keyb are LinqJoin-macro-synthesized: $($i(la_fresh) : iterTypeA) => keya_body — 1-arg single-return. Block return type IS the key type. + var keyaLam = joinCall.arguments[2] + var keybLam = joinCall.arguments[3] + if (keyaLam == null || keybLam == null || keyaLam._type == null) return null + let keyType = strip_const_ref(clone_type(keyaLam._type.firstType)) + // Primitive-only key types — non-primitive keys would need `_::unique_key()` wrapping at probe/insert sites to match join_impl's hash semantics (daslib/linq.das:1678). Cascade everything else to tier-2 so join_impl handles them correctly. + if (keyType == null + || (keyType.baseType != Type.tInt && keyType.baseType != Type.tInt64 + && keyType.baseType != Type.tUInt && keyType.baseType != Type.tUInt64 + && keyType.baseType != Type.tInt8 && keyType.baseType != Type.tUInt8 + && keyType.baseType != Type.tInt16 && keyType.baseType != Type.tUInt16 + && keyType.baseType != Type.tString + && keyType.baseType != Type.tFloat && keyType.baseType != Type.tDouble + && keyType.baseType != Type.tBool)) return null + let at = joinCall.at + let tupAName = qn("decs_tup_a", at) + let tupBName = qn("decs_tup_b", at) + let hashName = qn("decs_hash", at) + let cntName = qn("decs_jcnt", at) + let bufName = qn("decs_jbuf", at) + let bElemName = qn("decs_jb", at) + let arrName = qn("decs_jarr", at) + var keyaBody = peel_lambda_rename_var(keyaLam, tupAName) + var keybBody = peel_lambda_rename_var(keybLam, tupBName) + if (keyaBody == null || keybBody == null) return null + var tupBindA = build_decs_tup_bind(bridgeA, tupAName, at) + var tupBindB = build_decs_tup_bind(bridgeB, tupBName, at) + if (tupBindA == null || tupBindB == null) return null + let tupBType = strip_const_ref(clone_type(bridgeB.elementType)) + // Collect loop: hash all of srcb keyed by keyb(tupb). + var collectBody <- qmacro_block_to_array() { + // nolint:PERF006 per-key bucket size unknown ahead of time + $i(hashName)[$e(keybBody)] |> push_clone($i(tupBName)) + } + var collectInner = build_decs_inner_for(bridgeB, tupBindB, stmts_to_expr(collectBody), at) + // Result builder branches on terminator. + var probeStmts : array + var preludeStmts : array + var returnStmt : Expression? + if (terminatorName == "count") { + preludeStmts |> push <| qmacro_expr() { + var $i(cntName) : int = 0 + } + probeStmts |> push <| qmacro_expr() { + $i(cntName) += length($i(arrName)) + } + returnStmt = qmacro_expr() { + return $i(cntName) + } + } else { + var resultLam = joinCall.arguments[4] + if (resultLam == null) return null + var resultBody = peel_lambda_rename_2vars(resultLam, tupAName, bElemName) + if (resultBody == null) return null + let resultType = clone_type(expr._type.firstType) + if (resultType == null) return null + preludeStmts |> push <| qmacro_expr() { + var $i(bufName) : array<$t(resultType)> + } + probeStmts |> push <| qmacro_expr() { + for ($i(bElemName) in $i(arrName)) { + $i(bufName) |> push_clone($e(resultBody)) + } + } + returnStmt = qmacro_expr() { + return <- $i(bufName) + } + } + // Probe loop: walk srca; on hash hit invoke probeStmts with the matched bucket bound as arrName. Block takes `var arr` so it matches table::get's mutating overload (we don't mutate, but the const overload is gated on a const Tab which a `var hash` local is not). + var probeWrapBody <- qmacro_block_to_array() { + get($i(hashName), $e(keyaBody), $(var $i(arrName) : array<$t(tupBType)>) { + $b(probeStmts) + }) + } + var probeInner = build_decs_inner_for(bridgeA, tupBindA, stmts_to_expr(probeWrapBody), at) + // Assemble outer zero-arg invoke. + var allStmts : array + allStmts |> push_from(preludeStmts) + allStmts |> push <| qmacro_expr() { + var $i(hashName) : table<$t(keyType); array<$t(tupBType)>> + } + allStmts |> push <| qmacro_expr() { + for_each_archetype($e(bridgeB.reqHashExpr), $e(bridgeB.erqExpr), $($i(bridgeB.archName) : Archetype) { + $e(collectInner) + }) + } + allStmts |> push <| qmacro_expr() { + for_each_archetype($e(bridgeA.reqHashExpr), $e(bridgeA.erqExpr), $($i(bridgeA.archName) : Archetype) { + $e(probeInner) + }) + } + allStmts |> push(returnStmt) + var retType : TypeDeclPtr + if (terminatorName == "count") { + retType = new TypeDecl(baseType = Type.tInt, at = at) + } else { + retType = clone_type(expr._type) + } + var emission = qmacro(invoke($() : $t(retType) { + $b(allStmts) + })) + return finalize_decs_emission(emission, at, false) +} + [macro_function] def private plan_zip(var expr : Expression?) : Expression? { // Phase 2 Z1/Z2/Z3 + accumulator/early-exit: 2-ary lockstep zip splice. Supports bare zip (array/iterator), no-pred count/long_count + accumulator (sum/min/max/average) + early-exit (first/first_or_default/any/all/contains) terminators, and fused where_/select/take/skip/take_while/skip_while chain ops between zip and terminator. Result-selector form (3-arg zip) and chained selects bail to tier-2 cascade. @@ -5587,6 +5717,8 @@ class private LinqFold : AstCallMacro { if (res != null) return res res = plan_decs_unroll(call.arguments[0]) if (res != null) return res + res = plan_decs_join(call.arguments[0]) + if (res != null) return res res = plan_zip(call.arguments[0]) if (res != null) return res res = plan_loop_or_count(call.arguments[0]) diff --git a/tests/linq/test_linq_from_decs.das b/tests/linq/test_linq_from_decs.das index c5741164a9..b444a49c7e 100644 --- a/tests/linq/test_linq_from_decs.das +++ b/tests/linq/test_linq_from_decs.das @@ -3265,3 +3265,94 @@ def test_reverse_take_empty_source(t : T?) { t |> success(empty(got), "empty source returns empty") } +// ── Session 3: plan_decs_join — hashed equi-join over two from_decs_template eager bridges ── + +[decs_template(prefix = "jt_car_")] +struct JoinTestCar { + id : int + dealer_id : int +} + +[decs_template(prefix = "jt_dealer_")] +struct JoinTestDealer { + id : int + name : string +} + +def private join_test_fixture(numCars, numDealers : int) { + restart() + create_entities(numCars) $(eid : EntityId; i : int; var cmp : ComponentMap) { + apply_decs_template(cmp, JoinTestCar(id = i + 100, dealer_id = (i % max(numDealers, 1)) + 1)) + } + create_entities(numDealers) $(eid : EntityId; i : int; var cmp : ComponentMap) { + apply_decs_template(cmp, JoinTestDealer(id = i + 1, name = "D{i}")) + } +} + +[test] +def test_decs_join_count_basic(t : T?) { + // 10 cars × 5 dealers, each car matches exactly one dealer. + join_test_fixture(10, 5) + let c = _fold(from_decs_template(type) |> _join(from_decs_template(type), + $(l, r) => l.dealer_id == r.id, + $(l, r) => (l.id, r.name)) + |> count()) + t |> equal(c, 10, "every car matches exactly one dealer") +} + +[test] +def test_decs_join_count_unmatched_cars(t : T?) { + // 5 cars with dealer_id 1..5, only 3 dealers (ids 1..3) — cars whose dealer_id is 4 or 5 (the 4th and 5th car) are unmatched, so 3 of 5 cars contribute. + restart() + create_entities(5) $(eid : EntityId; i : int; var cmp : ComponentMap) { + apply_decs_template(cmp, JoinTestCar(id = i + 100, dealer_id = i + 1)) + } + create_entities(3) $(eid : EntityId; i : int; var cmp : ComponentMap) { + apply_decs_template(cmp, JoinTestDealer(id = i + 1, name = "D{i}")) + } + let c = _fold(from_decs_template(type) |> _join(from_decs_template(type), + $(l, r) => l.dealer_id == r.id, + $(l, r) => (l.id, r.name)) + |> count()) + t |> equal(c, 3, "only cars with matching dealer ids contribute") +} + +[test] +def test_decs_join_empty_sides(t : T?) { + restart() + let c = _fold(from_decs_template(type) |> _join(from_decs_template(type), + $(l, r) => l.dealer_id == r.id, + $(l, r) => (l.id, r.name)) + |> count()) + t |> equal(c, 0, "no entities → 0 pairs") +} + +[test] +def test_decs_join_many_to_one(t : T?) { + // 10 cars distributed across 2 dealers — each car matches one dealer; counts 10. + join_test_fixture(10, 2) + let c = _fold(from_decs_template(type) |> _join(from_decs_template(type), + $(l, r) => l.dealer_id == r.id, + $(l, r) => (l.id, r.name)) + |> count()) + t |> equal(c, 10, "many-cars-to-one-dealer-each yields one pair per car") +} + +[test] +def test_decs_join_to_array_projection(t : T?) { + // to_array path: named-tuple projection picks up CarId / DealerName. + join_test_fixture(6, 3) + let arr <- _fold(from_decs_template(type) |> _join(from_decs_template(type), + $(l, r) => l.dealer_id == r.id, + $(l, r) => (CarId = l.id, DealerName = r.name)) + |> to_array()) + t |> equal(length(arr), 6, "every car matched") + // Each row's CarId is 100..105, DealerName is D0..D2 in round-robin order. Order isn't guaranteed across archetypes, so check the set. + var seen : table + for (row in arr) { + seen |> insert(row.CarId) + t |> success(row.DealerName |> starts_with("D"), "dealer name prefixed D") + } + t |> equal(length(seen), 6, "all 6 distinct car ids present") +} + From 2ba97246ba112c3641a6c8a1e6dd39affabeb38b Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 21:55:04 -0700 Subject: [PATCH 07/14] benchmarks/sql/results.md: refresh per living-doc policy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per [[feedback-living-results-md]]: every PR touching splice machinery re-runs the full INTERP+JIT matrix and refreshes results.md in the same PR. 62336a4a7 adds plan_decs_join → join_count Decs lane filled (was the last `—` cell apart from by-design ones). INTERP join_count: m4 = 64.0 ns/op (0.53× of m3f = 121.2). m3f goes through `join_to_array` then counts; m4 builds the hash inline and returns the running count without materializing the result array. JIT join_count: m4 = 13.3 ns/op (0.37× of m3f = 36.2). LLVM inlines the per-element binds, hash probe, and counter into a tight loop. Other cells: ±~1 ns/op noise vs `31e4339a8` baseline — no regressions. Dropped the `join_count Decs` bullet from "Notes on missing lanes". Co-Authored-By: Claude Opus 4.7 --- benchmarks/sql/results.md | 159 ++++++++++++++++++-------------------- 1 file changed, 77 insertions(+), 82 deletions(-) diff --git a/benchmarks/sql/results.md b/benchmarks/sql/results.md index a848f0286e..4020ed60f0 100644 --- a/benchmarks/sql/results.md +++ b/benchmarks/sql/results.md @@ -1,10 +1,10 @@ # Benchmarks — SQL / Array / Decs comparison -Generated 2026-05-23 from master `31e4339a8`. Fixture size: n = 100 000 -(cars), 100 dealers, 5 brands. Each row is one bench family in -`benchmarks/sql/`; columns are nanoseconds per logical operation. -`—` marks an intentionally absent lane — see "Notes on missing lanes" -below. +Generated 2026-05-23 from `62336a4a7` (PR for `plan_decs_join`). +Fixture size: n = 100 000 (cars), 100 dealers, 5 brands. Each row is +one bench family in `benchmarks/sql/`; columns are nanoseconds per +logical operation. `—` marks an intentionally absent lane — see +"Notes on missing lanes" below. The benchmarked chain shapes are summarised in `benchmarks/README.md` and the splice arms each chain fires are @@ -26,58 +26,58 @@ before the timer resolution can measure them — they should be read as | Benchmark | SQL (m1) | Array (m3f) | Decs (m4) | Decs vs Array | |---|---:|---:|---:|---:| -| `aggregate_match` | 34.4 | 6.0 | 5.9 | 0.98× | -| `all_match` | 27.6 | 3.7 | 3.5 | 0.95× | +| `aggregate_match` | 35.3 | 5.9 | 5.8 | 0.98× | +| `all_match` | 28.1 | 3.6 | 3.5 | 0.97× | | `any_match` | 0.00 | 0.00 | 0.00 | — | -| `average_aggregate` | 29.5 | 5.9 | 8.8 | 1.49× | -| `bare_order_where` | 275.1 | 118.3 | 126.0 | 1.07× | -| `chained_where` | 36.0 | 6.7 | 6.6 | 0.99× | +| `average_aggregate` | 29.9 | 5.9 | 8.8 | 1.49× | +| `bare_order_where` | 278.2 | 118.4 | 126.6 | 1.07× | +| `chained_where` | 38.5 | 6.7 | 6.7 | 1.00× | | `contains_match` | 0.00 | 2.2 | 1.4 | 0.64× | -| `count_aggregate` | 29.7 | 4.1 | 4.1 | 1.00× | -| `distinct_by_count` | 41.0 | 15.6 | 15.9 | 1.02× | -| `distinct_count` | 41.2 | 15.9 | 15.8 | 0.99× | +| `count_aggregate` | 29.1 | 4.1 | 4.2 | 1.02× | +| `distinct_by_count` | 40.6 | 15.8 | 16.0 | 1.01× | +| `distinct_count` | 41.1 | 16.1 | 16.0 | 0.99× | | `distinct_take` | 0.00 | 0.00 | 0.00 | — | | `element_at_match` | 0.00 | 0.00 | 0.00 | — | | `first_match` | 0.00 | 0.00 | 0.00 | — | | `first_or_default_match` | 0.00 | 0.00 | 0.00 | — | -| `groupby_average` | 170.6 | 29.9 | 30.0 | 1.00× | -| `groupby_count` | 140.3 | 19.2 | 19.3 | 1.01× | -| `groupby_first` | — | 18.4 | 19.1 | 1.04× | -| `groupby_having_count` | 139.9 | 19.1 | 19.2 | 1.01× | -| `groupby_having_hidden_sum` | 174.7 | 24.3 | 24.0 | 0.99× | -| `groupby_max` | 173.4 | 24.9 | 25.2 | 1.01× | -| `groupby_min` | 172.4 | 24.9 | 25.2 | 1.01× | -| `groupby_multi_reducer` | 188.8 | 32.2 | 32.3 | 1.00× | -| `groupby_select_sum` | 200.4 | 36.5 | 36.3 | 0.99× | -| `groupby_sum` | 169.3 | 18.6 | 18.6 | 1.00× | -| `groupby_where_count` | 75.6 | 14.6 | 14.8 | 1.01× | -| `groupby_where_sum` | 85.9 | 14.1 | 14.6 | 1.04× | -| `indexed_lookup` | 1441.6 | 203340.0 | 474.5 | 0.00× | -| `join_count` | 37.9 | 121.3 | — | — | -| `last_match` | 0.00 | 5.8 | 13.8 | 2.38× | -| `long_count_aggregate` | 29.4 | 4.2 | 4.0 | 0.95× | -| `max_aggregate` | 30.9 | 6.0 | 6.9 | 1.15× | -| `min_aggregate` | 31.0 | 6.1 | 6.9 | 1.13× | -| `order_take_desc` | 38.2 | 15.8 | 19.9 | 1.26× | -| `reverse_take` | 0.10 | 0.00 | 9.2 | — | +| `groupby_average` | 174.3 | 30.3 | 30.2 | 1.00× | +| `groupby_count` | 144.3 | 19.4 | 19.3 | 0.99× | +| `groupby_first` | — | 20.0 | 19.3 | 0.97× | +| `groupby_having_count` | 142.6 | 19.3 | 19.4 | 1.01× | +| `groupby_having_hidden_sum` | 175.7 | 24.5 | 24.1 | 0.98× | +| `groupby_max` | 176.7 | 25.0 | 25.4 | 1.02× | +| `groupby_min` | 175.7 | 25.1 | 25.4 | 1.01× | +| `groupby_multi_reducer` | 191.4 | 33.7 | 32.7 | 0.97× | +| `groupby_select_sum` | 207.1 | 36.8 | 36.7 | 1.00× | +| `groupby_sum` | 172.4 | 18.8 | 18.8 | 1.00× | +| `groupby_where_count` | 75.7 | 14.7 | 15.0 | 1.02× | +| `groupby_where_sum` | 86.7 | 14.3 | 14.7 | 1.03× | +| `indexed_lookup` | 1454.5 | 204673.2 | 472.2 | 0.00× | +| `join_count` | 38.0 | 121.2 | 64.0 | 0.53× | +| `last_match` | 0.00 | 5.9 | 14.0 | 2.37× | +| `long_count_aggregate` | 29.3 | 4.2 | 4.2 | 1.00× | +| `max_aggregate` | 30.8 | 6.1 | 6.9 | 1.13× | +| `min_aggregate` | 30.4 | 6.2 | 6.9 | 1.11× | +| `order_take_desc` | 38.1 | 15.9 | 20.1 | 1.26× | +| `reverse_take` | 0.10 | 0.00 | 9.3 | — | | `select_count` | 0.10 | 0.00 | 2.2 | — | -| `select_where` | 196.8 | 11.1 | 19.6 | 1.77× | -| `select_where_count` | 32.6 | 5.2 | 7.4 | 1.42× | -| `select_where_order_take` | 36.5 | 12.2 | 14.9 | 1.22× | -| `select_where_sum` | 36.8 | 7.5 | 7.5 | 1.00× | +| `select_where` | 194.2 | 11.1 | 19.5 | 1.76× | +| `select_where_count` | 32.5 | 5.2 | 7.4 | 1.42× | +| `select_where_order_take` | 36.4 | 12.2 | 14.9 | 1.22× | +| `select_where_sum` | 37.0 | 7.5 | 7.5 | 1.00× | | `single_match` | 0.00 | 2.9 | 5.5 | 1.90× | | `skip_take` | 0.50 | 0.10 | 0.20 | 2.00× | | `skip_while_match` | 3.4 | 5.3 | 5.3 | 1.00× | -| `sort_first` | 37.8 | 11.0 | 13.3 | 1.21× | -| `sort_take` | 38.1 | 16.3 | 20.2 | 1.24× | +| `sort_first` | 37.9 | 11.1 | 13.4 | 1.21× | +| `sort_take` | 38.1 | 16.4 | 20.3 | 1.24× | | `sum_aggregate` | 30.0 | 2.2 | 2.1 | 0.95× | -| `sum_where` | 33.0 | 4.2 | 4.3 | 1.02× | +| `sum_where` | 32.8 | 4.3 | 4.3 | 1.00× | | `take_count` | 3.6 | 0.20 | 0.40 | 2.00× | | `take_count_filtered` | — | 0.20 | 0.20 | 1.00× | | `take_sum_aggregate` | — | 0.10 | 0.10 | 1.00× | -| `take_while_match` | 8.0 | 2.7 | 2.5 | 0.93× | -| `to_array_filter` | 70.0 | 11.6 | 11.7 | 1.01× | -| `zip_dot_product` | — | 8.0 | 4.8 | 0.60× | +| `take_while_match` | 7.9 | 2.5 | 2.5 | 1.00× | +| `to_array_filter` | 70.1 | 11.7 | 11.9 | 1.02× | +| `zip_dot_product` | — | 8.1 | 4.8 | 0.59× | ## JIT @@ -86,54 +86,54 @@ before the timer resolution can measure them — they should be read as | `aggregate_match` | 34.4 | 0.40 | 0.70 | 1.75× | | `all_match` | 27.4 | 0.30 | 0.20 | 0.67× | | `any_match` | 0.00 | 0.00 | 0.00 | — | -| `average_aggregate` | 30.0 | 1.0 | 3.5 | 3.50× | -| `bare_order_where` | 184.2 | 33.5 | 34.8 | 1.04× | -| `chained_where` | 36.2 | 0.60 | 0.80 | 1.33× | +| `average_aggregate` | 29.7 | 1.0 | 3.6 | 3.60× | +| `bare_order_where` | 185.9 | 33.7 | 35.0 | 1.04× | +| `chained_where` | 35.9 | 0.60 | 0.80 | 1.33× | | `contains_match` | 0.00 | 0.20 | 0.10 | 0.50× | -| `count_aggregate` | 29.4 | 0.30 | 0.60 | 2.00× | -| `distinct_by_count` | 41.0 | 2.1 | 2.1 | 1.00× | -| `distinct_count` | 41.1 | 2.1 | 2.1 | 1.00× | +| `count_aggregate` | 29.0 | 0.40 | 0.60 | 1.50× | +| `distinct_by_count` | 40.8 | 2.1 | 2.1 | 1.00× | +| `distinct_count` | 41.0 | 2.1 | 2.1 | 1.00× | | `distinct_take` | 0.00 | 0.00 | 0.00 | — | | `element_at_match` | 0.00 | 0.00 | 0.00 | — | | `first_match` | 0.00 | 0.00 | 0.00 | — | | `first_or_default_match` | 0.00 | 0.00 | 0.00 | — | -| `groupby_average` | 170.0 | 2.6 | 2.9 | 1.12× | -| `groupby_count` | 140.7 | 2.3 | 2.5 | 1.09× | +| `groupby_average` | 170.7 | 2.6 | 2.9 | 1.12× | +| `groupby_count` | 141.1 | 2.4 | 2.5 | 1.04× | | `groupby_first` | — | 2.2 | 3.1 | 1.41× | -| `groupby_having_count` | 140.5 | 2.3 | 2.5 | 1.09× | -| `groupby_having_hidden_sum` | 174.0 | 2.5 | 2.8 | 1.12× | -| `groupby_max` | 175.1 | 2.4 | 2.7 | 1.13× | -| `groupby_min` | 172.6 | 2.4 | 2.7 | 1.13× | -| `groupby_multi_reducer` | 187.8 | 2.7 | 2.9 | 1.07× | -| `groupby_select_sum` | 198.1 | 3.2 | 3.7 | 1.16× | -| `groupby_sum` | 169.5 | 2.4 | 2.7 | 1.13× | -| `groupby_where_count` | 75.0 | 1.7 | 1.8 | 1.06× | -| `groupby_where_sum` | 87.9 | 1.7 | 1.8 | 1.06× | -| `indexed_lookup` | 1238.5 | 35025.4 | 101.7 | 0.00× | -| `join_count` | 37.6 | 35.7 | — | — | -| `last_match` | 0.00 | 0.50 | 1.4 | 2.80× | -| `long_count_aggregate` | 28.8 | 0.30 | 0.60 | 2.00× | -| `max_aggregate` | 30.5 | 0.60 | 0.50 | 0.83× | -| `min_aggregate` | 30.5 | 0.60 | 0.50 | 0.83× | -| `order_take_desc` | 37.6 | 0.70 | 1.3 | 1.86× | +| `groupby_having_count` | 147.0 | 2.4 | 2.5 | 1.04× | +| `groupby_having_hidden_sum` | 174.1 | 2.5 | 2.8 | 1.12× | +| `groupby_max` | 172.0 | 2.4 | 2.7 | 1.13× | +| `groupby_min` | 174.2 | 2.4 | 2.7 | 1.13× | +| `groupby_multi_reducer` | 191.1 | 2.7 | 3.0 | 1.11× | +| `groupby_select_sum` | 198.8 | 3.2 | 3.7 | 1.16× | +| `groupby_sum` | 173.6 | 2.4 | 2.7 | 1.13× | +| `groupby_where_count` | 75.6 | 1.7 | 1.8 | 1.06× | +| `groupby_where_sum` | 86.8 | 1.7 | 1.8 | 1.06× | +| `indexed_lookup` | 1266.6 | 36139.0 | 104.1 | 0.00× | +| `join_count` | 38.0 | 36.2 | 13.3 | 0.37× | +| `last_match` | 0.00 | 0.60 | 1.4 | 2.33× | +| `long_count_aggregate` | 29.3 | 0.40 | 0.60 | 1.50× | +| `max_aggregate` | 30.6 | 0.60 | 0.50 | 0.83× | +| `min_aggregate` | 30.7 | 0.60 | 0.50 | 0.83× | +| `order_take_desc` | 37.8 | 0.70 | 1.4 | 2.00× | | `reverse_take` | 0.00 | 0.00 | 1.1 | — | | `select_count` | 0.10 | 0.00 | 0.00 | — | -| `select_where` | 105.3 | 4.1 | 5.5 | 1.34× | +| `select_where` | 105.6 | 4.1 | 5.5 | 1.34× | | `select_where_count` | 32.4 | 0.40 | 0.60 | 1.50× | -| `select_where_order_take` | 36.2 | 0.70 | 1.3 | 1.86× | -| `select_where_sum` | 36.6 | 0.50 | 0.60 | 1.20× | +| `select_where_order_take` | 36.4 | 0.70 | 1.4 | 2.00× | +| `select_where_sum` | 36.9 | 0.50 | 0.60 | 1.20× | | `single_match` | 0.00 | 0.40 | 1.1 | 2.75× | | `skip_take` | 0.30 | 0.00 | 0.00 | — | -| `skip_while_match` | 3.4 | 0.40 | 0.40 | 1.00× | +| `skip_while_match` | 3.5 | 0.40 | 0.40 | 1.00× | | `sort_first` | 37.5 | 0.40 | 1.3 | 3.25× | -| `sort_take` | 37.6 | 0.70 | 1.3 | 1.86× | -| `sum_aggregate` | 29.8 | 0.40 | 0.30 | 0.75× | -| `sum_where` | 32.3 | 0.40 | 0.60 | 1.50× | -| `take_count` | 1.8 | 0.10 | 0.20 | 2.00× | +| `sort_take` | 38.0 | 0.70 | 1.4 | 2.00× | +| `sum_aggregate` | 30.3 | 0.40 | 0.30 | 0.75× | +| `sum_where` | 33.0 | 0.40 | 0.60 | 1.50× | +| `take_count` | 1.8 | 0.10 | 0.10 | 1.00× | | `take_count_filtered` | — | 0.00 | 0.00 | — | | `take_sum_aggregate` | — | 0.00 | 0.00 | — | -| `take_while_match` | 7.9 | 0.20 | 0.30 | 1.50× | -| `to_array_filter` | 47.6 | 3.2 | 3.4 | 1.06× | +| `take_while_match` | 8.0 | 0.20 | 0.30 | 1.50× | +| `to_array_filter` | 48.3 | 3.2 | 3.4 | 1.06× | | `zip_dot_product` | — | 0.50 | 0.50 | 1.00× | ## Notes on missing lanes (the `—` cells) @@ -153,11 +153,6 @@ corresponding `.das` bench file; the bullets below quote that comment. By design, no follow-up. - **`zip_dot_product` SQL** — `zip` is not a relational operation. No SQL form exists; by design, no follow-up. -- **`join_count` Decs** — `_join` does not currently lower onto the - decs archetype walk. Faithfully porting cross-archetype lookup would - need a Dealer `[decs_template]` plus a hash-by-id index. Follow-up - TODO 2026-05-23: decs join / cross-archetype lookup machinery in - `plan_join` (`daslib/linq_fold.das`). ## How to re-run From 7e0cadf7e5c43df61afcb697685bd52b078671e0 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 21:19:29 -0700 Subject: [PATCH 08/14] infer: hoist per-module visibility out of overload resolution inner loops In findFuncAddr / findMatchingFunctions / findMatchingFunctionsAndGenerics, the per-candidate isVisibleFunc(inWhichModule, getFunctionVisModule(pFn)) check was called once per function in mod->functionsByName[h]. Since pFn->module == mod by construction (Module::addFunction sets it), for non-generic candidates the visibility module is constant across the inner loop and the check is loop-invariant. Hoist modVis = isVisibleFunc(inWhichModule, mod) and modVisFromThis = thisModule->isVisibleDirectly(mod) to the top of each non-empty bucket; per-candidate check now only fires for fromGeneric candidates (whose visibility module is pFn->getOrigin()->module). Measured on dasImgui imgui_demo (full main.das, 13621 functions): compile-only total: 29.08s -> 24.87s (-14.5%) infer: 24.43s -> 20.19s (-17.3%) In PerfView CPU sampling, requireModule.find dropped from 9.23% -> 1.38% exclusive samples (-85% relative); InferTypes::isVisibleFunc dropped out of the top 20 hotspots. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/ast/ast_infer_type_function.cpp | 55 +++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/src/ast/ast_infer_type_function.cpp b/src/ast/ast_infer_type_function.cpp index de576da91e..6b62a615c3 100644 --- a/src/ast/ast_infer_type_function.cpp +++ b/src/ast/ast_infer_type_function.cpp @@ -77,10 +77,14 @@ namespace das { program->library.foreach ([&](Module *mod) -> bool { auto itFnList = mod->functionsByName.find(hFuncName); if ( itFnList ) { + // Hoist module-level visibility — pFn->module == mod for non-generic fns (set in addFunction). + const bool modVis = isVisibleFunc(inWhichModule, mod); auto & goodFunctions = itFnList->second; for ( auto & pFn : goodFunctions ) { // if ( pFn->isTemplate ) continue; - if ( isVisibleFunc(inWhichModule,getFunctionVisModule(pFn)) ) { + const bool funcVis = !pFn->fromGeneric ? modVis + : isVisibleFunc(inWhichModule, pFn->getOrigin()->module); + if ( funcVis ) { if ( canCallPrivate(pFn,inWhichModule,thisModule) ) { result.push_back(pFn); } @@ -391,11 +395,16 @@ namespace das { program->library.foreach ([&](Module *mod) -> bool { auto itFnList = mod->functionsByName.find(hFuncName); if ( itFnList ) { + // Hoist module-level visibility — pFn->module == mod for non-generic fns. + const bool modVis = isVisibleFunc(inWhichModule, mod); + const bool modVisFromThis = thisModule->isVisibleDirectly(mod); auto & goodFunctions = itFnList->second; for ( auto & pFn : goodFunctions ) { if ( pFn->isTemplate ) continue; - if ( isVisibleFunc(inWhichModule,getFunctionVisModule(pFn)) ) { - if ( !pFn->fromGeneric || thisModule->isVisibleDirectly(mod) ) { + const bool funcVis = !pFn->fromGeneric ? modVis + : isVisibleFunc(inWhichModule, pFn->getOrigin()->module); + if ( funcVis ) { + if ( !pFn->fromGeneric || modVisFromThis ) { if ( canCallPrivate(pFn,inWhichModule,thisModule) ) { if ( isFunctionCompatible(pFn, types, arguments, false, inferBlock) ) { result.push_back(pFn); @@ -428,12 +437,18 @@ namespace das { program->library.foreach ([&](Module *mod) -> bool { auto itFnList = mod->functionsByName.find(hFuncName); if ( itFnList ) { + // Hoist module-level visibility — pFn->module == mod for non-generic fns. + const bool modVis = visCheck ? isVisibleFunc(inWhichModule, mod) : true; + const bool modVisFromThis = thisModule->isVisibleDirectly(mod); auto & goodFunctions = itFnList->second; for ( auto & pFn : goodFunctions ) { if ( pFn->jitOnly && !jitEnabled() ) continue; if ( pFn->isTemplate ) continue; - if ( !visCheck || isVisibleFunc(inWhichModule,getFunctionVisModule(pFn) ) ) { - if ( !pFn->fromGeneric || thisModule->isVisibleDirectly(mod) ) { + const bool funcVis = !visCheck ? true + : !pFn->fromGeneric ? modVis + : isVisibleFunc(inWhichModule, pFn->getOrigin()->module); + if ( funcVis ) { + if ( !pFn->fromGeneric || modVisFromThis ) { if ( canCallPrivate(pFn,inWhichModule,thisModule) ) { if ( !argHash ) { argHash = fragile_bit_set::key(getLookupHash(types)); @@ -468,11 +483,16 @@ namespace das { { // functions auto itFnList = mod->functionsByName.find(hFuncName); if ( itFnList ) { + // Hoist module-level visibility — pFn->module == mod by construction. + const bool modVis = isVisibleFunc(inWhichModule, mod); + const bool modVisFromThis = thisModule->isVisibleDirectly(mod); auto & goodFunctions = itFnList->second; for ( auto & pFn : goodFunctions ) { if ( pFn->isTemplate ) continue; - if ( isVisibleFunc(inWhichModule,getFunctionVisModule(pFn)) ) { - if ( !pFn->fromGeneric || thisModule->isVisibleDirectly(mod) ) { + const bool funcVis = !pFn->fromGeneric ? modVis + : isVisibleFunc(inWhichModule, pFn->getOrigin()->module); + if ( funcVis ) { + if ( !pFn->fromGeneric || modVisFromThis ) { if ( canCallPrivate(pFn,inWhichModule,thisModule) ) { if ( isFunctionCompatible(pFn, types, arguments, false, inferBlock) ) { resultFunctions.push_back(pFn); @@ -486,11 +506,14 @@ namespace das { { // generics auto itFnList = mod->genericsByName.find(hFuncName); if ( itFnList ) { + const bool modVis = isVisibleFunc(inWhichModule, mod); auto & goodFunctions = itFnList->second; for ( auto & pFn : goodFunctions ) { if ( pFn->jitOnly && !jitEnabled() ) continue; if ( pFn->isTemplate ) continue; - if ( isVisibleFunc(inWhichModule,getFunctionVisModule(pFn)) ) { + const bool funcVis = !pFn->fromGeneric ? modVis + : isVisibleFunc(inWhichModule, pFn->getOrigin()->module); + if ( funcVis ) { if ( canCallPrivate(pFn,inWhichModule,thisModule) ) { if ( isFunctionCompatible(pFn, types, arguments, true, true) ) { // infer block here? resultGenerics.push_back(pFn); @@ -512,12 +535,18 @@ namespace das { { // functions auto itFnList = mod->functionsByName.find(hFuncName); if ( itFnList ) { + // Hoist module-level visibility — pFn->module == mod by construction. + const bool modVis = visCheck ? isVisibleFunc(inWhichModule, mod) : true; + const bool modVisFromThis = thisModule->isVisibleDirectly(mod); auto & goodFunctions = itFnList->second; for ( auto & pFn : goodFunctions ) { if ( pFn->jitOnly && !jitEnabled() ) continue; if ( pFn->isTemplate ) continue; - if ( !visCheck || isVisibleFunc(inWhichModule,getFunctionVisModule(pFn) ) ) { - if ( !pFn->fromGeneric || thisModule->isVisibleDirectly(mod) ) { + const bool funcVis = !visCheck ? true + : !pFn->fromGeneric ? modVis + : isVisibleFunc(inWhichModule, pFn->getOrigin()->module); + if ( funcVis ) { + if ( !pFn->fromGeneric || modVisFromThis ) { if ( !visCheck || canCallPrivate(pFn,inWhichModule,thisModule) ) { auto itLook = pFn->lookup.find_and_reserve(argHash); // if found in lookup if ( *itLook ) { @@ -541,10 +570,14 @@ namespace das { { // generics auto itFnList = mod->genericsByName.find(hFuncName); if ( itFnList ) { + const bool modVis = visCheck ? isVisibleFunc(inWhichModule, mod) : true; auto & goodFunctions = itFnList->second; for ( auto & pFn : goodFunctions ) { if ( pFn->isTemplate ) continue; - if ( !visCheck || isVisibleFunc(inWhichModule,getFunctionVisModule(pFn)) ) { + const bool funcVis = !visCheck ? true + : !pFn->fromGeneric ? modVis + : isVisibleFunc(inWhichModule, pFn->getOrigin()->module); + if ( funcVis ) { if ( !visCheck || canCallPrivate(pFn,inWhichModule,thisModule) ) { auto itLook = pFn->lookup.find_and_reserve(argHash); // if found in lookup if ( *itLook ) { From 891f56f7c26d3aab1002478a7856e12775b48a22 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 21:53:52 -0700 Subject: [PATCH 09/14] infer: lazy 2-flag subtree cache for TypeDecl::findAlias findAlias walks the TypeDecl tree (firstType / secondType / argTypes) checking each node's alias field. For TypeDecl subtrees that contain no aliases anywhere (the common case for non-generic / non-auto types), the walk yields nothing but still pays the recursion cost on every call. Add a 2-bit cache stored in two spare bits of the existing flags union: aliasCacheValid set once computeAliasCache() has run on this node aliasCacheHasAlias meaningful only when valid; true iff the subtree contains any alias at all (name-independent, allowAuto-independent) computeAliasCache() does one eager full walk and populates the flags on every visited node. findAlias() then bails in O(1) at the root when the cached state says "no aliases anywhere". For subtrees with aliases the behavior is unchanged - original recursive walk runs. The cache bits are NOT cloned - both the copy ctor and the in-place TypeDecl::clone reset them so clones start fresh and recompute lazily. Stored in spare bitfield slots (uint32_t flags already had room) rather than a separate byte, so sizeof(TypeDecl) is unchanged and the shared_module ABI is preserved. Measured on dasImgui imgui_demo (full main.das, 13621 functions, on top of the prior infer-visibility hoist): compile-only total: 24.87s -> ~23.5s (-5-7%) infer: 20.19s -> ~18.8s (-7%) Cumulative vs original baseline (29.08s / 24.43s infer): total: -19% infer: -22% Full dastest suite: 9302 tests, 9302 passed. Co-Authored-By: Claude Opus 4.7 (1M context) --- include/daScript/ast/ast_typedecl.h | 3 +++ src/ast/ast_typedecl.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/daScript/ast/ast_typedecl.h b/include/daScript/ast/ast_typedecl.h index aa194466de..d804ef01f8 100644 --- a/include/daScript/ast/ast_typedecl.h +++ b/include/daScript/ast/ast_typedecl.h @@ -224,6 +224,7 @@ namespace das { static void updateAliasMap ( const TypeDeclPtr & decl, const TypeDeclPtr & pass, AliasMap & aliases, OptionsMap & options ); Type getRangeBaseType() const; TypeDecl * findAlias ( const string & name, bool allowAuto = false ); + bool computeAliasCache(); // eager full walk, populates aliasCacheValid/aliasCacheHasAlias on every visited node; returns true if subtree contains any alias int findArgumentIndex(const string & name) const; int tupleFieldIndex( const string & name ) const; int variantFieldIndex( const string & name ) const; @@ -284,6 +285,8 @@ namespace das { // unsigned-underlying enum (uint8/uint16/uint64). Lets `int(uint8Enum)` // resolve to enum8u_to_int instead of enum8_to_int so the byte // zero-extends instead of sign-extending. + bool aliasCacheValid : 1; // findAlias subtree cache validity flag + bool aliasCacheHasAlias : 1; // findAlias subtree cache result (only meaningful when aliasCacheValid) }; uint32_t flags = 0; }; diff --git a/src/ast/ast_typedecl.cpp b/src/ast/ast_typedecl.cpp index 02c72a3a73..325b373128 100644 --- a/src/ast/ast_typedecl.cpp +++ b/src/ast/ast_typedecl.cpp @@ -874,6 +874,8 @@ namespace das } } flags = decl.flags; + aliasCacheValid = false; // not cloned — recompute lazily + aliasCacheHasAlias = false; alias = decl.alias; at = decl.at; module = decl.module; @@ -916,6 +918,8 @@ namespace das } } dest->flags = src->flags; + dest->aliasCacheValid = false; // not cloned — recompute lazily + dest->aliasCacheHasAlias = false; dest->alias = src->alias; dest->at = src->at; dest->module = src->module; @@ -944,7 +948,27 @@ namespace das if ( annotation ) annotation->gc_collect(target, from); } + bool TypeDecl::computeAliasCache() { + // Eager full walk independent of name/allowAuto. Sets aliasCache* on every visited node. + // alias-type subtrees are dead ends for findAlias, so treated as NoAlias. + if (baseType == Type::alias) { + aliasCacheValid = true; + aliasCacheHasAlias = false; + return false; + } + bool hasAny = !alias.empty(); + if (firstType && firstType->computeAliasCache()) hasAny = true; + if (secondType && secondType->computeAliasCache()) hasAny = true; + for (auto & arg : argTypes) { + if (arg && arg->computeAliasCache()) hasAny = true; + } + aliasCacheValid = true; + aliasCacheHasAlias = hasAny; + return hasAny; + } TypeDecl * TypeDecl::findAlias ( const string & name, bool allowAuto ) { + if (!aliasCacheValid) computeAliasCache(); + if (!aliasCacheHasAlias) return nullptr; // proven no aliases anywhere if (baseType == Type::alias) { return nullptr; // if it is another alias, can't find it } else if (baseType == Type::autoinfer && !allowAuto) { From b7b751329f63c05cd3e790f8eaff1bbb1e7e6dda Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 22:16:48 -0700 Subject: [PATCH 10/14] mingw CI: install git in msys2 shell for self-binder diff check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit setup-msys2 doesn't ship git by default, and the msys2 shell doesn't inherit Windows PATH, so `git diff --exit-code` in the bind_clangbind self-binder step failed with "git: command not found". The regen itself ran cleanly (msys2 22.1.4 produces byte-identical output to the LLVM 22.1.5 headers used for the committed regen) — only the diff check stumbled. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d22fb3c163..41af53682c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -509,6 +509,7 @@ jobs: mingw-w64-clang-x86_64-openssl mingw-w64-clang-x86_64-glfw bison + git - name: "Build: Daslang (clang-mingw64)" run: | From 9f70413af789ec069ad0f231ae2c63cb14d2a5e7 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 22:38:30 -0700 Subject: [PATCH 11/14] gitattributes: pin dasClangBind generated files to LF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The mingw CI worker re-runs bind_clangbind.das to detect regen drift. Without eol=lf, msys2 git checks out the committed LF-blob files as CRLF (autocrlf=true default), and the regen writes LF — every line shows as changed, self-binder fails. Co-Authored-By: Claude Opus 4.7 (1M context) --- .gitattributes | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitattributes b/.gitattributes index 8aba92bef1..af845dccfc 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7,3 +7,11 @@ daslib/_aot_generated/*.cpp binary # Shell scripts must keep LF endings even when checked out under autocrlf=true. *.sh text eol=lf + +# dasClangBind generated bindings: emit LF on every platform. The mingw +# CI worker re-runs bind_clangbind.das to detect regen drift; without +# eol=lf, autocrlf-true on the Windows runner checks out CRLF and the +# regen (which writes LF) reports every line as changed. +modules/dasClangBind/src/*.cpp text eol=lf +modules/dasClangBind/src/*.h text eol=lf +modules/dasClangBind/src/*.inc text eol=lf From be65403480706e264b88c0a8f51512b41b961721 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 22:39:36 -0700 Subject: [PATCH 12/14] PR #2849 Copilot: short-circuit computeAliasCache on already-valid nodes Mirrors findAlias's own line 970 pattern so a parent's eager walk doesn't re-recurse into already-computed children (when findAlias was called on an intermediate node before the root). Premise as Copilot stated it (shared subtrees) doesn't apply to AST nodes per gc_node unique-ownership; but the call-on-child-before-parent case is real, and the one-liner is self-consistent with the file's pattern. Perf-neutral on imgui_demo.das compile (8-run avg 20.30s vs 3-run pre 20.51s, within ~1s noise spread). Land for stylistic consistency, not a measured speedup. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/ast/ast_typedecl.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ast/ast_typedecl.cpp b/src/ast/ast_typedecl.cpp index 325b373128..f3b2b5eb7d 100644 --- a/src/ast/ast_typedecl.cpp +++ b/src/ast/ast_typedecl.cpp @@ -951,6 +951,7 @@ namespace das bool TypeDecl::computeAliasCache() { // Eager full walk independent of name/allowAuto. Sets aliasCache* on every visited node. // alias-type subtrees are dead ends for findAlias, so treated as NoAlias. + if (aliasCacheValid) return aliasCacheHasAlias; if (baseType == Type::alias) { aliasCacheValid = true; aliasCacheHasAlias = false; From e2c1dbf672697a52c2d38bdd0a22c35455db86e5 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 23:05:48 -0700 Subject: [PATCH 13/14] mingw CI: drop diff-check from self-binder; verify runs only The bind_clangbind regen emits libclang-reported source paths in '// from ...' comments. Those paths aren't canonical across --clang_path invocations on Windows: forward-slash form (D:/...) gives include-relative paths, cygpath -w form (C:\...) gives absolute. So the diff-check trips on path-format drift between local and CI invocations. Keep the self-binder step (catches binder-side breakage like API loss or module-load failures), drop the git diff --exit-code. A proper fix (strip path prefix to basename in cbind_boost.das when emitting source-location comments) is a follow-up. --- .github/workflows/build.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 41af53682c..d82651f91f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -556,6 +556,13 @@ jobs: # a separate SO chain, and the mingw worker doesn't exercise JIT-uses- # dasClangBind paths, so they coexist cleanly. # + # No `git diff --exit-code` here: the regen emits libclang's reported + # source-file paths in `// from ...` comments, and those paths aren't + # canonical across --clang_path invocations on Windows (forward-slash + # form vs `cygpath -w` mixed-separator form). Verifies "binder runs + # end-to-end" only, not "regen output is byte-canonical". A proper + # fix (strip path prefix in cbind_boost.das) is a follow-up. + # # TODO: bind_llvm.das self-binder doesn't run on mingw — libclang as # library doesn't find via msys2's libcxx auto-detection. # Needs explicit -resource-dir / -isystem injection. Tracked as a @@ -566,6 +573,4 @@ jobs: set -eux CLANG_INCLUDE="$(cygpath -w "${MSYSTEM_PREFIX}/include")" ./bin/daslang.exe modules/dasClangBind/bind/bind_clangbind.das -- --clang_path "${CLANG_INCLUDE}/" - git diff --exit-code -- modules/dasClangBind/src/ \ - || (echo "ERROR: dasClangBind generated files are out of date. Run './bin/daslang modules/dasClangBind/bind/bind_clangbind.das -- --clang_path ' locally and commit the result." && exit 1) From 3367ade6588206bada120a8f8f9f45261bb34c88 Mon Sep 17 00:00:00 2001 From: Boris Batkin Date: Sat, 23 May 2026 23:42:57 -0700 Subject: [PATCH 14/14] cbind_boost: normalize PARSE_FILE_PREFIX so prefix-strip survives backslash paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #2846. The `// from ...` source-location comments in generated bindings are emitted by clang_getCursorLocationDescription, which strips PARSE_FILE_PREFIX from libclang's reported path so the output stays stable across install locations. cursor-side paths are normalized to forward slashes (clang_getCursorLocationFullPath line 159), but PARSE_FILE_PREFIX itself was stored as-is — when callers passed a backslash form (`C:\msys64\clang64\include/`, e.g. via `cygpath -w` on the mingw CI runner), the `starts_with` check failed and the full absolute path leaked into the regen output. Normalize PARSE_FILE_PREFIX in init_args the same way, so the prefix- strip works for every OS/path-form combination. Verified locally: regen with `C:\msys64\clang64\include/` (backslash, CI-mingw style) and `C:/msys64/clang64/include/` (forward-slash, my local style) now produce byte-identical output. Re-enabled the `git diff --exit-code` self-binder check on the mingw worker (the PR #2846 fallback dropped it because of this drift). Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/build.yml | 9 ++------- modules/dasClangBind/cbind/cbind_boost.das | 7 ++++++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d82651f91f..41af53682c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -556,13 +556,6 @@ jobs: # a separate SO chain, and the mingw worker doesn't exercise JIT-uses- # dasClangBind paths, so they coexist cleanly. # - # No `git diff --exit-code` here: the regen emits libclang's reported - # source-file paths in `// from ...` comments, and those paths aren't - # canonical across --clang_path invocations on Windows (forward-slash - # form vs `cygpath -w` mixed-separator form). Verifies "binder runs - # end-to-end" only, not "regen output is byte-canonical". A proper - # fix (strip path prefix in cbind_boost.das) is a follow-up. - # # TODO: bind_llvm.das self-binder doesn't run on mingw — libclang as # library doesn't find via msys2's libcxx auto-detection. # Needs explicit -resource-dir / -isystem injection. Tracked as a @@ -573,4 +566,6 @@ jobs: set -eux CLANG_INCLUDE="$(cygpath -w "${MSYSTEM_PREFIX}/include")" ./bin/daslang.exe modules/dasClangBind/bind/bind_clangbind.das -- --clang_path "${CLANG_INCLUDE}/" + git diff --exit-code -- modules/dasClangBind/src/ \ + || (echo "ERROR: dasClangBind generated files are out of date. Run './bin/daslang modules/dasClangBind/bind/bind_clangbind.das -- --clang_path ' locally and commit the result." && exit 1) diff --git a/modules/dasClangBind/cbind/cbind_boost.das b/modules/dasClangBind/cbind/cbind_boost.das index 3838f7bc6b..f50c2860a3 100644 --- a/modules/dasClangBind/cbind/cbind_boost.das +++ b/modules/dasClangBind/cbind/cbind_boost.das @@ -236,7 +236,12 @@ class AnyGenBind { } def init_args(pfn, pfp : string; args : array) { PARSE_FILE_NAME = pfn - PARSE_FILE_PREFIX = pfp + // Normalize backslashes — libclang's cursor-location paths (see + // clang_getCursorLocationFullPath) come back with forward slashes, + // so for the starts_with prefix-strip in + // clang_getCursorLocationDescription to match on every OS+path-form + // combination the stored prefix must use forward slashes too. + PARSE_FILE_PREFIX = pfp |> replace_multiple([(text = "\\", replacement = "/")]) ARGV := args } def openFile(path : string) {