Showing preview only (6,749K chars total). Download the full file or copy to clipboard to get everything.
Repository: brndnmtthws/conky
Branch: main
Commit: 2c8f4669dad7
Files: 673
Total size: 6.3 MB
Directory structure:
gitextract_8_7cfln5/
├── .clang-format
├── .clang-tidy
├── .dockerignore
├── .editorconfig
├── .envrc
├── .git-blame-ignore-revs
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── config.yml
│ ├── dependabot.yml
│ ├── instructions/
│ │ ├── cmake-review.instructions.md
│ │ ├── cpp-review.instructions.md
│ │ └── workflow-review.instructions.md
│ ├── labeler.yml
│ ├── pull_request_template.md
│ ├── release.yml
│ ├── scripts/
│ │ ├── docker-build.bash
│ │ └── setup-sccache.sh
│ └── workflows/
│ ├── build-and-test-linux.yaml
│ ├── build-and-test-macos.yaml
│ ├── codeql.yml
│ ├── docker.yaml
│ ├── labeler.yml
│ ├── nix.yaml
│ ├── publish-appimage.yml
│ ├── stale.yml
│ └── web.yml
├── .gitignore
├── .prettierrc.cjs
├── .vscode/
│ └── extensions.json
├── 3rdparty/
│ ├── CMakeLists.txt
│ ├── Vc/
│ │ ├── .clang-format
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── Vc/
│ │ │ ├── Allocator
│ │ │ ├── IO
│ │ │ ├── Memory
│ │ │ ├── SimdArray
│ │ │ ├── Utils
│ │ │ ├── Vc
│ │ │ ├── algorithm
│ │ │ ├── array
│ │ │ ├── avx/
│ │ │ │ ├── casts.h
│ │ │ │ ├── const.h
│ │ │ │ ├── const_data.h
│ │ │ │ ├── debug.h
│ │ │ │ ├── deinterleave.tcc
│ │ │ │ ├── detail.h
│ │ │ │ ├── helperimpl.h
│ │ │ │ ├── intrinsics.h
│ │ │ │ ├── limits.h
│ │ │ │ ├── macros.h
│ │ │ │ ├── mask.h
│ │ │ │ ├── mask.tcc
│ │ │ │ ├── math.h
│ │ │ │ ├── shuffle.h
│ │ │ │ ├── simd_cast.h
│ │ │ │ ├── simd_cast_caller.tcc
│ │ │ │ ├── types.h
│ │ │ │ ├── vector.h
│ │ │ │ ├── vector.tcc
│ │ │ │ └── vectorhelper.h
│ │ │ ├── common/
│ │ │ │ ├── algorithms.h
│ │ │ │ ├── aliasingentryhelper.h
│ │ │ │ ├── alignedbase.h
│ │ │ │ ├── bitscanintrinsics.h
│ │ │ │ ├── const.h
│ │ │ │ ├── data.h
│ │ │ │ ├── deinterleave.h
│ │ │ │ ├── detail.h
│ │ │ │ ├── elementreference.h
│ │ │ │ ├── exponential.h
│ │ │ │ ├── fix_clang_emmintrin.h
│ │ │ │ ├── gatherimplementation.h
│ │ │ │ ├── gatherinterface.h
│ │ │ │ ├── gatherinterface_deprecated.h
│ │ │ │ ├── generalinterface.h
│ │ │ │ ├── iif.h
│ │ │ │ ├── indexsequence.h
│ │ │ │ ├── interleave.h
│ │ │ │ ├── interleavedmemory.h
│ │ │ │ ├── iterators.h
│ │ │ │ ├── loadinterface.h
│ │ │ │ ├── loadstoreflags.h
│ │ │ │ ├── logarithm.h
│ │ │ │ ├── macros.h
│ │ │ │ ├── makeContainer.h
│ │ │ │ ├── make_unique.h
│ │ │ │ ├── malloc.h
│ │ │ │ ├── mask.h
│ │ │ │ ├── maskbool.h
│ │ │ │ ├── math.h
│ │ │ │ ├── memory.h
│ │ │ │ ├── memorybase.h
│ │ │ │ ├── memoryfwd.h
│ │ │ │ ├── operators.h
│ │ │ │ ├── permutation.h
│ │ │ │ ├── scatterimplementation.h
│ │ │ │ ├── scatterinterface.h
│ │ │ │ ├── scatterinterface_deprecated.h
│ │ │ │ ├── set.h
│ │ │ │ ├── simd_cast.h
│ │ │ │ ├── simd_cast_caller.tcc
│ │ │ │ ├── simdarray.h
│ │ │ │ ├── simdarrayfwd.h
│ │ │ │ ├── simdarrayhelper.h
│ │ │ │ ├── simdize.h
│ │ │ │ ├── simdmaskarray.h
│ │ │ │ ├── span.h
│ │ │ │ ├── storage.h
│ │ │ │ ├── storeinterface.h
│ │ │ │ ├── subscript.h
│ │ │ │ ├── support.h
│ │ │ │ ├── transpose.h
│ │ │ │ ├── trigonometric.h
│ │ │ │ ├── types.h
│ │ │ │ ├── utility.h
│ │ │ │ ├── vector/
│ │ │ │ │ └── casts.h
│ │ │ │ ├── vector.h
│ │ │ │ ├── vectorabi.h
│ │ │ │ ├── vectortraits.h
│ │ │ │ ├── vectortuple.h
│ │ │ │ ├── where.h
│ │ │ │ ├── writemaskedvector.h
│ │ │ │ └── x86_prefetches.h
│ │ │ ├── cpuid.h
│ │ │ ├── fwddecl.h
│ │ │ ├── global.h
│ │ │ ├── iterators
│ │ │ ├── limits
│ │ │ ├── scalar/
│ │ │ │ ├── detail.h
│ │ │ │ ├── helperimpl.h
│ │ │ │ ├── limits.h
│ │ │ │ ├── macros.h
│ │ │ │ ├── mask.h
│ │ │ │ ├── math.h
│ │ │ │ ├── operators.h
│ │ │ │ ├── simd_cast.h
│ │ │ │ ├── simd_cast_caller.tcc
│ │ │ │ ├── type_traits.h
│ │ │ │ ├── types.h
│ │ │ │ ├── vector.h
│ │ │ │ └── vector.tcc
│ │ │ ├── simdize
│ │ │ ├── span
│ │ │ ├── sse/
│ │ │ │ ├── casts.h
│ │ │ │ ├── const.h
│ │ │ │ ├── const_data.h
│ │ │ │ ├── debug.h
│ │ │ │ ├── deinterleave.tcc
│ │ │ │ ├── detail.h
│ │ │ │ ├── helperimpl.h
│ │ │ │ ├── intrinsics.h
│ │ │ │ ├── limits.h
│ │ │ │ ├── macros.h
│ │ │ │ ├── mask.h
│ │ │ │ ├── mask.tcc
│ │ │ │ ├── math.h
│ │ │ │ ├── prefetches.tcc
│ │ │ │ ├── shuffle.h
│ │ │ │ ├── simd_cast.h
│ │ │ │ ├── simd_cast_caller.tcc
│ │ │ │ ├── type_traits.h
│ │ │ │ ├── types.h
│ │ │ │ ├── vector.h
│ │ │ │ ├── vector.tcc
│ │ │ │ ├── vectorhelper.h
│ │ │ │ └── vectorhelper.tcc
│ │ │ ├── support.h
│ │ │ ├── traits/
│ │ │ │ ├── decay.h
│ │ │ │ ├── entry_type_of.h
│ │ │ │ ├── has_addition_operator.h
│ │ │ │ ├── has_contiguous_storage.h
│ │ │ │ ├── has_equality_operator.h
│ │ │ │ ├── has_multiply_operator.h
│ │ │ │ ├── has_no_allocated_data.h
│ │ │ │ ├── has_subscript_operator.h
│ │ │ │ ├── is_functor_argument_immutable.h
│ │ │ │ ├── is_implicit_cast_allowed.h
│ │ │ │ ├── is_index_sequence.h
│ │ │ │ ├── is_output_iterator.h
│ │ │ │ └── type_traits.h
│ │ │ ├── type_traits
│ │ │ ├── vector
│ │ │ ├── vector.h
│ │ │ └── version.h
│ │ ├── cmake/
│ │ │ ├── AddCompilerFlag.cmake
│ │ │ ├── AddTargetProperty.cmake
│ │ │ ├── CheckCCompilerFlag.cmake
│ │ │ ├── CheckCXXCompilerFlag.cmake
│ │ │ ├── FindVc.cmake
│ │ │ ├── OptimizeForArchitecture.cmake
│ │ │ ├── UserWarning.cmake
│ │ │ ├── VcConfig.cmake.in
│ │ │ ├── VcMacros.cmake
│ │ │ ├── toolchain-arm-linux-gnueabi-gcc.cmake
│ │ │ └── toolchain-arm-linux.cmake
│ │ ├── print_target_architecture.cmake
│ │ └── src/
│ │ ├── avx_sorthelper.cpp
│ │ ├── const.cpp
│ │ ├── cpuid.cpp
│ │ ├── sse_sorthelper.cpp
│ │ ├── support_dummy.cpp
│ │ ├── support_x86.cpp
│ │ └── trigonometric.cpp
│ └── toluapp/
│ ├── .gitignore
│ ├── .travis.yml
│ ├── CMakeLists.txt
│ ├── COPYRIGHT
│ ├── INSTALL
│ ├── README-5.1
│ ├── README.md
│ ├── SConstruct
│ ├── cmake/
│ │ ├── dist.cmake
│ │ └── lua.cmake
│ ├── config_linux.py
│ ├── config_msvc.py
│ ├── config_posix.py
│ ├── custom-5.1.py
│ ├── debian/
│ │ ├── README.Debian
│ │ ├── changelog
│ │ ├── compat
│ │ ├── conffiles.ex
│ │ ├── control
│ │ ├── copyright
│ │ ├── cron.d.ex
│ │ ├── dirs
│ │ ├── docs
│ │ ├── emacsen-install.ex
│ │ ├── emacsen-remove.ex
│ │ ├── emacsen-startup.ex
│ │ ├── init.d.ex
│ │ ├── manpage.1.ex
│ │ ├── manpage.sgml.ex
│ │ ├── manpage.xml.ex
│ │ ├── menu.ex
│ │ ├── postinst.ex
│ │ ├── postrm.ex
│ │ ├── preinst.ex
│ │ ├── prerm.ex
│ │ ├── rules
│ │ ├── tolua++-default.ex
│ │ ├── tolua++.doc-base.EX
│ │ └── watch.ex
│ ├── dist.info
│ ├── doc/
│ │ ├── index.html
│ │ └── tolua++.html
│ ├── include/
│ │ └── tolua++.h
│ ├── libtoluapp.def
│ ├── src/
│ │ ├── bin/
│ │ │ ├── SCsub
│ │ │ ├── lua/
│ │ │ │ ├── all.lua
│ │ │ │ ├── array.lua
│ │ │ │ ├── basic.lua
│ │ │ │ ├── class.lua
│ │ │ │ ├── clean.lua
│ │ │ │ ├── code.lua
│ │ │ │ ├── compat-5.1.lua
│ │ │ │ ├── compat.lua
│ │ │ │ ├── container.lua
│ │ │ │ ├── custom.lua
│ │ │ │ ├── declaration.lua
│ │ │ │ ├── define.lua
│ │ │ │ ├── doit.lua
│ │ │ │ ├── enumerate.lua
│ │ │ │ ├── feature.lua
│ │ │ │ ├── function.lua
│ │ │ │ ├── module.lua
│ │ │ │ ├── namespace.lua
│ │ │ │ ├── operator.lua
│ │ │ │ ├── ordered_pairs.lua
│ │ │ │ ├── package.lua
│ │ │ │ ├── template_class.lua
│ │ │ │ ├── typedef.lua
│ │ │ │ ├── variable.lua
│ │ │ │ └── verbatim.lua
│ │ │ ├── tolua.c
│ │ │ ├── tolua_scons.pkg
│ │ │ ├── toluabind.c
│ │ │ ├── toluabind.h
│ │ │ ├── toluabind_default.c
│ │ │ └── toluabind_default.h
│ │ ├── lib/
│ │ │ ├── SCsub
│ │ │ ├── tolua_event.c
│ │ │ ├── tolua_event.h
│ │ │ ├── tolua_is.c
│ │ │ ├── tolua_map.c
│ │ │ ├── tolua_push.c
│ │ │ └── tolua_to.c
│ │ └── tests/
│ │ ├── SCsub
│ │ ├── tarray.c
│ │ ├── tarray.h
│ │ ├── tarray.lua
│ │ ├── tarray.pkg
│ │ ├── tarraybind.c
│ │ ├── tclass.cpp
│ │ ├── tclass.h
│ │ ├── tclass.lua
│ │ ├── tclass.pkg
│ │ ├── tconstant.h
│ │ ├── tconstant.lua
│ │ ├── tconstant.pkg
│ │ ├── tdirective.lua
│ │ ├── tdirective.pkg
│ │ ├── tdirectivebind.c
│ │ ├── tdirectivelua.lua
│ │ ├── tdirectivepkg.pkg
│ │ ├── tfunction.h
│ │ ├── tfunction.lua
│ │ ├── tfunction.pkg
│ │ ├── tmodule.c
│ │ ├── tmodule.h
│ │ ├── tmodule.lua
│ │ ├── tmodule.pkg
│ │ ├── tmodulebind.c
│ │ ├── tnamespace.h
│ │ ├── tnamespace.lua
│ │ ├── tnamespace.pkg
│ │ ├── tvariable.c
│ │ ├── tvariable.h
│ │ ├── tvariable.lua
│ │ ├── tvariable.pkg
│ │ └── tvariablebind.c
│ └── win32/
│ └── vc7/
│ ├── toluapp.sln
│ └── toluapp.vcproj
├── AGENTS.md
├── AUTHORS
├── CMakeLists.txt
├── COPYING
├── Dockerfile
├── LICENSE.BSD
├── LICENSE.md
├── README.cmake
├── README.md
├── appimage/
│ ├── build.sh
│ └── pubkey.asc
├── bin/
│ ├── changelog2html.py
│ ├── check-style.sh
│ ├── check_docs.py
│ ├── clang-tidy-diff.py
│ ├── format-colors.sh
│ ├── run-clang-format.py
│ └── text2c.sh
├── cmake/
│ ├── CCache.cmake
│ ├── Catch.cmake
│ ├── CatchAddTests.cmake
│ ├── CodeCoverage.cmake
│ ├── Conky.cmake
│ ├── ConkyBuildOptions.cmake
│ ├── ConkyCPackSetup.cmake
│ ├── ConkyPlatformChecks.cmake
│ ├── DependentOption.cmake
│ ├── FindClangFormat.cmake
│ ├── FindClangTidy.cmake
│ ├── FindWayland.cmake
│ ├── ToLua.cmake
│ ├── UninstallConky.cmake.in
│ ├── build.h.in
│ ├── clang-format.cmake
│ ├── clang-tidy.cmake
│ ├── config.h.in
│ └── scripts/
│ ├── clang-format-check-changed
│ └── clang-format-check-changed.py
├── data/
│ ├── CMakeLists.txt
│ ├── color-names.yml
│ ├── conky-dfly-smp.conf
│ ├── conky.conf
│ ├── conky.desktop
│ └── conky_no_x11.conf
├── doc/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── config_settings.yaml
│ ├── lua.yaml
│ ├── man.md.j2
│ ├── render.py
│ └── variables.yaml
├── extras/
│ ├── CMakeLists.txt
│ ├── convert.lua
│ ├── gedit/
│ │ └── conky.lang
│ ├── git_ranked.py
│ ├── nano/
│ │ └── conky.nanorc.j2
│ └── vim/
│ ├── ftdetect/
│ │ └── conkyrc.vim
│ └── syntax/
│ └── conkyrc.vim.j2
├── flake.nix
├── lefthook.yml
├── lua/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── cairo.pkg
│ ├── cairo_imlib2_helper.pkg
│ ├── cairo_text_helper.pkg
│ ├── cairo_xlib.pkg
│ ├── imlib2.pkg
│ ├── imlib2_old.pkg
│ ├── libcairo-helper.h
│ ├── libcairo.patch
│ ├── libcairo_imlib2_helper.h
│ ├── libcairo_text_helper.h
│ ├── librsvg-helper.h
│ ├── rsvg.pkg
│ └── text.pkg
├── requirements-dev.txt
├── src/
│ ├── CMakeLists.txt
│ ├── build.h.in
│ ├── c++wrap.cc
│ ├── c++wrap.hh
│ ├── common.cc
│ ├── common.h
│ ├── conky-imlib2.cc
│ ├── conky-imlib2.h
│ ├── conky.cc
│ ├── conky.h
│ ├── content/
│ │ ├── algebra.cc
│ │ ├── algebra.h
│ │ ├── colour-names-stub.hh
│ │ ├── colours.cc
│ │ ├── colours.hh
│ │ ├── combine.cc
│ │ ├── combine.h
│ │ ├── gradient.cc
│ │ ├── gradient.hh
│ │ ├── scroll.cc
│ │ ├── scroll.h
│ │ ├── specials.cc
│ │ ├── specials.h
│ │ ├── temphelper.cc
│ │ ├── temphelper.h
│ │ ├── template.cc
│ │ ├── template.h
│ │ ├── text_object.cc
│ │ └── text_object.h
│ ├── core.cc
│ ├── core.h
│ ├── data/
│ │ ├── audio/
│ │ │ ├── audacious.cc
│ │ │ ├── audacious.h
│ │ │ ├── cmus.cc
│ │ │ ├── cmus.h
│ │ │ ├── libmpdclient.cc
│ │ │ ├── libmpdclient.h
│ │ │ ├── mixer.cc
│ │ │ ├── mixer.h
│ │ │ ├── moc.cc
│ │ │ ├── moc.h
│ │ │ ├── mpd.cc
│ │ │ ├── mpd.h
│ │ │ ├── pulseaudio.cc
│ │ │ ├── pulseaudio.h
│ │ │ ├── xmms2.cc
│ │ │ └── xmms2.h
│ │ ├── data-source.cc
│ │ ├── data-source.hh
│ │ ├── entropy.cc
│ │ ├── entropy.h
│ │ ├── exec.cc
│ │ ├── exec.h
│ │ ├── fs.cc
│ │ ├── fs.h
│ │ ├── hardware/
│ │ │ ├── apcupsd.cc
│ │ │ ├── apcupsd.h
│ │ │ ├── bsdapm.cc
│ │ │ ├── bsdapm.h
│ │ │ ├── cpu.cc
│ │ │ ├── cpu.h
│ │ │ ├── diskio.cc
│ │ │ ├── diskio.h
│ │ │ ├── hddtemp.cc
│ │ │ ├── hddtemp.h
│ │ │ ├── i8k.cc
│ │ │ ├── i8k.h
│ │ │ ├── ibm.cc
│ │ │ ├── ibm.h
│ │ │ ├── intel_backlight.cc
│ │ │ ├── intel_backlight.h
│ │ │ ├── nvidia.cc
│ │ │ ├── nvidia.h
│ │ │ ├── smapi.cc
│ │ │ ├── smapi.h
│ │ │ ├── sony.cc
│ │ │ └── sony.h
│ │ ├── ical.cc
│ │ ├── ical.h
│ │ ├── iconv_tools.cc
│ │ ├── iconv_tools.h
│ │ ├── misc.cc
│ │ ├── misc.h
│ │ ├── mysql.cc
│ │ ├── mysql.h
│ │ ├── network/
│ │ │ ├── ccurl_thread.cc
│ │ │ ├── ccurl_thread.h
│ │ │ ├── irc.cc
│ │ │ ├── irc.h
│ │ │ ├── libtcp-portmon.cc
│ │ │ ├── libtcp-portmon.h
│ │ │ ├── mail.cc
│ │ │ ├── mail.h
│ │ │ ├── mboxscan.cc
│ │ │ ├── mboxscan.h
│ │ │ ├── net_stat.cc
│ │ │ ├── net_stat.h
│ │ │ ├── prss.cc
│ │ │ ├── prss.h
│ │ │ ├── read_tcpip.cc
│ │ │ ├── read_tcpip.h
│ │ │ ├── rss.cc
│ │ │ ├── rss.h
│ │ │ ├── tcp-portmon.cc
│ │ │ └── tcp-portmon.h
│ │ ├── os/
│ │ │ ├── bsdcommon.cc
│ │ │ ├── bsdcommon.h
│ │ │ ├── darwin.h
│ │ │ ├── darwin.mm
│ │ │ ├── darwin_sip.h
│ │ │ ├── darwin_top_helpers.cc
│ │ │ ├── darwin_top_helpers.h
│ │ │ ├── dragonfly.cc
│ │ │ ├── dragonfly.h
│ │ │ ├── freebsd.cc
│ │ │ ├── freebsd.h
│ │ │ ├── haiku.cc
│ │ │ ├── haiku.h
│ │ │ ├── journal.cc
│ │ │ ├── journal.h
│ │ │ ├── linux.cc
│ │ │ ├── linux.h
│ │ │ ├── netbsd.cc
│ │ │ ├── netbsd.h
│ │ │ ├── openbsd.cc
│ │ │ ├── openbsd.h
│ │ │ ├── solaris.cc
│ │ │ └── solaris.h
│ │ ├── proc.cc
│ │ ├── proc.h
│ │ ├── tailhead.cc
│ │ ├── tailhead.h
│ │ ├── timeinfo.cc
│ │ ├── timeinfo.h
│ │ ├── top.cc
│ │ ├── top.h
│ │ ├── user.cc
│ │ ├── user.h
│ │ ├── users.cc
│ │ └── users.h
│ ├── geometry.h
│ ├── i18n.h
│ ├── logging.h
│ ├── lua/
│ │ ├── colour-settings.cc
│ │ ├── colour-settings.hh
│ │ ├── fonts.cc
│ │ ├── fonts.h
│ │ ├── llua.cc
│ │ ├── llua.h
│ │ ├── lua-config.cc
│ │ ├── lua-config.hh
│ │ ├── luamm.cc
│ │ ├── luamm.hh
│ │ ├── setting.cc
│ │ ├── setting.hh
│ │ ├── x11-settings.cc
│ │ └── x11-settings.h
│ ├── macros.h
│ ├── main.cc
│ ├── mouse-events.cc
│ ├── mouse-events.h
│ ├── output/
│ │ ├── display-console.cc
│ │ ├── display-console.hh
│ │ ├── display-file.cc
│ │ ├── display-file.hh
│ │ ├── display-http.cc
│ │ ├── display-http.hh
│ │ ├── display-ncurses.cc
│ │ ├── display-ncurses.hh
│ │ ├── display-output.cc
│ │ ├── display-output.hh
│ │ ├── display-wayland.cc
│ │ ├── display-wayland.hh
│ │ ├── display-x11.cc
│ │ ├── display-x11.hh
│ │ ├── gui.cc
│ │ ├── gui.h
│ │ ├── nc.cc
│ │ ├── nc.h
│ │ ├── wl.cc
│ │ ├── wl.h
│ │ ├── x11-color.cc
│ │ ├── x11.cc
│ │ └── x11.h
│ ├── prioqueue.cc
│ ├── prioqueue.h
│ ├── semaphore.hh
│ ├── update-cb.cc
│ ├── update-cb.hh
│ └── wl_protocols/
│ └── wlr-layer-shell-unstable-v1.xml
├── tests/
│ ├── CMakeLists.txt
│ ├── catch2/
│ │ ├── catch.hpp
│ │ ├── catch_amalgamated.cpp
│ │ └── catch_amalgamated.hpp
│ ├── dockerfiles/
│ │ ├── Dockerfile.alpine-base
│ │ ├── Dockerfile.alpine-clang
│ │ ├── Dockerfile.alpine-gcc
│ │ ├── Dockerfile.archlinux-base
│ │ ├── Dockerfile.archlinux-clang
│ │ ├── Dockerfile.archlinux-gcc
│ │ ├── Dockerfile.fedora-31-base
│ │ ├── Dockerfile.fedora-31-clang-8
│ │ ├── Dockerfile.fedora-32-base
│ │ ├── Dockerfile.fedora-32-clang-10
│ │ ├── Dockerfile.fedora-33-base
│ │ ├── Dockerfile.fedora-33-clang-11
│ │ ├── Dockerfile.ubuntu-base
│ │ ├── Dockerfile.ubuntu-clang-10
│ │ ├── Dockerfile.ubuntu-clang-11
│ │ ├── Dockerfile.ubuntu-clang-9
│ │ ├── Dockerfile.ubuntu-gcc-10
│ │ ├── Dockerfile.ubuntu-gcc-7
│ │ ├── Dockerfile.ubuntu-gcc-8
│ │ └── Dockerfile.ubuntu-gcc-9
│ ├── llvm-gcov.sh
│ ├── test-algebra.cc
│ ├── test-colours.cc
│ ├── test-common.cc
│ ├── test-conky.cc
│ ├── test-core.cc
│ ├── test-darwin-top.cc
│ ├── test-darwin.cc
│ ├── test-diskio.cc
│ ├── test-fs.cc
│ ├── test-gradient.cc
│ ├── test-graph.cc
│ ├── test-linux-proc.cc
│ ├── test-linux.cc
│ └── test-security.cc
└── web/
├── .gitignore
├── components/
│ ├── CopyleftIcon.tsx
│ ├── Docs.tsx
│ ├── Doggy.tsx
│ ├── Footer.tsx
│ ├── Header.tsx
│ ├── Layout.tsx
│ ├── SEO.tsx
│ ├── Search.tsx
│ └── ThemeSwitcher.tsx
├── cypress/
│ └── e2e/
│ └── basic.cy.js
├── cypress.config.js
├── documents/
│ ├── about.mdx
│ ├── compiling.mdx
│ ├── contributing.mdx
│ ├── docker.mdx
│ └── syntax-highlighting.mdx
├── eslint.config.mjs
├── netlify.toml
├── next-env.d.ts
├── next.config.mjs
├── package.json
├── pages/
│ ├── 404.tsx
│ ├── _app.tsx
│ ├── _document.tsx
│ ├── config_settings.tsx
│ ├── documents/
│ │ └── [slug].tsx
│ ├── index.tsx
│ ├── lua.tsx
│ └── variables.tsx
├── postcss.config.js
├── scripts/
│ └── write-search-index.ts
├── styles/
│ └── globals.css
├── tailwind.config.js
├── tsconfig.json
└── utils/
├── build-meta.ts
├── doc-utils.ts
├── mdx-utils.ts
├── search-serde.ts
├── search.ts
└── tailwind-preset.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
---
Language: Cpp
# BasedOnStyle: Google
AccessModifierOffset: -1
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: true
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^<ext/.*\.h>'
Priority: 2
- Regex: '^<.*\.h>'
Priority: 1
- Regex: '^<.*'
Priority: 2
- Regex: '.*'
Priority: 3
IncludeIsMainRegex: '([-_](test|unittest))?$'
IndentCaseLabels: true
IndentPPDirectives: None
IndentWidth: 2
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Never
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: false
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left
RawStringFormats:
- Language: Cpp
Delimiters:
- cc
- CC
- cpp
- Cpp
- CPP
- 'c++'
- 'C++'
CanonicalDelimiter: ''
BasedOnStyle: google
- Language: TextProto
Delimiters:
- pb
- PB
- proto
- PROTO
EnclosingFunctions:
- EqualsProto
- EquivToProto
- PARSE_PARTIAL_TEXT_PROTO
- PARSE_TEST_PROTO
- PARSE_TEXT_PROTO
- ParseTextOrDie
- ParseTextProtoOrDie
CanonicalDelimiter: ''
BasedOnStyle: google
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Auto
TabWidth: 8
UseTab: Never
...
================================================
FILE: .clang-tidy
================================================
---
Checks: 'clang-diagnostic-*,clang-analyzer-*,google-*'
WarningsAsErrors: ''
HeaderFilterRegex: ''
AnalyzeTemporaryDtors: false
FormatStyle: none
User: brenden
CheckOptions:
- key: google-build-namespaces.HeaderFileExtensions
value: ',h,hh,hpp,hxx'
- key: google-global-names-in-headers.HeaderFileExtensions
value: ',h,hh,hpp,hxx'
- key: google-readability-braces-around-statements.ShortStatementLines
value: '1'
- key: google-readability-function-size.BranchThreshold
value: '4294967295'
- key: google-readability-function-size.LineThreshold
value: '4294967295'
- key: google-readability-function-size.NestingThreshold
value: '4294967295'
- key: google-readability-function-size.ParameterThreshold
value: '4294967295'
- key: google-readability-function-size.StatementThreshold
value: '800'
- key: google-readability-function-size.VariableThreshold
value: '4294967295'
- key: google-readability-namespace-comments.ShortNamespaceLines
value: '10'
- key: google-readability-namespace-comments.SpacesBeforeComments
value: '2'
- key: google-runtime-int.SignedTypePrefix
value: int
- key: google-runtime-int.TypeSuffix
value: ''
- key: google-runtime-int.UnsignedTypePrefix
value: uint
- key: google-runtime-references.WhiteListTypes
value: ''
- key: modernize-loop-convert.MaxCopySize
value: '16'
- key: modernize-loop-convert.MinConfidence
value: reasonable
- key: modernize-loop-convert.NamingStyle
value: CamelCase
- key: modernize-pass-by-value.IncludeStyle
value: llvm
- key: modernize-replace-auto-ptr.IncludeStyle
value: llvm
- key: modernize-use-nullptr.NullMacros
value: 'NULL'
...
================================================
FILE: .dockerignore
================================================
Dockerfile
.dockerignore
# Ignore SCM/CI related stuff
.github/
.git/
.gitlab-ci.yml
**/.DS_Store
**/*~
**/.*.swp
Doxyfile
patches/
doc/conky.1
README
build*/
doc/*.html
Makefile
CMakeCache.txt
CMakeFiles
data/convertconf.h
data/defconfig.h
lua/libcairo-orig.c
lua/libcairo.c
lua/libimlib2.c
*.so
*.a
/config.h
# Ignore vscode stuff
.vscode
*.code-workspace
# Ignore tests
tests/
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
================================================
FILE: .envrc
================================================
use flake
================================================
FILE: .git-blame-ignore-revs
================================================
# Run this command to always ignore formatting commits in `git blame`
# git config blame.ignoreRevsFile .git-blame-ignore-revs
# Following commits only reformat/cleanup code and can be ignored when tracking
# down regressions and introduced bugs:
### Clarifying licensing (SVN@904)
# Updates license headers
27b4c8550cfae4fd0f2169962e33f4907a8e7d71
### Reformatted all code (SVN@1007)
3d26a4880e92df2c6004d85c1be458e35c6bfc3a
# Spelling fixes
b62e1158300f0644b304f2f8b7e8105ba09073b3
### outsource the whole template object machinery
# Moves template variables code from core.c into template.c
ff199355f66216600c4bdc6bec4743afe5b61470
### Add formatting/static analysis (#486)
# Large cleanup of codebase that fixed indentation in most files
eebc8c653b34eb946d23ceb913ed5d69cc22f10e
### Build improvements: clang-tidy, sonar, Dockerfile. (#488)
# Touches most files with minor changes (NULL -> nullptr)
4b92556fca9cbede3cbac4112f0a24b554390099
### Use clang-format
# Applies clang-format formatting
033508a93e6b0440ddbd2376c1e97b69e3308687
### Move X11 stuff from conky.cc to display-x11
281097a2a562ef58e5604a3519f739c715ba5410
### Get rid of silly `if (not ...` expressions (#713)
3a3092902ee8a5fda71996d264f981b98375c6a3
### Fix docbook2x handling.
# Large diff, affects only docbook2x which is no longer used
c6ad28074af3ec1bb4b3cc052df58062ce2a7c9b
### Fix MAINTAINER_MODE (-Wall -Werror -Wpedantic) (#714)
# Large diff, minor refactoring changes
9af6fa7903c5cb6f05614deac23373d4d0cf5959
### Refactor docs, make a new website
# Large diff, no changes affecting code
47ad3f9982baea4069a5c37ffdb2e1523e504f18
### Fix issues building without BUILD_ARGB flag
# Changes a lot of indentations in x11.cc
f6d42c5a69fed134a8b4ed0602c892f6f7b6e242
### Fix DependentOptions splitting arguments on spaces
# Again, indentation changes in x11.cc
cbebe447078e28c50957d568303f42d6b8aae126
### Cleanup build flags, global namespace and includes (#1841)
# Large refactor of global namespace
# Includes changes to functionality so it can't be ignored:
# color parsing, text alignment, output registration
# 6adf6b9dd4d368640bf7ef57f3e6199d83154d78
### Move sources into appropriate subdirectories (#2119)
# Performed no changes to the source files, only moved them. Child commit
# addressed the bugs caused by the move, to separate renames from changes.
342f07b8ca101e0c4ef5c75346033c4df241d16d
ae8f1fa8472d6c3a31b4a09be4d19568a3f3f23e
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: brndnmtthws
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: 🐞 Bug Report
description: 'File a bug report: crashes, unexpected behaviour, and other errors go here.'
title: '[Bug]: '
labels: ['bug', 'triage']
body:
- type: markdown
attributes:
value: |
If you haven't done so already, please take a moment to search the [existing issues](https://github.com/brndnmtthws/conky/issues) to see if this has been previously reported. If not, carry on.
Thanks for taking the time to fill out this bug report!
- type: textarea
id: what-happened
attributes:
label: What happened?
description: >
Describe the problem, what you expected to happen, and any other
relevant info. You can attach logs, stack traces, and config below. If
required, include screenshots here which demonstrate the problem.
placeholder: Here's what happened
validations:
required: true
- type: input
id: version
attributes:
label: Version
description: What version of Conky are you running?
validations:
required: true
- type: dropdown
id: os
validations:
required: true
attributes:
label: Which OS/distro are you seeing the problem on?
options:
- Ubuntu
- Fedora
- Debian
- Arch Linux
- Gentoo
- Linux (other)
- macOS
- type: textarea
id: config
attributes:
label: Conky config
description: Paste your Conky config here if it's relevant.
render: Lua
- type: markdown
attributes:
value: |
## Getting a stack trace
If you are reporting a crash, please attach a stack trace below.
To create one with `gdb`, try the following steps:
```shell
# Start 'conky'
$ gdb conky
# Run 'conky' with a config.
(gdb) run -c ~/.your_conky.conf
# Wait for a crash to occur, then run this.
(gdb) bt full
# ... stack trace output here ...
```
Here are some additional resources on obtaining stack traces:
- [Arch Linux Wiki](https://wiki.archlinux.org/index.php/Debug_-_Getting_Traces)
- [Ubuntu Wiki](https://wiki.ubuntu.com/DebuggingProgramCrash)
- [AskUbuntu - Where do I find core dump files, and how do I view and analyze the backtrace (stack trace) in one?](https://askubuntu.com/a/1349048)
- [Julia Evans - How to get a core dump for a segfault on Linux](https://jvns.ca/blog/2018/04/28/debugging-a-segfault-on-linux/)
- [GDB Documentation](https://sourceware.org/gdb/current/onlinedocs/gdb/)
- [lldb Documentation](https://lldb.llvm.org/use/tutorial.html)
- type: textarea
id: stacktrace
attributes:
label: Stack trace
description: Paste your stacktrace here if you have one.
render: GDB
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: Shell
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: true
contact_links:
- name: 🙏 General questions & help
url: https://github.com/brndnmtthws/conky/discussions/categories/q-a
about: Please ask and answer general questions using GitHub Discussions
- name: 💡 New ideas and feature requests
url: https://github.com/brndnmtthws/conky/discussions/categories/ideas
about: Request and discuss enhancements using GitHub Discussions
================================================
FILE: .github/dependabot.yml
================================================
# Set update schedule for GitHub Actions
version: 2
updates:
# Maintain dependencies for actions
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'weekly'
groups:
actions:
patterns:
- '*'
# Maintain dependencies for web docs/npm
- package-ecosystem: 'npm'
directory: '/web'
schedule:
interval: 'weekly'
groups:
web-deps:
patterns:
# Group all the web deps together to keep the PR spam down
- '*'
================================================
FILE: .github/instructions/cmake-review.instructions.md
================================================
---
applyTo: 'CMakeLists.txt,cmake/**/*.cmake,tests/CMakeLists.txt,src/CMakeLists.txt,lua/CMakeLists.txt,data/CMakeLists.txt,doc/CMakeLists.txt,extras/CMakeLists.txt,3rdparty/CMakeLists.txt'
excludeAgent: 'coding-agent'
---
# Conky Build-System Review Instructions
Prioritize build reproducibility and CI parity.
Focus review comments on:
- Option defaults and interactions (`MAINTAINER_MODE`, `BUILD_TESTING`, `CHECK_CODE_QUALITY`, `CODE_COVERAGE`) that may change expected developer or CI behavior.
- Platform/compiler conditionals that could break Linux/macOS matrix builds.
- Dependency/linking changes that risk optional feature regressions.
- New targets/commands that are not wired into existing workflows or documented usage.
Validation expectations:
- Build paths should remain compatible with `cmake . -B build -G Ninja -DMAINTAINER_MODE=ON`.
- Test execution should remain compatible with `ctest --output-on-failure` from `build/`.
- Format-related guidance should align with available targets (`clang-format`, `check-clang-format`) and their configuration preconditions.
Raise comments when CMake changes alter cache variable semantics without migration notes or clear rationale.
================================================
FILE: .github/instructions/cpp-review.instructions.md
================================================
---
applyTo: 'src/**/*.cc,src/**/*.hh,src/**/*.hpp,src/**/*.h,src/**/*.cpp,tests/**/*.cc,tests/**/*.hh,tests/**/*.hpp,tests/**/*.h,lua/**/*.cc,lua/**/*.hh,lua/**/*.hpp,lua/**/*.h'
excludeAgent: 'coding-agent'
---
# Conky C/C++ Review Instructions
Prioritize behavioral correctness, regressions, and runtime safety over style-only feedback.
Focus review comments on:
- Changes to text object registration (for example `OBJ`, `OBJ_ARG`, `OBJ_IF`, and `OBJ_IF_ARG` in `construct_text_object()` in `src/core.cc`) and update logic (`update_cb` + `conky::callback_handle`) that could break refresh cadence, caching, or responsiveness.
- Backend behavior across output modes (`display_output_base` descendants), especially graceful degradation for ncurses and HTTP outputs.
- Platform-guarded logic under `src/data/os/` and tests that should mirror implementation `#ifdef` boundaries.
- Lifetime/ownership bugs, null dereferences, unchecked conversions, out-of-bounds access, and unintended copies in hot paths.
Testing expectations:
- New behavior should have or update tests in `tests/test-*.cc`.
- Encourage focused test runs with `./build/tests/test-conky "<test-or-tag>"` and full verification with `ctest --test-dir build --output-on-failure`.
- If behavior changed but no test changed, ask for justification.
Do not request purely stylistic changes already enforced by clang-format unless readability or correctness is impacted.
================================================
FILE: .github/instructions/workflow-review.instructions.md
================================================
---
applyTo: '.github/workflows/**/*.yml,.github/workflows/**/*.yaml,.github/scripts/**/*.sh,.github/scripts/**/*.bash,Dockerfile,tests/dockerfiles/**'
excludeAgent: 'coding-agent'
---
# Conky CI/Release Review Instructions
Prioritize signal quality and release safety.
Focus review comments on:
- Steps that could mask failures (missing `set -e`, ignored exit codes, or removed test stages).
- Drift from project CI expectations: configure, build, and run tests (`ctest --output-on-failure`) on supported matrices.
- Cache key changes that risk stale artifacts or ineffective caching.
- Changes affecting release artifacts (AppImage, Docker, checksums, signing) and versioning correctness.
- Security concerns in actions usage (unpinned third-party actions, unsafe token exposure, or over-broad permissions).
Require explicit rationale when reducing matrix coverage or disabling optional feature combinations that currently run in CI.
================================================
FILE: .github/labeler.yml
================================================
documentation:
- changed-files:
- any-glob-to-any-file:
- doc/**/*
- data/conky*.conf
extras:
- changed-files:
- any-glob-to-any-file:
- extras/**/*
sources:
- changed-files:
- any-glob-to-any-file:
- src/**/*
tests:
- changed-files:
- any-glob-to-any-file:
- tests/**/*
web:
- changed-files:
- any-glob-to-any-file:
- web/**/*
javascript:
- changed-files:
- any-glob-to-any-file:
- web/**/*.tsx
- web/**/*.jsx
- web/**/*.ts
- web/**/*.js
appimage:
- changed-files:
- any-glob-to-any-file:
- appimage/*
- appimage/**/*
3rdparty:
- changed-files:
- any-glob-to-any-file:
- 3rdparty/**/*
gh-actions:
- changed-files:
- any-glob-to-any-file:
- .github/workflows/*
- .github/workflows/**/*
- .github/labeler.yml
- .github/pull_request_template.md
dependencies:
- changed-files:
- any-glob-to-any-file:
- web/package-lock.json
- cmake/ConkyPlatformChecks.cmake
audio:
- changed-files:
- any-glob-to-any-file:
- src/data/audio/**/*
power:
- changed-files:
- any-glob-to-any-file:
- src/data/hardware/apcupsd.cc
- src/data/hardware/apcupsd.h
- src/data/hardware/bsdapm.cc
- src/data/hardware/bsdapm.h
- src/data/hardware/smapi.cc
- src/data/hardware/smapi.h
'display: console':
- changed-files:
- any-glob-to-any-file:
- src/output/display-console.cc
- src/output/display-console.hh
'display: file':
- changed-files:
- any-glob-to-any-file:
- src/output/display-file.cc
- src/output/display-file.hh
'display: http':
- changed-files:
- any-glob-to-any-file:
- src/output/display-http.cc
- src/output/display-http.hh
'display: ncurses':
- changed-files:
- any-glob-to-any-file:
- src/output/nc.cc
- src/output/nc.h
- src/output/display-ncurses.cc
- src/output/display-ncurses.hh
'display: wayland':
- changed-files:
- any-glob-to-any-file:
- src/wl_protocols/**/*
- src/output/wl.cc
- src/output/wl.h
- src/output/display-wayland.cc
- src/output/display-wayland.hh
'display: x11':
- changed-files:
- any-glob-to-any-file:
- src/output/*x11*.cc
- src/output/*x11*.h
- src/output/*x11*.hh
'build system':
- changed-files:
- any-glob-to-any-file:
- 'CMakeLists.txt'
- 'cmake/**/*'
cairo:
- changed-files:
- any-glob-to-any-file:
- 'lua/*cairo*'
'disk io':
- changed-files:
- any-glob-to-any-file:
- src/data/hardware/diskio.cc
- src/data/hardware/diskio.h
'sensors':
- changed-files:
- any-glob-to-any-file:
- src/data/hardware/hddtemp.cc
- src/data/hardware/hddtemp.h
- src/data/hardware/i8k.cc
- src/data/hardware/i8k.h
- src/data/hardware/sony.cc
- src/data/hardware/sony.h
cpu:
- changed-files:
- any-glob-to-any-file:
- src/data/hardware/cpu.cc
- src/data/hardware/cpu.h
- src/data/proc.cc
- src/data/proc.h
- src/data/top.cc
- src/data/top.h
lua:
- changed-files:
- any-glob-to-any-file:
- lua/**/*
- src/lua/**/*
'os: linux':
- changed-files:
- any-glob-to-any-file:
- src/data/os/linux.cc
- src/data/os/linux.h
'os: dragonfly':
- changed-files:
- any-glob-to-any-file:
- src/data/os/dragonfly.cc
- src/data/os/dragonfly.h
'os: freebsd':
- changed-files:
- any-glob-to-any-file:
- src/data/os/freebsd.cc
- src/data/os/freebsd.h
'os: haiku':
- changed-files:
- any-glob-to-any-file:
- src/data/os/haiku.cc
- src/data/os/haiku.h
'os: netbsd':
- changed-files:
- any-glob-to-any-file:
- src/data/os/netbsd.cc
- src/data/os/netbsd.h
'os: openbsd':
- changed-files:
- any-glob-to-any-file:
- src/data/os/openbsd.cc
- src/data/os/openbsd.h
'os: solaris':
- changed-files:
- any-glob-to-any-file:
- src/data/os/solaris.cc
- src/data/os/solaris.h
'os: macos':
- changed-files:
- any-glob-to-any-file:
- src/data/os/darwin_sip.h
- src/data/os/darwin.h
- src/data/os/darwin.mm
'mouse events':
- changed-files:
- any-glob-to-any-file:
- src/mouse-events.cc
- src/mouse-events.h
networking:
- changed-files:
- any-glob-to-any-file:
- src/data/network/**/*
mail:
- changed-files:
- any-glob-to-any-file:
- src/data/network/mail.cc
- src/data/network/mail.h
calendar:
- changed-files:
- any-glob-to-any-file:
- src/data/network/ical.cc
- src/data/network/ical.h
nvidia:
- changed-files:
- any-glob-to-any-file:
- src/data/hardware/nvidia.cc
- src/data/hardware/nvidia.h
rendering:
- changed-files:
- any-glob-to-any-file:
- src/output/gui.cc
- src/output/gui.h
- src/specials.cc
- src/specials.h
text:
- changed-files:
- any-glob-to-any-file:
- src/content/**/*
================================================
FILE: .github/pull_request_template.md
================================================
# Checklist
- [ ] I have described the changes
- [ ] I have linked to any relevant GitHub issues, if applicable
- [ ] Documentation in `doc/` has been updated
- [ ] All new code is licensed under GPLv3
## Description
* Describe the changes, why they were necessary, etc
* Describe how the changes will affect existing behaviour.
* Describe how you tested and validated your changes.
* Include any relevant screenshots/evidence demonstrating that the changes work and have been tested.
================================================
FILE: .github/release.yml
================================================
changelog:
categories:
- title: 🏕 Features
labels:
- feature
- title: 🧪 Improvements
labels:
- enhancement
- title: 🐞 Bug fixes
labels:
- bug
- regression
- title: 🎛️ Miscellaneous
labels:
- '*'
exclude:
labels:
- dependencies
- bug
- regression
- feature
- enhancement
- title: 👒 Dependencies
labels:
- dependencies
================================================
FILE: .github/scripts/docker-build.bash
================================================
#!/usr/bin/env bash
set -e
DH_USERNAME="${DOCKERHUB_USERNAME:-conky}"
DOCKERHUB_IMAGE_ID=$DH_USERNAME/$IMAGE_NAME
# Change all uppercase to lowercase
DOCKERHUB_IMAGE_ID=$(echo $DOCKERHUB_IMAGE_ID | tr '[A-Z]' '[a-z]')
# Only build amd64 on PRs, build all platforms on main. The arm builds
# take far too long.
image_platforms="--platform linux/amd64"
push_image=""
cache_tag="pr-cache"
image_tags=()
# Strip git ref prefix from version
VERSION_TAG=$(echo $GITHUB_REF | sed -e 's,.*/\(.*\),\1,')
# Strip "v" prefix from tag name
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
VERSION_TAG=$(echo $VERSION_TAG | sed -e 's/^v//')
fi
image_tags+=("--tag" "$DOCKERHUB_IMAGE_ID:$VERSION_TAG")
# tag as latest on releases
if [[ "$RELEASE" == ON ]]; then
image_tags+=("--tag" "$DOCKERHUB_IMAGE_ID:latest")
fi
# Only push on main
if [[ "$GITHUB_REF" == refs/heads/main ]]; then
push_image="--push"
image_platforms="--platform linux/arm/v7,linux/arm64/v8,linux/amd64"
cache_tag="main-cache"
fi
# Only write to cache if credentials are available
if [[ -z "$DOCKERHUB_TOKEN" ]]; then
write_cache=""
else
write_cache="--cache-to=type=registry,ref=$DOCKERHUB_IMAGE_ID:$cache_tag,mode=max"
fi
docker buildx build \
${push_image} \
${image_platforms} \
--cache-from=type=registry,ref=$DOCKERHUB_IMAGE_ID:$cache_tag \
${write_cache} \
"${image_tags[@]}" \
.
================================================
FILE: .github/scripts/setup-sccache.sh
================================================
#!/bin/sh
export SCCACHE_VERSION="${SCCACHE_VERSION:=0.9.1}"
export sccache_arch="x86_64"
if [ "$RUNNER_ARCH" = "X86" ]; then
export sccache_arch="i686"
elif [ "$RUNNER_ARCH" = "X64" ]; then
export sccache_arch="x86_64"
elif [ "$RUNNER_ARCH" = "ARM" ]; then
export sccache_arch="armv7"
elif [ "$RUNNER_ARCH" = "ARM64" ]; then
export sccache_arch="aarch64"
fi
install_sccache() {
export sccache_archive="sccache-v$SCCACHE_VERSION-$sccache_arch-$sccache_os"
export sccache_url="https://github.com/mozilla/sccache/releases/download/v$SCCACHE_VERSION/$sccache_archive.tar.gz"
echo "Downloading $sccache_url..."
if ! wget -q "$sccache_url"; then
echo "Can't download $sccache_url." >2
exit 1
fi
echo "Extracting $sccache_archive.tar.gz..."
if ! tar -xzf "$sccache_archive.tar.gz" >/dev/null; then
echo "Can't extract $sccache_archive.tar.gz" >2
exit 1
fi
chmod +x "$sccache_archive/sccache"
sudo cp "$sccache_archive/sccache" "/usr/local/bin/sccache"
rm -rf "$sccache_archive.tar.gz"
rm -rf "$sccache_archive"
}
export sccache_os="unknown-linux-musl"
if [ "$RUNNER_OS" = "Linux" ]; then
export sccache_os="unknown-linux-musl"
if [ "$RUNNER_ARCH" = "ARM" ]; then
export sccache_os="unknown-linux-musleabi"
fi
if ! install_sccache; then
echo "Unable to install sccache!" >2
exit 1
fi
elif [ "$RUNNER_OS" = "macOS" ]; then
export sccache_os="apple-darwin"
if ! install_sccache; then
echo "Unable to install sccache!" >2
exit 1
fi
elif [ "$RUNNER_OS" = "Windows" ]; then
export sccache_os="pc-windows-msvc"
if ! install_sccache; then
echo "Unable to install sccache!" >2
exit 1
fi
fi
echo "sccache installed."
# Configure
mkdir $HOME/.sccache
echo "SCCACHE_DIR=$HOME/.sccache" >>$GITHUB_ENV
if [ "$RUNNER_DEBUG" = "1" ]; then
echo "Running with debug output; cached binary artifacts will be ignored to produce a cleaner build"
echo "SCCACHE_RECACHE=true" >>$GITHUB_ENV
fi
echo "sccache configured."
================================================
FILE: .github/workflows/build-and-test-linux.yaml
================================================
name: Build and test on Linux
on:
push:
branches:
- main
paths-ignore:
- web/**
- doc/**
pull_request:
branches:
- main
paths-ignore:
- web/**
- doc/**
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
SCCACHE_VERSION: '0.9.1'
jobs:
build:
strategy:
matrix:
os:
- ubuntu-22.04
- ubuntu-24.04
x11: [ON, OFF]
wayland: [ON, OFF]
compiler:
- clang
- gcc
runs-on: ${{ matrix.os }}
steps:
- run: sudo apt-get -qq update
- name: Install dependencies
run: |
sudo apt-get install -yqq --no-install-recommends \
audacious-dev \
cmake \
gawk \
gperf \
lcov \
libaudclient-dev \
libcairo2-dev \
libpango1.0-dev \
libcurl4-gnutls-dev \
libdbus-glib-1-dev \
libfreetype-dev \
libfreetype6-dev \
libstdc++6 \
libglib2.0-dev \
libical-dev \
libimlib2-dev \
libircclient-dev \
libiw-dev \
liblua5.3-dev \
libmicrohttpd-dev \
libmysqlclient-dev \
libpulse-dev \
librsvg2-dev \
libsystemd-dev \
libwayland-bin \
libwayland-dev \
libx11-dev \
libxdamage-dev \
libxext-dev \
libxft-dev \
libxinerama-dev \
libxml2-dev \
libxmmsclient-dev \
libxnvctrl-dev \
ncurses-dev \
ninja-build \
wayland-protocols
- name: Install clang and libc++
if: matrix.compiler == 'clang'
run: |
sudo apt-get install -yqq --no-install-recommends \
clang \
libc++-dev \
libc++abi-dev
- name: Install gcc
if: matrix.compiler == 'gcc'
run: |
sudo apt-get install -yqq --no-install-recommends \
gcc \
g++
- name: Checkout
uses: actions/checkout@v5
- name: Install sccache
run: .github/scripts/setup-sccache.sh
- name: Load cached compilation artifacts
id: compiler-cache
uses: actions/cache@v4
with:
path: '${{ env.SCCACHE_DIR }}'
key: sccache-${{ matrix.os }}-${{ matrix.x11 }}-${{ matrix.wayland }}-${{ matrix.compiler }}
restore-keys: |
sccache-${{ matrix.os }}-${{ matrix.x11 }}-${{ matrix.wayland }}-${{ matrix.compiler }}
sccache-${{ matrix.os }}-${{ matrix.x11 }}-${{ matrix.wayland }}
sccache-${{ matrix.os }}-${{ matrix.x11 }}
sccache-${{ matrix.os }}
- name: Configure with CMake
run: |
set -x # show the commands we're running
[[ "${{ matrix.compiler }}" == "clang"* ]] && CC=clang
[[ "${{ matrix.compiler }}" == "clang"* ]] && CXX=clang++
[[ "${{ matrix.compiler }}" == "gcc"* ]] && CC=gcc
[[ "${{ matrix.compiler }}" == "gcc"* ]] && CXX=g++
# Enable librsvg by default, disable for older versions of Ubuntu
# because we need librsvg>=2.52
RSVG_ENABLED=ON
[[ "${{ matrix.os }}" == "ubuntu-20.04"* ]] && RSVG_ENABLED=OFF
# Reset sccache statistics
sccache --zero-stats
cmake . -B build -G Ninja \
-DBUILD_AUDACIOUS=ON \
-DBUILD_HTTP=ON \
-DBUILD_ICAL=ON \
-DBUILD_ICONV=ON \
-DBUILD_IRC=ON \
-DBUILD_IRC=ON \
-DBUILD_JOURNAL=ON \
-DBUILD_LUA_CAIRO=ON \
-DBUILD_LUA_CAIRO_XLIB=ON \
-DBUILD_LUA_IMLIB2=ON \
-DBUILD_LUA_RSVG=${RSVG_ENABLED} \
-DBUILD_LUA_TEXT=ON \
-DBUILD_MYSQL=ON \
-DBUILD_NVIDIA=ON \
-DBUILD_PULSEAUDIO=ON \
-DBUILD_CURL=ON \
-DBUILD_RSS=ON \
-DBUILD_WLAN=ON \
-DBUILD_WAYLAND=${{ matrix.wayland }}\
-DBUILD_X11=${{ matrix.x11 }} \
-DBUILD_XMMS2=ON \
-DCMAKE_C_COMPILER=$CC \
-DCMAKE_CXX_COMPILER=$CXX \
-DMAINTAINER_MODE=ON
- name: Compile
run: cmake --build build
- name: Show sccache stats
run: sccache --show-stats
- name: Test
working-directory: build
run: ctest --output-on-failure
================================================
FILE: .github/workflows/build-and-test-macos.yaml
================================================
name: Build and test on macOS
on:
push:
branches:
- main
paths-ignore:
- web/**
- doc/**
pull_request:
branches:
- main
paths-ignore:
- web/**
- doc/**
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
SCCACHE_VERSION: '0.9.1'
jobs:
build:
env:
HOMEBREW_NO_INSTALL_UPGRADE: 1
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
strategy:
matrix:
os:
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- name: Install dependencies
run: |
brew install --force \
curl \
freetype \
gettext \
gperf \
imlib2 \
lcov \
librsvg \
libxfixes \
libxft \
libxi \
libxinerama \
libxml2 \
lua \
ninja \
pkg-config \
|| true # Ignore errors
- name: Checkout
uses: actions/checkout@v5
- name: Configure sccache
run: .github/scripts/setup-sccache.sh
- name: Load cached compilation artifacts
id: compiler-cache
uses: actions/cache@v4
with:
path: '${{ env.SCCACHE_DIR }}'
key: sccache-${{ matrix.os }}
restore-keys: |
sccache-${{ matrix.os }}
sccache-
- name: Configure with CMake
run: |
# Reset sccache statistics
sccache --zero-stats
cmake . -B build -G Ninja \
-DMAINTAINER_MODE=ON \
-DBUILD_WAYLAND=OFF \
-DBUILD_RSS=ON \
-DBUILD_CURL=ON
- name: Compile
run: cmake --build build
- name: Show sccache stats
run: sccache --show-stats
- name: Test
working-directory: build
run: ctest --output-on-failure
================================================
FILE: .github/workflows/codeql.yml
================================================
name: 'CodeQL'
on:
schedule:
- cron: '20 2 * * 0'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: ['cpp', 'javascript', 'python']
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Use only 'java' to analyze code written in Java, Kotlin or both
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- run: sudo apt-get -qq update
- name: Install dependencies
if: matrix.language == 'cpp'
run: |
sudo apt-get install -yqq --no-install-recommends \
audacious-dev \
cmake \
gawk \
gperf \
lcov \
libaudclient-dev \
libc++-14-dev \
libc++abi-14-dev \
libcairo2-dev \
libcurl4-gnutls-dev \
libdbus-glib-1-dev \
libfreetype-dev \
libfreetype6-dev \
libstdc++6 \
libglib2.0-dev \
libical-dev \
libimlib2-dev \
libircclient-dev \
libiw-dev \
liblua5.3-dev \
libmicrohttpd-dev \
libmysqlclient-dev \
libpulse-dev \
librsvg2-dev \
libsystemd-dev \
libwayland-bin \
libwayland-dev \
libx11-dev \
libxdamage-dev \
libxext-dev \
libxft-dev \
libxinerama-dev \
libxml2-dev \
libxmmsclient-dev \
libxnvctrl-dev \
ncurses-dev \
ninja-build \
wayland-protocols
- name: Checkout repository
uses: actions/checkout@v5
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: '/language:${{matrix.language}}'
================================================
FILE: .github/workflows/docker.yaml
================================================
name: Docker
on:
push:
branches:
- main
paths-ignore:
- web/**
- doc/**
# Publish `v1.2.3` tags as releases.
tags:
- v*
pull_request:
branches:
- main
paths-ignore:
- web/**
- doc/**
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
docker-buildx:
env:
IMAGE_NAME: conky
DOCKER_BUILDKIT: 1
DOCKERHUB_USERNAME: brndnmtthws
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
if: ${{ env.DOCKERHUB_TOKEN != '' }}
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push Docker image
env:
RELEASE: "${{ startsWith(github.ref, 'refs/tags/') && 'ON' || 'OFF' }}"
GITHUB_REF: ${{ github.ref }}
run: .github/scripts/docker-build.bash
================================================
FILE: .github/workflows/labeler.yml
================================================
name: 'Pull Request Labeler'
on:
- pull_request_target
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Run labeler
uses: actions/labeler@v6
with:
sync-labels: true
repo-token: '${{ secrets.GITHUB_TOKEN }}'
================================================
FILE: .github/workflows/nix.yaml
================================================
name: 'Nix build'
on:
push:
branches:
- main
paths-ignore:
- web/**
- doc/**
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-and-check:
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- uses: nixbuild/nix-quick-install-action@v34
- name: Restore and cache Nix store
uses: nix-community/cache-nix-action@v6
with:
primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix') }}
restore-prefixes-first-match: nix-${{ runner.os }}-
gc-max-store-size: 1073741824
purge: true
purge-prefixes: cache-${{ runner.os }}-
purge-created: 0
purge-primary-key: never
- run: nix build
- run: nix flake check
================================================
FILE: .github/workflows/publish-appimage.yml
================================================
name: Build AppImage
on:
push:
branches:
- main
tags:
- v*
paths-ignore:
- web/**
- doc/**
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
SCCACHE_VERSION: '0.9.1'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- ubuntu-24.04
arch:
- x86_64
mode:
- debug
- release
permissions:
contents: write
discussions: write
steps:
- run: sudo apt-get -qq update
- name: Install dependencies
run: |
sudo apt-get install -yqq --no-install-recommends \
audacious-dev \
cmake \
gawk \
gperf \
lcov \
libaudclient-dev \
libcairo2-dev \
libcurl4-gnutls-dev \
libdbus-glib-1-dev \
libfreetype-dev \
libfreetype6-dev \
libstdc++6 \
libfuse2 \
libglib2.0-dev \
libical-dev \
libimlib2-dev \
libircclient-dev \
libiw-dev \
liblua5.3-dev \
libmicrohttpd-dev \
libmysqlclient-dev \
libpulse-dev \
librsvg2-dev \
libsystemd-dev \
libwayland-bin \
libwayland-dev \
libx11-dev \
libxdamage-dev \
libxext-dev \
libxft-dev \
libxinerama-dev \
libxml2-dev \
libxmmsclient-dev \
libxnvctrl-dev \
ncurses-dev \
ninja-build \
pandoc \
wayland-protocols
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: actions/setup-python@v6
with:
python-version: '3.12'
cache: 'pip' # caching pip dependencies
cache-dependency-path: 'requirements-dev.txt'
- run: pip install -r requirements-dev.txt
- name: Import GPG Deploy Key
# only run on main branch
if: github.ref == 'refs/heads/main'
run: |
echo "${{ secrets.GPG_DEPLOY_KEY }}" > appimage/secret.gpg
gpg --import appimage/secret.gpg
- name: Set clang version to 12 for ubuntu-20.04
if: matrix.os == 'ubuntu-20.04'
run: |
echo "CLANG_VERSION=12" | tee -a $GITHUB_ENV
- name: Set clang version to 15 for ubuntu-22.04
if: matrix.os == 'ubuntu-22.04'
run: |
echo "CLANG_VERSION=15" | tee -a $GITHUB_ENV
- name: Set clang version to 18 for ubuntu-24.04
if: matrix.os == 'ubuntu-24.04'
run: |
echo "CLANG_VERSION=18" | tee -a $GITHUB_ENV
- name: Install libc++, set CC and CXX env vars
run: |
sudo apt-get install -yqq --no-install-recommends \
libc++-${CLANG_VERSION}-dev \
libc++abi-${CLANG_VERSION}-dev
echo "CC=clang-${CLANG_VERSION}" | tee -a $GITHUB_ENV
echo "CXX=clang++-${CLANG_VERSION}" | tee -a $GITHUB_ENV
- name: Install sccache
if: startsWith(github.ref, 'refs/tags/') != true
run: .github/scripts/setup-sccache.sh
- name: Load cached compilation artifacts
if: startsWith(github.ref, 'refs/tags/') != true
id: compiler-cache
uses: actions/cache@v4
with:
path: '${{ env.SCCACHE_DIR }}'
key: sccache-${{ matrix.os }}-${{ matrix.arch }}
restore-keys: |
sccache-${{ matrix.os }}-${{ matrix.arch }}
sccache-${{ matrix.os }}
sccache-
- name: Build AppImage
run: ./appimage/build.sh --${{ matrix.mode }}
env:
RELEASE: "${{ startsWith(github.ref, 'refs/tags/') && 'ON' || 'OFF' }}"
- name: Show sccache stats
if: startsWith(github.ref, 'refs/tags/') != true
run: sccache --show-stats
- run: ./conky-x86_64.AppImage --version # print version
- name: Set CONKY_VERSION
run: echo "CONKY_VERSION=$(./conky-x86_64.AppImage --short-version)" | tee -a $GITHUB_ENV
- run: mv conky-x86_64.AppImage conky-${{ matrix.os }}-${{ matrix.arch }}-v${{ env.CONKY_VERSION }}-${{ matrix.mode }}.AppImage
- run: mv conky-x86_64.AppImage.sha256 conky-${{ matrix.os }}-${{ matrix.arch }}-v${{ env.CONKY_VERSION }}-${{ matrix.mode }}.AppImage.sha256
- name: Upload AppImage artifact
uses: actions/upload-artifact@v4
with:
path: 'conky-${{ matrix.os }}-${{ matrix.arch }}-v${{ env.CONKY_VERSION }}-${{ matrix.mode }}.AppImage'
name: 'conky-${{ matrix.os }}-${{ matrix.arch }}-v${{ env.CONKY_VERSION }}-${{ matrix.mode }}.AppImage'
if-no-files-found: error
- name: Upload AppImage checksum artifact
uses: actions/upload-artifact@v4
with:
path: 'conky-${{ matrix.os }}-${{ matrix.arch }}-v${{ env.CONKY_VERSION }}-${{ matrix.mode }}.AppImage.sha256'
name: 'conky-${{ matrix.os }}-${{ matrix.arch }}-v${{ env.CONKY_VERSION }}-${{ matrix.mode }}.AppImage.sha256'
if-no-files-found: error
- name: Upload man page artifact
uses: actions/upload-artifact@v4
with:
name: conky.1.gz
path: conky.1.gz
# conky.1.gz is created by all jobs!
overwrite: true
release:
runs-on: ubuntu-latest
needs: build
steps:
- name: Download all artifacts
uses: actions/download-artifact@v5
with:
path: ${{ github.workspace }}/artifacts
- name: Create Conky Release
id: create_release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
draft: false
prerelease: false
discussion_category_name: General
generate_release_notes: true
fail_on_unmatched_files: true
files: |
${{ github.workspace }}/artifacts/**/*
================================================
FILE: .github/workflows/stale.yml
================================================
name: "Close stale issues and PRs"
on:
schedule:
- cron: "30 1 * * *"
jobs:
stale:
permissions:
contents: write # for delete-branch option
issues: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v10
with:
stale-issue-message: "This issue is stale because it has been open 365 days with no activity. Remove stale label or comment, or this issue will be closed in 30 days."
stale-pr-message: "This PR is stale because it has been open 365 days with no activity. Remove stale label or comment, or this PR will be closed in 30 days."
close-issue-message: "This issue was closed because it has been stalled for 30 days with no activity."
close-pr-message: "This PR was closed because it has been stalled for 30 days with no activity."
days-before-issue-stale: 365
days-before-pr-stale: 365
days-before-issue-close: 30
days-before-pr-close: 30
delete-branch: true
================================================
FILE: .github/workflows/web.yml
================================================
name: Web CI
on:
push:
branches: [main]
paths:
- web/**
- doc/**
pull_request:
branches: [main]
paths:
- web/**
- doc/**
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Use Node.js runtime for Next.js
uses: actions/setup-node@v5
with:
node-version: 20
- name: Use Bun package manager
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.10
- run: bun install --frozen-lockfile
working-directory: web
- run: bun run lint
working-directory: web
- run: bun run build
working-directory: web
- run: bun run e2e:headless
working-directory: web
================================================
FILE: .gitignore
================================================
.DS_Store
*~
.*.swp
Doxyfile
patches/
doc/conky.1
README
build*/
doc/*.html
Makefile
CMakeCache.txt
CMakeFiles
cmake_install.cmake
cmake_uninstall.cmake
CPackConfig.cmake
CPackSourceConfig.cmake
# Generated files
data/convertconf.h
data/defconfig.h
*.so
*.a
/config.h
/build.h
src/colour-names.hh
# Compiler cache
.cache
# Ignore (most) vscode stuff
.vscode/*
*.code-workspace
# Allow vscode recommended extensions
!.vscode/extensions.json
.idea/
# Ignore nix stuff
/result
# Ignore direnv
.direnv
# Built AppImages
/conky*.AppImage
/conky*.AppImage.sha256
# Built manual
/conky.1.gz
================================================
FILE: .prettierrc.cjs
================================================
module.exports = {
printWidth: 80,
semi: false,
singleQuote: true,
tabWidth: 2,
useTabs: false,
}
================================================
FILE: .vscode/extensions.json
================================================
{
"recommendations": [
"kamadorueda.alejandra",
"ms-vscode.cmake-tools",
"mkhl.direnv",
"xaver.clang-format"
]
}
================================================
FILE: 3rdparty/CMakeLists.txt
================================================
# Vc version 1.4.4
add_subdirectory(Vc)
add_subdirectory(toluapp)
================================================
FILE: 3rdparty/Vc/.clang-format
================================================
BasedOnStyle: Google
# The extra indent or outdent of access modifiers, e.g. public:.
AccessModifierOffset: -4
# If true, aligns escaped newlines as far left as possible. Otherwise puts them into the right-most column.
AlignEscapedNewlinesLeft: false
# If true, aligns trailing comments.
AlignTrailingComments: true
# Allow putting all parameters of a function declaration onto the next line even if BinPackParameters is false.
AllowAllParametersOfDeclarationOnNextLine: false
# If true, if (a) return; can be put on a single line.
AllowShortIfStatementsOnASingleLine: false
# If true, while (true) continue; can be put on a single line.
AllowShortLoopsOnASingleLine: false
AllowShortFunctionsOnASingleLine: true
# If true, always break before multiline string literals.
AlwaysBreakBeforeMultilineStrings: false
# If true, always break after the template<...> of a template declaration.
AlwaysBreakTemplateDeclarations: false
# If false, a function call’s or function definition’s parameters will either all be on the same line or will have one line each.
BinPackParameters: true
# If true, binary operators will be placed after line breaks.
BreakBeforeBinaryOperators: false
# The brace breaking style to use.
# Possible values:
# BS_Attach (in configuration: Attach) Always attach braces to surrounding context.
# BS_Linux (in configuration: Linux) Like Attach, but break before braces on function, namespace and class definitions.
# BS_Stroustrup (in configuration: Stroustrup) Like Attach, but break before function definitions.
# BS_Allman (in configuration: Allman) Always break before braces.
BreakBeforeBraces: Linux
# Always break constructor initializers before commas and align the commas with the colon.
BreakConstructorInitializersBeforeComma: true
# The column limit.
# A column limit of 0 means that there is no column limit. In this case, clang-format will respect the input’s line breaking decisions within statements.
ColumnLimit: 90
# If the constructor initializers don’t fit on a line, put each initializer on its own line.
#ConstructorInitializerAllOnOneLineOrOnePerLine (bool)
# The number of characters to use for indentation of constructor initializer lists.
#ConstructorInitializerIndentWidth (unsigned)
# If true, format braced lists as best suited for C++11 braced lists.
# Important differences: - No spaces inside the braced list. - No line break before the closing brace. - Indentation with the continuation indent, not with the block indent.
# Fundamentally, C++11 braced lists are formatted exactly like function calls would be formatted in their place. If the braced list follows a name (e.g. a type or variable name), clang-format formats as if the {} were the parentheses of a function call with that name. If there is no name, a zero-length name is assumed.
Cpp11BracedListStyle: true
# If true, analyze the formatted file for the most common binding.
#DerivePointerBinding (bool)
# If true, clang-format detects whether function calls and definitions are formatted with one parameter per line.
# Each call can be bin-packed, one-per-line or inconclusive. If it is inconclusive, e.g. completely on one line, but a decision needs to be made, clang-format analyzes whether there are other bin-packed cases in the input file and act accordingly.
# NOTE: This is an experimental flag, that might go away or be renamed. Do not use this in config files, etc. Use at your own risk.
#ExperimentalAutoDetectBinPacking (bool)
# Indent case labels one level from the switch statement.
# When false, use the same indentation level as for the switch statement. Switch statement body is always indented one level more than case labels.
IndentCaseLabels: false
# If true, indent when breaking function declarations which are not also definitions after the type.
#IndentFunctionDeclarationAfterType (bool)
# The number of characters to use for indentation.
IndentWidth: 4
# The maximum number of consecutive empty lines to keep.
MaxEmptyLinesToKeep: 1
# The indentation used for namespaces.
# Possible values:
# NI_None (in configuration: None) Don’t indent in namespaces.
# NI_Inner (in configuration: Inner) Indent only in inner namespaces (nested in other namespaces).
# NI_All (in configuration: All) Indent in all namespaces.
NamespaceIndentation: None
# Add a space in front of an Objective-C protocol list, i.e. use Foo <Protocol> instead of Foo<Protocol>.
#ObjCSpaceBeforeProtocolList (bool)
# The penalty for each line break introduced inside a comment.
#PenaltyBreakComment (unsigned)
# The penalty for breaking before the first <<.
#PenaltyBreakFirstLessLess (unsigned)
# The penalty for each line break introduced inside a string literal.
#PenaltyBreakString (unsigned)
# The penalty for each character outside of the column limit.
#PenaltyExcessCharacter (unsigned)
# Penalty for putting the return type of a function onto its own line.
#PenaltyReturnTypeOnItsOwnLine (unsigned)
# Set whether & and * bind to the type as opposed to the variable.
#PointerBindsToType: false
# If true, spaces will be inserted between ‘for’/’if’/’while’/... and ‘(‘.
#SpaceAfterControlStatementKeyword: true
# If false, spaces will be removed before ‘=’, ‘+=’, etc.
#SpaceBeforeAssignmentOperators: true
# If false, spaces may be inserted into ‘()’.
#SpaceInEmptyParentheses: false
# The number of spaces to before trailing line comments.
#SpacesBeforeTrailingComments (unsigned)
# If false, spaces may be inserted into C style casts.
#SpacesInCStyleCastParentheses (bool)
# If true, spaces will be inserted after every ‘(‘ and before every ‘)’.
SpacesInParentheses: false
# Format compatible with this standard, e.g. use A<A<int> > instead of A<A<int>> for LS_Cpp03.
# Possible values:
# LS_Cpp03 (in configuration: Cpp03) Use C++03-compatible syntax.
# LS_Cpp11 (in configuration: Cpp11) Use features of C++11 (e.g. A<A<int>> instead of A<A<int> >).
# LS_Auto (in configuration: Auto) Automatic detection based on the input.
Standard: Cpp11
# If true, IndentWidth consecutive spaces will be replaced with tab characters.
UseTab: false
# vim: ft=yaml
================================================
FILE: 3rdparty/Vc/.gitignore
================================================
doc/html
doc/latex
doc/man
vc-benchmarks
*.swp
*~
.makeApidox.stamp
.makeApidox.stamp.new
build-*
.vs
out
================================================
FILE: 3rdparty/Vc/CMakeLists.txt
================================================
# cmake_minimum_required(VERSION 3.0)
cmake_policy(SET CMP0028 NEW) # Double colon in target name means ALIAS or IMPORTED target.
cmake_policy(SET CMP0048 NEW) # The ``project()`` command manages VERSION variables.
if(PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR)
message(FATAL_ERROR "You don't want to configure in the source directory!")
endif()
if(NOT DEFINED CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebug RelWithDebInfo MinSizeRel."
FORCE)
endif()
# read version parts from version.h
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/Vc/version.h _version_lines REGEX "^#define Vc_VERSION_STRING ")
string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)" _version_matches "${_version_lines}")
project(Vc VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}" LANGUAGES C CXX)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(disabled_targets)
include (VcMacros)
include (AddTargetProperty)
include (OptimizeForArchitecture)
vc_determine_compiler()
if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(i686|x86|AMD64|amd64)")
set(Vc_X86 TRUE)
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(arm|aarch32|aarch64)")
message(WARNING "No optimized implementation of the Vc types available for ${CMAKE_SYSTEM_PROCESSOR}")
set(Vc_ARM TRUE)
else()
message(WARNING "No optimized implementation of the Vc types available for ${CMAKE_SYSTEM_PROCESSOR}")
endif()
# if(NOT Vc_COMPILER_IS_MSVC)
# AddCompilerFlag("-std=c++14" CXX_RESULT _ok CXX_FLAGS CMAKE_CXX_FLAGS)
# if(NOT _ok)
# AddCompilerFlag("-std=c++1y" CXX_RESULT _ok CXX_FLAGS CMAKE_CXX_FLAGS)
# if(NOT _ok)
# AddCompilerFlag("-std=c++11" CXX_RESULT _ok CXX_FLAGS CMAKE_CXX_FLAGS)
# if(NOT _ok)
# AddCompilerFlag("-std=c++0x" CXX_RESULT _ok CXX_FLAGS CMAKE_CXX_FLAGS)
# if(NOT _ok)
# message(FATAL_ERROR "Vc 1.x requires C++11, better even C++14. It seems this is not available. If this was incorrectly determined please notify vc-devel@compeng.uni-frankfurt.de")
# endif()
# endif()
# endif()
# endif()
# elseif(MSVC_VERSION LESS 1920)
# message(FATAL_ERROR "Vc 1.x requires at least Visual Studio 2019.")
# AddCompilerFlag("/std:c++14" CXX_RESULT _ok CXX_FLAGS CMAKE_CXX_FLAGS)
# endif()
# if(MSVC AND (NOT DEFINED Vc_USE_MSVC_SSA_OPTIMIZER_DESPITE_BUGGY_EXP OR NOT Vc_USE_MSVC_SSA_OPTIMIZER_DESPITE_BUGGY_EXP))
# # bug report: https://developercommunity.visualstudio.com/t/AVX-codegen-bug-on-Vc-with-MSVC-2019/1470844#T-N1521672
# message(STATUS "WARNING! MSVC starting with 19.20 uses a new optimizer that has a bug causing Vc::exp() to return slighly wrong results.\
# You can set Vc_USE_MSVC_SSA_OPTIMIZER_DESPITE_BUGGY_EXP=ON to still use the new optimizer on the affected MSVC versions.")
# AddCompilerFlag("/d2SSAOptimizer-" CXX_RESULT _ok CXX_FLAGS CMAKE_CXX_FLAGS)
# endif()
if(Vc_COMPILER_IS_GCC)
if(Vc_GCC_VERSION VERSION_GREATER "5.0.0" AND Vc_GCC_VERSION VERSION_LESS "6.0.0")
UserWarning("GCC 5 goes into an endless loop comiling example_scaling_scalar. Therefore, this target is disabled.")
list(APPEND disabled_targets
example_scaling_scalar
)
endif()
# elseif(Vc_COMPILER_IS_MSVC)
# # Disable warning "C++ exception specification ignored except to indicate a function is not __declspec(nothrow)"
# # MSVC emits the warning for the _UnitTest_Compare desctructor which needs the throw declaration so that it doesn't std::terminate
# AddCompilerFlag("/wd4290")
endif()
vc_set_preferred_compiler_flags(WARNING_FLAGS BUILDTYPE_FLAGS)
add_definitions(${Vc_DEFINITIONS})
add_compile_options(${Vc_COMPILE_FLAGS})
if(Vc_COMPILER_IS_INTEL)
# per default icc is not IEEE compliant, but we need that for verification
AddCompilerFlag("-fp-model source")
endif()
if(CMAKE_BUILD_TYPE STREQUAL "" AND NOT CMAKE_CXX_FLAGS MATCHES "-O[123]")
message(STATUS "WARNING! It seems you are compiling without optimization. Please set CMAKE_BUILD_TYPE.")
endif(CMAKE_BUILD_TYPE STREQUAL "" AND NOT CMAKE_CXX_FLAGS MATCHES "-O[123]")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}) # ${CMAKE_CURRENT_SOURCE_DIR}/include)
add_custom_target(other VERBATIM)
add_custom_target(Scalar COMMENT "build Scalar code" VERBATIM)
add_custom_target(SSE COMMENT "build SSE code" VERBATIM)
add_custom_target(AVX COMMENT "build AVX code" VERBATIM)
add_custom_target(AVX2 COMMENT "build AVX2 code" VERBATIM)
AddCompilerFlag(-ftemplate-depth=128 CXX_FLAGS CMAKE_CXX_FLAGS)
set(libvc_compile_flags "-DVc_COMPILE_LIB")
AddCompilerFlag("-fPIC" CXX_FLAGS libvc_compile_flags)
# -fstack-protector is the default of GCC, but at least Ubuntu changes the default to -fstack-protector-strong, which is crazy
AddCompilerFlag("-fstack-protector" CXX_FLAGS libvc_compile_flags)
set(_srcs src/const.cpp)
if(Vc_X86)
list(APPEND _srcs src/cpuid.cpp src/support_x86.cpp)
vc_compile_for_all_implementations(_srcs src/trigonometric.cpp ONLY SSE2 SSE3 SSSE3 SSE4_1 AVX AVX+FMA AVX2+FMA+BMI2)
if(NOT Vc_XOP_INTRINSICS_BROKEN)
vc_compile_for_all_implementations(_srcs src/trigonometric.cpp ONLY AVX+XOP+FMA)
if(NOT Vc_FMA4_INTRINSICS_BROKEN)
vc_compile_for_all_implementations(_srcs src/trigonometric.cpp ONLY SSE+XOP+FMA4 AVX+XOP+FMA4)
endif()
endif()
vc_compile_for_all_implementations(_srcs src/sse_sorthelper.cpp ONLY SSE2 SSE4_1 AVX AVX2+FMA+BMI2)
vc_compile_for_all_implementations(_srcs src/avx_sorthelper.cpp ONLY AVX AVX2+FMA+BMI2)
elseif(Vc_ARM)
list(APPEND _srcs src/support_dummy.cpp)
else()
list(APPEND _srcs src/support_dummy.cpp)
endif()
add_library(Vc STATIC ${_srcs})
set_property(TARGET Vc APPEND PROPERTY COMPILE_OPTIONS ${libvc_compile_flags})
add_target_property(Vc LABELS "other")
if(XCODE)
# TODO: document what this does and why it has no counterpart in the non-XCODE logic
set_target_properties(Vc PROPERTIES XCODE_ATTRIBUTE_GCC_INLINES_ARE_PRIVATE_EXTERN "NO")
set_target_properties(Vc PROPERTIES XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES")
set_target_properties(Vc PROPERTIES XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x")
set_target_properties(Vc PROPERTIES XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
elseif(UNIX AND Vc_COMPILER_IS_CLANG)
# On UNIX (Linux) the standard library used by default typically is libstdc++ (GCC).
# To get the full clang deal we rather want to build against libc++. This requires
# additionally the libc++abi and libsupc++ libraries in all linker invokations.
option(USE_LIBC++ "Use libc++ instead of the system default C++ standard library." OFF)
if(USE_LIBC++)
AddCompilerFlag(-stdlib=libc++ CXX_FLAGS CMAKE_CXX_FLAGS CXX_RESULT _use_libcxx)
if(_use_libcxx)
find_library(LIBC++ABI c++abi)
mark_as_advanced(LIBC++ABI)
if(LIBC++ABI)
set(CMAKE_REQUIRED_LIBRARIES "${LIBC++ABI};supc++")
CHECK_CXX_SOURCE_COMPILES("#include <stdexcept>
#include <iostream>
void foo() {
std::cout << 'h' << std::flush << std::endl;
throw std::exception();
}
int main() {
try { foo(); }
catch (int) { return 0; }
return 1;
}" libcxx_compiles)
unset(CMAKE_REQUIRED_LIBRARIES)
if(libcxx_compiles)
link_libraries(${LIBC++ABI} supc++)
endif()
endif()
endif()
else()
CHECK_CXX_SOURCE_COMPILES("#include <tuple>
std::tuple<int> f() { std::tuple<int> r; return r; }
int main() { return 0; }
" tuple_sanity)
if (NOT tuple_sanity)
message(FATAL_ERROR "Clang and std::tuple brokenness detected. Please update your compiler.")
endif()
endif()
endif()
add_dependencies(other Vc)
target_include_directories(Vc
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
# option(Vc_ENABLE_INSTALL "Whether to install the library." OFF)
# if (Vc_ENABLE_INSTALL)
# install(TARGETS Vc EXPORT VcTargets DESTINATION lib${LIB_SUFFIX})
# install(DIRECTORY Vc/ DESTINATION include/Vc FILES_MATCHING REGEX "/*.(h|tcc|def)$")
# install(FILES
# Vc/Allocator
# Vc/IO
# Vc/Memory
# Vc/SimdArray
# Vc/Utils
# Vc/Vc
# Vc/algorithm
# Vc/array
# Vc/iterators
# Vc/limits
# Vc/simdize
# Vc/span
# Vc/type_traits
# Vc/vector
# DESTINATION include/Vc)
# # Generate and install CMake package and modules
# include(CMakePackageConfigHelpers)
# set(PACKAGE_INSTALL_DESTINATION
# lib${LIB_SUFFIX}/cmake/${PROJECT_NAME}
# )
# install(EXPORT ${PROJECT_NAME}Targets
# NAMESPACE ${PROJECT_NAME}::
# DESTINATION ${PACKAGE_INSTALL_DESTINATION}
# EXPORT_LINK_INTERFACE_LIBRARIES
# )
# write_basic_package_version_file(
# ${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake
# VERSION ${PROJECT_VERSION}
# COMPATIBILITY AnyNewerVersion
# )
# configure_package_config_file(
# ${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in
# ${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake
# INSTALL_DESTINATION ${PACKAGE_INSTALL_DESTINATION}
# PATH_VARS CMAKE_INSTALL_PREFIX
# )
# install(FILES
# cmake/UserWarning.cmake
# cmake/VcMacros.cmake
# cmake/AddCompilerFlag.cmake
# cmake/CheckCCompilerFlag.cmake
# cmake/CheckCXXCompilerFlag.cmake
# cmake/OptimizeForArchitecture.cmake
# cmake/FindVc.cmake
# ${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake
# ${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake
# DESTINATION ${PACKAGE_INSTALL_DESTINATION}
# )
# endif()
# option(BUILD_TESTING "Build the testing tree." OFF)
# include (CTest)
# configure_file(${PROJECT_SOURCE_DIR}/CTestCustom.cmake ${PROJECT_BINARY_DIR}/CTestCustom.cmake COPYONLY)
# if(BUILD_TESTING)
# add_custom_target(build_tests ALL VERBATIM)
# add_subdirectory(tests)
# endif()
# set(BUILD_EXAMPLES FALSE CACHE BOOL "Build examples.")
# if(BUILD_EXAMPLES)
# add_subdirectory(examples)
# endif(BUILD_EXAMPLES)
# Hide Vc_IMPL as it is only meant for users of Vc
mark_as_advanced(Vc_IMPL)
# find_program(BIN_CAT cat)
# mark_as_advanced(BIN_CAT)
# if(BIN_CAT)
# file(REMOVE ${PROJECT_BINARY_DIR}/help.txt)
# add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/help.txt
# COMMAND ${CMAKE_MAKE_PROGRAM} help > ${PROJECT_BINARY_DIR}/help.txt
# VERBATIM
# )
# add_custom_target(cached_help
# ${BIN_CAT} ${PROJECT_BINARY_DIR}/help.txt
# DEPENDS ${PROJECT_BINARY_DIR}/help.txt
# VERBATIM
# )
# endif()
================================================
FILE: 3rdparty/Vc/LICENSE
================================================
Copyright © 2009-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: 3rdparty/Vc/README.md
================================================
**Vc is now in maintenance mode and no longer actively developed.
However, we continue to review pull requests with bugfixes from the community.**
**You may be interested in switching to [std-simd](https://github.com/VcDevel/std-simd).**
GCC 11 includes an experimental version of `std::simd` as part of libstdc++, which also works with clang.
Features present in Vc 1.4 and not present in *std-simd* will eventually turn into Vc 2.0,which then depends on *std-simd*.
# Vc: portable, zero-overhead C++ types for explicitly data-parallel programming
Recent generations of CPUs, and GPUs in particular, require data-parallel codes
for full efficiency. Data parallelism requires that the same sequence of
operations is applied to different input data. CPUs and GPUs can thus reduce
the necessary hardware for instruction decoding and scheduling in favor of more
arithmetic and logic units, which execute the same instructions synchronously.
On CPU architectures this is implemented via SIMD registers and instructions.
A single SIMD register can store N values and a single SIMD instruction can
execute N operations on those values. On GPU architectures N threads run in
perfect sync, fed by a single instruction decoder/scheduler. Each thread has
local memory and a given index to calculate the offsets in memory for loads and
stores.
Current C++ compilers can do automatic transformation of scalar codes to SIMD
instructions (auto-vectorization). However, the compiler must reconstruct an
intrinsic property of the algorithm that was lost when the developer wrote a
purely scalar implementation in C++. Consequently, C++ compilers cannot
vectorize any given code to its most efficient data-parallel variant.
Especially larger data-parallel loops, spanning over multiple functions or even
translation units, will often not be transformed into efficient SIMD code.
The Vc library provides the missing link. Its types enable explicitly stating
data-parallel operations on multiple values. The parallelism is therefore added
via the type system. Competing approaches state the parallelism via new control
structures and consequently new semantics inside the body of these control
structures.
Vc is a free software library to ease explicit vectorization of C++ code. It
has an intuitive API and provides portability between different compilers and
compiler versions as well as portability between different vector instruction
sets. Thus an application written with Vc can be compiled for:
* AVX and AVX2
* SSE2 up to SSE4.2 or SSE4a
* Scalar
* ~~AVX-512 (Vc 2 development)~~
* ~~NEON (in development)~~
* ~~NVIDIA GPUs / CUDA (research)~~
After Intel dropped MIC support with ICC 18, Vc 1.4 also removed support for it.
## Examples
### Usage on Compiler Explorer
* [Simdize Example](https://godbolt.org/z/JVEM2j)
* [Total momentum and time stepping of `std::vector<Particle>`](https://godbolt.org/z/JNdkL9)
* [Matrix Example](https://godbolt.org/z/fFEkuX): This uses vertical
vectorization which does not scale to different vector sizes. However, the
example is instructive to compare it with similar solutions of other languages
or libraries.
* [N-vortex solver](https://godbolt.org/z/4o1cg_) showing `simdize`d iteration
over many `std::vector<float>`. Note how [important the `-march` flag is, compared
to plain `-mavx2 -mfma`](https://godbolt.org/z/hKiOjr).
### Scalar Product
Let's start from the code for calculating a 3D scalar product using builtin floats:
```cpp
using Vec3D = std::array<float, 3>;
float scalar_product(Vec3D a, Vec3D b) {
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}
```
Using Vc, we can easily vectorize the code using the `float_v` type:
```cpp
using Vc::float_v
using Vec3D = std::array<float_v, 3>;
float_v scalar_product(Vec3D a, Vec3D b) {
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}
```
The above will scale to 1, 4, 8, 16, etc. scalar products calculated in parallel, depending
on the target hardware's capabilities.
For comparison, the same vectorization using Intel SSE intrinsics is more verbose and uses
prefix notation (i.e. function calls):
```cpp
using Vec3D = std::array<__m128, 3>;
__m128 scalar_product(Vec3D a, Vec3D b) {
return _mm_add_ps(_mm_add_ps(_mm_mul_ps(a[0], b[0]), _mm_mul_ps(a[1], b[1])),
_mm_mul_ps(a[2], b[2]));
}
```
The above will neither scale to AVX, AVX-512, etc. nor is it portable to other SIMD ISAs.
## Build Requirements
cmake >= 3.0
C++11 Compiler:
* GCC >= 4.8.1
* clang >= 3.4
* ICC >= 18.0.5
* Visual Studio 2019 (64-bit target)
## Building and Installing Vc
* Clone Vc and initialize Vc's git submodules:
```sh
git clone https://github.com/VcDevel/Vc.git
cd Vc
git submodule update --init
```
* Create a build directory:
```sh
$ mkdir build
$ cd build
```
* Configure with cmake and add relevant options:
```sh
$ cmake ..
```
Optionally, specify an installation directory:
```sh
$ cmake -DCMAKE_INSTALL_PREFIX=/opt/Vc ..
```
Optionally, include building the unit tests:
```sh
$ cmake -DBUILD_TESTING=ON ..
```
On Windows, if you have multiple versions of Visual Studio installed, you can select one:
```sh
$ cmake -G "Visual Studio 16 2019" ..
```
See `cmake --help` for a list of possible generators.
* Build and install:
```sh
$ cmake --build . -j 16
$ cmake --install . # may require permissions
```
On Windows, you can also open `Vc.sln` in Visual Studio and build/install from the IDE.
## Documentation
The documentation is generated via [doxygen](http://doxygen.org). You can build
the documentation by running `doxygen` in the `doc` subdirectory.
Alternatively, you can find nightly builds of the documentation at:
* [1.4 branch](https://vcdevel.github.io/Vc-1.4/)
* [1.4.4 release](https://vcdevel.github.io/Vc-1.4.4/)
* [1.4.3 release](https://vcdevel.github.io/Vc-1.4.3/)
* [1.4.2 release](https://vcdevel.github.io/Vc-1.4.2/)
* [1.4.1 release](https://vcdevel.github.io/Vc-1.4.1/)
* [1.4.0 release](https://vcdevel.github.io/Vc-1.4.0/)
* [1.3 branch](https://vcdevel.github.io/Vc-1.3/)
* [1.3.0 release](https://vcdevel.github.io/Vc-1.3.0/)
* [1.2.0 release](https://vcdevel.github.io/Vc-1.2.0/)
* [1.1.0 release](https://vcdevel.github.io/Vc-1.1.0/)
* [0.7 branch](https://vcdevel.github.io/Vc-0.7/)
## Publications
* [M. Kretz, "Extending C++ for Explicit Data-Parallel Programming via SIMD
Vector Types", Goethe University Frankfurt, Dissertation,
2015.](http://publikationen.ub.uni-frankfurt.de/frontdoor/index/index/docId/38415)
* [M. Kretz and V. Lindenstruth, "Vc: A C++ library for explicit
vectorization", Software: Practice and Experience,
2011.](http://dx.doi.org/10.1002/spe.1149)
* [M. Kretz, "Efficient Use of Multi- and Many-Core Systems with Vectorization
and Multithreading", University of Heidelberg,
2009.](http://code.compeng.uni-frankfurt.de/attachments/13/Diplomarbeit.pdf)
[Work on integrating the functionality of Vc in the C++ standard library.](
https://github.com/VcDevel/Vc/wiki/ISO-Standardization-of-the-Vector-classes)
## License
Vc is released under the terms of the [3-clause BSD license](http://opensource.org/licenses/BSD-3-Clause).
================================================
FILE: 3rdparty/Vc/Vc/Allocator
================================================
/* This file is part of the Vc library. {{{
Copyright © 2014 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_ALLOCATOR_H_
#define VC_ALLOCATOR_H_
#include <new>
#include <cstddef>
#include <cstdlib>
#include <utility>
#include "global.h"
#include "common/macros.h"
/**
* \ingroup Utilities
*
* Convenience macro to set the default allocator for a given \p Type to
* Vc::Allocator.
*
* \param Type Your type that you want to use with STL containers.
*
* \note You have to use this macro in the global namespace.
*/
#ifdef Vc_MSVC
#define Vc_DECLARE_ALLOCATOR(Type) \
namespace std \
{ \
template <> class allocator<Type> : public ::Vc::Allocator<Type> \
{ \
public: \
template <typename U> struct rebind { \
typedef ::std::allocator<U> other; \
}; \
/* MSVC brokenness: the following function is optional - just doesn't compile \
* without it */ \
const allocator &select_on_container_copy_construction() const { return *this; } \
}; \
}
#else
#define Vc_DECLARE_ALLOCATOR(Type) \
namespace std \
{ \
template <> class allocator<Type> : public ::Vc::Allocator<Type> \
{ \
public: \
template <typename U> struct rebind { \
typedef ::std::allocator<U> other; \
}; \
}; \
}
#endif
namespace Vc_VERSIONED_NAMESPACE
{
using std::size_t;
using std::ptrdiff_t;
/**
* \headerfile Allocator <Vc/Allocator>
* An allocator that uses global new and supports over-aligned types, as per [C++11 20.6.9].
*
* Meant as a simple replacement for the allocator defined in the C++ Standard.
* Allocation is done using the global new/delete operators. But if the alignment property of \p
* T is larger than the size of a pointer, the allocate function allocates slightly more memory
* to adjust the pointer for correct alignment.
*
* If the \p T does not require over-alignment no additional memory will be allocated.
*
* \tparam T The type of objects to allocate.
*
* Example:
* \code
* struct Data {
* Vc::float_v x, y, z;
* };
*
* void fun()
* {
* std::vector<Data> dat0; // this will use std::allocator<Data>, which probably ignores the
* // alignment requirements for Data. Thus any access to dat0 may
* // crash your program.
*
* std::vector<Data, Vc::Allocator<Data> > dat1; // now std::vector will get correctly aligned
* // memory. Accesses to dat1 are safe.
* ...
* \endcode
*
* %Vc ships a macro to conveniently tell STL to use Vc::Allocator per default for a given type:
* \code
* struct Data {
* Vc::float_v x, y, z;
* };
* Vc_DECLARE_ALLOCATOR(Data)
*
* void fun()
* {
* std::vector<Data> dat0; // good now
* ...
* \endcode
*
* \ingroup Utilities
*/
template<typename T> class Allocator
{
private:
enum Constants {
#ifdef Vc_HAVE_STD_MAX_ALIGN_T
NaturalAlignment = alignof(std::max_align_t),
#elif defined(Vc_HAVE_MAX_ALIGN_T)
NaturalAlignment = alignof(::max_align_t),
#else
NaturalAlignment = sizeof(void *) > alignof(long double) ? sizeof(void *) :
(alignof(long double) > alignof(long long) ? alignof(long double) : alignof(long long)),
#endif
#if defined Vc_IMPL_AVX
SimdAlignment = 32,
#elif defined Vc_IMPL_SSE
SimdAlignment = 16,
#else
SimdAlignment = 1,
#endif
Alignment = alignof(T) > SimdAlignment ? alignof(T) : SimdAlignment,
/* The number of extra bytes allocated must be large enough to put a pointer right
* before the adjusted address. This pointer stores the original address, which is
* required to call ::operator delete in deallocate.
*
* The address we get from ::operator new is a multiple of NaturalAlignment:
* p = N * NaturalAlignment
*
* Since all alignments are powers of two, Alignment is a multiple of NaturalAlignment:
* Alignment = k * NaturalAlignment
*
* two cases:
* 1. If p is already aligned to Alignment then allocate will return p + Alignment. In
* this case there are Alignment Bytes available to store a pointer.
* 2. If p is not aligned then p + (k - (N modulo k)) * NaturalAlignment will be
* returned. Since NaturalAlignment >= sizeof(void*) the pointer fits.
*/
ExtraBytes = Alignment > NaturalAlignment ? Alignment : 0,
AlignmentMask = Alignment - 1
};
public:
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef T* pointer;
typedef const T* const_pointer;
typedef T& reference;
typedef const T& const_reference;
typedef T value_type;
template<typename U> struct rebind { typedef Allocator<U> other; };
Allocator() throw() { }
Allocator(const Allocator&) throw() { }
template<typename U> Allocator(const Allocator<U>&) throw() { }
pointer address(reference x) const { return &x; }
const_pointer address(const_reference x) const { return &x; }
pointer allocate(size_type n, const void* = 0)
{
if (n > this->max_size()) {
throw std::bad_alloc();
}
char *p = static_cast<char *>(::operator new(n * sizeof(T) + ExtraBytes));
if (ExtraBytes > 0) {
char *const pp = p;
p += ExtraBytes;
const char *null = 0;
p -= ((p - null) & AlignmentMask); // equivalent to p &= ~AlignmentMask;
reinterpret_cast<char **>(p)[-1] = pp;
}
return reinterpret_cast<pointer>(p);
}
void deallocate(pointer p, size_type)
{
if (ExtraBytes > 0) {
p = reinterpret_cast<pointer *>(p)[-1];
}
::operator delete(p);
}
size_type max_size() const throw() { return size_t(-1) / sizeof(T); }
#ifdef Vc_MSVC
// MSVC brokenness: the following function is optional - just doesn't compile without it
const Allocator &select_on_container_copy_construction() const { return *this; }
// MSVC also requires a function that neither C++98 nor C++11 mention
// but it doesn't support variadic templates... otherwise the Vc_CXX11 clause would be nice
void construct(pointer p) { ::new(p) T(); }
// we still need the C++98 version:
void construct(pointer p, const T& val) { ::new(p) T(val); }
void destroy(pointer p) { p->~T(); }
#else
template<typename U, typename... Args> void construct(U* p, Args&&... args)
{
::new(p) U(std::forward<Args>(args)...);
}
template<typename U> void destroy(U* p) { p->~U(); }
#endif
};
template<typename T> inline bool operator==(const Allocator<T>&, const Allocator<T>&) { return true; }
template<typename T> inline bool operator!=(const Allocator<T>&, const Allocator<T>&) { return false; }
}
#include "vector.h"
namespace std
{
template<typename T, typename Abi>
class allocator<Vc::Vector<T, Abi> > : public ::Vc::Allocator<Vc::Vector<T, Abi> >
{
public:
template<typename U> struct rebind { typedef ::std::allocator<U> other; };
#ifdef Vc_MSVC
// MSVC brokenness: the following function is optional - just doesn't compile without it
const allocator &select_on_container_copy_construction() const { return *this; }
#endif
};
template <typename T, typename Abi>
class allocator<Vc::Mask<T, Abi>> : public ::Vc::Allocator<Vc::Mask<T, Abi>>
{
public:
template<typename U> struct rebind { typedef ::std::allocator<U> other; };
#ifdef Vc_MSVC
// MSVC brokenness: the following function is optional - just doesn't compile without it
const allocator &select_on_container_copy_construction() const { return *this; }
#endif
};
template <typename T, std::size_t N, typename V, std::size_t M>
class allocator<Vc::SimdArray<T, N, V, M>> : public ::Vc::Allocator<Vc::SimdArray<T, N, V, M>>
{
public:
template<typename U> struct rebind { typedef ::std::allocator<U> other; };
#ifdef Vc_MSVC
// MSVC brokenness: the following function is optional - just doesn't compile without it
const allocator &select_on_container_copy_construction() const { return *this; }
#endif
};
template <typename T, std::size_t N, typename V, std::size_t M>
class allocator<Vc::SimdMaskArray<T, N, V, M>> : public ::Vc::Allocator<Vc::SimdMaskArray<T, N, V, M>>
{
public:
template<typename U> struct rebind { typedef ::std::allocator<U> other; };
#ifdef Vc_MSVC
// MSVC brokenness: the following function is optional - just doesn't compile without it
const allocator &select_on_container_copy_construction() const { return *this; }
#endif
};
}
#endif // VC_ALLOCATOR_H_
// vim: ft=cpp et sw=4 sts=4
================================================
FILE: 3rdparty/Vc/Vc/IO
================================================
/* This file is part of the Vc library. {{{
Copyright © 2009-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_IO_
#define VC_IO_
#include "common/types.h"
#include "common/simdarrayfwd.h"
#include "common/memoryfwd.h"
#include <iostream>
#if defined(__GNUC__) && !defined(_WIN32) && defined(_GLIBCXX_OSTREAM)
#define Vc_HACK_OSTREAM_FOR_TTY 1
#endif
#ifdef Vc_HACK_OSTREAM_FOR_TTY
#include <unistd.h>
#include <ext/stdio_sync_filebuf.h>
#endif
namespace Vc_VERSIONED_NAMESPACE
{
namespace
{
#ifdef Vc_HACK_OSTREAM_FOR_TTY
class hacked_ostream : public std::ostream
{
public:
using std::ostream::_M_streambuf;
};
bool mayUseColor(const std::ostream &os) __attribute__((__const__));
bool mayUseColor(const std::ostream &os)
{
std::basic_streambuf<char> *hack1 =
const_cast<std::basic_streambuf<char> *>(os.*(&hacked_ostream::_M_streambuf));
__gnu_cxx::stdio_sync_filebuf<char> *hack =
dynamic_cast<__gnu_cxx::stdio_sync_filebuf<char> *>(hack1);
if (!hack) {
return false;
}
FILE *file = hack->file();
return 1 == isatty(fileno(file));
}
#else
bool mayUseColor(const std::ostream &) { return false; }
#endif
} // anonymous namespace
namespace AnsiColor
{
struct Type
{
const char *data;
};
static const Type green = {"\033[1;40;32m"};
static const Type yellow = {"\033[1;40;33m"};
static const Type blue = {"\033[1;40;34m"};
static const Type normal = {"\033[0m"};
inline std::ostream &operator<<(std::ostream &out, const Type &c)
{
if (mayUseColor(out)) {
out << c.data;
}
return out;
}
} // namespace AnsiColor
/**
* \ingroup Vectors
* \headerfile IO <Vc/IO>
*
* Prints the contents of a vector into a stream object.
*
* \code
* const Vc::int_v v(Vc::IndexesFromZero);
* std::cout << v << std::endl;
* \endcode
* will output (with SSE):
\verbatim
[0, 1, 2, 3]
\endverbatim
*
* \param out Any standard C++ ostream object. For example std::cout or a
* std::stringstream object.
* \param v Any Vc::Vector object.
* \return The ostream object: to chain multiple stream operations.
*
* \note With the GNU standard library this function will check whether the
* output stream is a tty in which case it colorizes the output.
*/
template <typename T, typename Abi>
inline std::ostream &operator<<(std::ostream &out, const Vc::Vector<T, Abi> &v)
{
using TT = typename std::conditional<std::is_same<T, char>::value ||
std::is_same<T, unsigned char>::value ||
std::is_same<T, signed char>::value,
int,
T>::type;
out << AnsiColor::green << '[';
out << TT(v[0]);
for (size_t i = 1; i < v.Size; ++i) {
out << ", " << TT(v[i]);
}
out << ']' << AnsiColor::normal;
return out;
}
/**
* \ingroup Masks
* \headerfile IO <Vc/IO>
*
* Prints the contents of a mask into a stream object.
*
* \code
* const Vc::short_m m = Vc::short_v::IndexesFromZero() < 3;
* std::cout << m << std::endl;
* \endcode
* will output (with SSE):
\verbatim
m[1110 0000]
\endverbatim
*
* \param out Any standard C++ ostream object. For example std::cout or a
* std::stringstream object.
* \param m Any Vc::Mask object.
* \return The ostream object: to chain multiple stream operations.
*
* \note With the GNU standard library this function will check whether the
* output stream is a tty in which case it colorizes the output.
*/
template <typename T, typename Abi>
inline std::ostream &operator<<(std::ostream &out, const Vc::Mask<T, Abi> &m)
{
out << AnsiColor::blue << "m[";
for (unsigned int i = 0; i < m.Size; ++i) {
if (i > 0 && (i % 4) == 0) {
out << ' ';
}
if (m[i]) {
out << AnsiColor::yellow << '1';
} else {
out << AnsiColor::blue << '0';
}
}
out << AnsiColor::blue << ']' << AnsiColor::normal;
return out;
}
namespace Common
{
#ifdef DOXYGEN
/**
* \ingroup Utilities
* \headerfile dox.h <Vc/IO>
*
* Prints the contents of a Memory object into a stream object.
*
* \code
* Vc::Memory<int_v, 10> m;
* for (int i = 0; i < m.entriesCount(); ++i) {
* m[i] = i;
* }
* std::cout << m << std::endl;
* \endcode
* will output (with SSE):
\verbatim
{[0, 1, 2, 3] [4, 5, 6, 7] [8, 9, 0, 0]}
\endverbatim
*
* \param s Any standard C++ ostream object. For example std::cout or a std::stringstream object.
* \param m Any Vc::Memory object.
* \return The ostream object: to chain multiple stream operations.
*
* \note With the GNU standard library this function will check whether the
* output stream is a tty in which case it colorizes the output.
*
* \warning Please do not forget that printing a large memory object can take a long time.
*/
template<typename V, typename Parent, typename Dimension, typename RM>
inline std::ostream &operator<<(std::ostream &s, const Vc::MemoryBase<V, Parent, Dimension, RM> &m);
#endif
template<typename V, typename Parent, typename RM>
inline std::ostream &operator<<(std::ostream &out, const MemoryBase<V, Parent, 1, RM> &m )
{
out << AnsiColor::blue << '{' << AnsiColor::normal;
for (unsigned int i = 0; i < m.vectorsCount(); ++i) {
out << V(m.vector(i));
}
out << AnsiColor::blue << '}' << AnsiColor::normal;
return out;
}
template<typename V, typename Parent, typename RM>
inline std::ostream &operator<<(std::ostream &out, const MemoryBase<V, Parent, 2, RM> &m )
{
out << AnsiColor::blue << '{' << AnsiColor::normal;
for (size_t i = 0; i < m.rowsCount(); ++i) {
if (i > 0) {
out << "\n ";
}
const size_t vcount = m[i].vectorsCount();
for (size_t j = 0; j < vcount; ++j) {
out << V(m[i].vector(j));
}
}
out << AnsiColor::blue << '}' << AnsiColor::normal;
return out;
}
} // namespace Common
template<typename T, std::size_t N>
inline std::ostream &operator<<(std::ostream &out, const SimdArray<T, N> &v)
{
out << AnsiColor::green << '<' << v[0];
for (size_t i = 1; i < N; ++i) {
if (i % 4 == 0) out << " |";
out << ' ' << v[i];
}
return out << '>' << AnsiColor::normal;
}
template<typename T, std::size_t N>
inline std::ostream &operator<<(std::ostream &out, const SimdMaskArray<T, N> &m)
{
out << AnsiColor::blue << "«";
for (size_t i = 0; i < N; ++i) {
if (i > 0 && (i % 4) == 0) {
out << ' ';
}
if ( m[i] ) {
out << AnsiColor::yellow << '1';
} else {
out << AnsiColor::blue << '0';
}
}
return out << AnsiColor::blue << "»" << AnsiColor::normal;
}
}
#endif // VC_IO_
// vim: ft=cpp foldmethod=marker
================================================
FILE: 3rdparty/Vc/Vc/Memory
================================================
/* This file is part of the Vc library. {{{
Copyright © 2009-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_MEMORY_
#define VC_MEMORY_
#include "vector.h"
#include "common/memory.h"
#include "common/interleavedmemory.h"
#include "common/make_unique.h"
namespace Vc_VERSIONED_NAMESPACE
{
using Common::make_unique;
}
#endif // VC_MEMORY_
// vim: ft=cpp foldmethod=marker
================================================
FILE: 3rdparty/Vc/Vc/SimdArray
================================================
/* This file is part of the Vc library. {{{
Copyright © 2013-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_SIMDARRAY_
#define VC_SIMDARRAY_
#include "common/simdarray.h"
#endif // VC_SIMDARRAY_
// vim: ft=cpp foldmethod=marker
================================================
FILE: 3rdparty/Vc/Vc/Utils
================================================
/* This file is part of the Vc library. {{{
Copyright © 2010-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_UTILS_
#define VC_UTILS_
#include "global.h"
#ifdef Vc_IMPL_Scalar
# define VECTOR_NAMESPACE Scalar
#else
# define VECTOR_NAMESPACE SSE
#endif
#include "common/deinterleave.h"
#include "common/makeContainer.h"
#endif // VC_UTILS_
// vim: ft=cpp foldmethod=marker
================================================
FILE: 3rdparty/Vc/Vc/Vc
================================================
/* This file is part of the Vc library. {{{
Copyright © 2009-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_VC_
#define VC_VC_
#include "vector.h"
#include "IO"
#include "Memory"
#include "Utils"
#include "Allocator"
#include "algorithm"
#include "iterators"
#include "simdize"
#include "array"
#include "span"
#include "vector"
#endif // VC_VC_
// vim: ft=cpp foldmethod=marker
================================================
FILE: 3rdparty/Vc/Vc/algorithm
================================================
#include "common/algorithms.h"
================================================
FILE: 3rdparty/Vc/Vc/array
================================================
/* This file is part of the Vc library. {{{
Copyright © 2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
//===---------------------------- array -----------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef VC_INCLUDE_VC_ARRAY_
#define VC_INCLUDE_VC_ARRAY_
#include <type_traits>
#include <utility>
#include <iterator>
#include <algorithm>
#include <stdexcept>
#include "common/subscript.h"
namespace Vc_VERSIONED_NAMESPACE
{
/**
* \ingroup Containers
* This is `std::array` with additional subscript operators supporting gather and scatter operations.
*
* The [std::array](https://en.cppreference.com/w/cpp/container/array) documentation applies.
*
* Gathers from structured data (AoS: arrays of struct) are possible via a special
* subscript operator.
* Example:
* \code
* Vc::array<float, 100> data;
* std::iota(data.begin(), data.end(), 0.f); // fill with values 0, 1, 2, ...
* auto indexes = float_v::IndexType::IndexesFromZero();
* float_v gathered = data[indexes]; // gathered == [0, 1, 2, ...]
* \endcode
*
* This also works for gathers into arrays of structures:
* \code
* struct Point { float x, y, z; };
* Vc::array<Point, 100> points;
* // fill points ...
* auto indexes = float_v::IndexType::IndexesFromZero();
* float_v xs = data[indexes][&Point::x]; // [points[0].x, points[1].x, points[2].x, ...]
* float_v ys = data[indexes][&Point::y]; // [points[0].y, points[1].y, points[2].y, ...]
* float_v zs = data[indexes][&Point::z]; // [points[0].z, points[1].z, points[2].z, ...]
* \endcode
*
* Arrays may also be nested:
* \code:
* Vc::array<Vc::array<float, 3>, 100> points;
* // fill points ...
* auto indexes = float_v::IndexType::IndexesFromZero();
* float_v xs = data[indexes][0]; // [points[0][0], points[1][0], points[2][0], ...]
* float_v ys = data[indexes][1]; // [points[0][1], points[1][1], points[2][1], ...]
* float_v zs = data[indexes][2]; // [points[0][2], points[1][2], points[2][2], ...]
* \endcode
*/
template <class T, size_t Size> struct array {
// types:
typedef array self_;
typedef T value_type;
typedef value_type& reference;
typedef const value_type& const_reference;
typedef value_type* iterator;
typedef const value_type* const_iterator;
typedef value_type* pointer;
typedef const value_type* const_pointer;
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
value_type elems_[Size > 0 ? Size : 1];
// No explicit construct/copy/destroy for aggregate type
void fill(const value_type& u_) { std::fill_n(elems_, Size, u_); }
void swap(array& a_) noexcept(std::swap(std::declval<T &>(), std::declval<T &>()))
{
std::swap_ranges(elems_, elems_ + Size, a_.elems_);
}
// iterators:
iterator begin() noexcept { return iterator(elems_); }
const_iterator begin() const noexcept { return const_iterator(elems_); }
iterator end() noexcept { return iterator(elems_ + Size); }
const_iterator end() const noexcept { return const_iterator(elems_ + Size); }
reverse_iterator rbegin() noexcept { return reverse_iterator(end()); }
const_reverse_iterator rbegin() const noexcept
{
return const_reverse_iterator(end());
}
reverse_iterator rend() noexcept { return reverse_iterator(begin()); }
const_reverse_iterator rend() const noexcept
{
return const_reverse_iterator(begin());
}
const_iterator cbegin() const noexcept { return begin(); }
const_iterator cend() const noexcept { return end(); }
const_reverse_iterator crbegin() const noexcept { return rbegin(); }
const_reverse_iterator crend() const noexcept { return rend(); }
// capacity:
constexpr size_type size() const noexcept { return Size; }
constexpr size_type max_size() const noexcept { return Size; }
constexpr bool empty() const noexcept { return Size == 0; }
// element access:
reference operator[](size_type n_) { return elems_[n_]; }
constexpr const_reference operator[](size_type n_) const { return elems_[n_]; }
/**
* \name Data-Parallel Subscripting for Gather & Scatter
*/
///@{
template <typename I>
Vc_ALWAYS_INLINE auto operator[](I&& arg_)
-> decltype(subscript_operator(*this, std::forward<I>(arg_)))
{
return subscript_operator(*this, std::forward<I>(arg_));
}
template <typename I>
Vc_ALWAYS_INLINE auto operator[](I&& arg_) const
-> decltype(subscript_operator(*this, std::forward<I>(arg_)))
{
return subscript_operator(*this, std::forward<I>(arg_));
}
///@}
reference at(size_type n_);
constexpr const_reference at(size_type n_) const;
reference front() { return elems_[0]; }
constexpr const_reference front() const { return elems_[0]; }
reference back() { return elems_[Size > 0 ? Size - 1 : 0]; }
constexpr const_reference back() const { return elems_[Size > 0 ? Size - 1 : 0]; }
value_type* data() noexcept { return elems_; }
const value_type* data() const noexcept { return elems_; }
};
template <class T, size_t Size>
typename array<T, Size>::reference array<T, Size>::at(size_type n_)
{
if (n_ >= Size) {
throw std::out_of_range("array::at");
}
return elems_[n_];
}
template <class T, size_t Size>
constexpr typename array<T, Size>::const_reference array<T, Size>::at(size_type n_) const
{
return n_ >= Size ? (throw std::out_of_range("array::at"), elems_[0]) : elems_[n_];
}
template <class T, size_t Size>
inline bool operator==(const array<T, Size>& x_, const array<T, Size>& y_)
{
return std::equal(x_.elems_, x_.elems_ + Size, y_.elems_);
}
template <class T, size_t Size>
inline bool operator!=(const array<T, Size>& x_, const array<T, Size>& y_)
{
return !(x_ == y_);
}
template <class T, size_t Size>
inline bool operator<(const array<T, Size>& x_, const array<T, Size>& y_)
{
return std::lexicographical_compare(x_.elems_, x_.elems_ + Size, y_.elems_,
y_.elems_ + Size);
}
template <class T, size_t Size>
inline bool operator>(const array<T, Size>& x_, const array<T, Size>& y_)
{
return y_ < x_;
}
template <class T, size_t Size>
inline bool operator<=(const array<T, Size>& x_, const array<T, Size>& y_)
{
return !(y_ < x_);
}
template <class T, size_t Size>
inline bool operator>=(const array<T, Size>& x_, const array<T, Size>& y_)
{
return !(x_ < y_);
}
/**\name non-member begin & end
* Implement the non-member begin & end functions in the %Vc namespace so that ADL works
* and `begin(some_vc_array)` always works.
*/
///@{
template <typename T, std::size_t N>
inline auto begin(array<T, N>& arr) -> decltype(arr.begin())
{
return arr.begin();
}
template <typename T, std::size_t N>
inline auto begin(const array<T, N>& arr) -> decltype(arr.begin())
{
return arr.begin();
}
template <typename T, std::size_t N>
inline auto end(array<T, N>& arr) -> decltype(arr.end())
{
return arr.end();
}
template <typename T, std::size_t N>
inline auto end(const array<T, N>& arr) -> decltype(arr.end())
{
return arr.end();
}
///@}
namespace Traits
{
template <typename T, std::size_t N>
struct has_no_allocated_data_impl<Vc::array<T, N>> : public std::true_type
{
};
template <typename T, std::size_t N>
struct has_contiguous_storage_impl<Vc::array<T, N>> : public std::true_type
{
};
} // namespace Traits
} // namespace Vc
namespace std
{
template <class T, size_t Size>
inline
#ifdef Vc_MSVC
// MSVC fails to do SFINAE correctly and gets totally confused:
// error C2433: 'type': 'inline' not permitted on data declarations
// error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
// error C2061: syntax error: identifier 'swap'
void
#else
typename enable_if<is_same<void, decltype(swap(declval<T&>(), declval<T&>()))>::value,
void>::type
#endif
swap(const Vc::array<T, Size>& x_,
const Vc::array<T, Size>& y_) noexcept(swap(declval<T&>(), declval<T&>()))
{
x_.swap(y_);
}
template <class T, size_t Size>
class tuple_size<Vc::array<T, Size>> : public integral_constant<size_t, Size>
{
};
template <size_t I, class T, size_t Size> class tuple_element<I, Vc::array<T, Size>>
{
public:
typedef T type;
};
template <size_t I, class T, size_t Size>
inline constexpr typename std::enable_if<(I < Size), T&>::type get(
Vc::array<T, Size>& a_) noexcept
{
return a_.elems_[I];
}
template <size_t I, class T, size_t Size>
inline constexpr typename std::enable_if<(I < Size), const T&>::type get(
const Vc::array<T, Size>& a_) noexcept
{
return a_.elems_[I];
}
template <size_t I, class T, size_t Size>
inline constexpr typename std::enable_if<(I < Size), T&&>::type get(
Vc::array<T, Size>&& a_) noexcept
{
return std::move(a_.elems_[I]);
}
} // namespace std
#endif // VC_INCLUDE_VC_ARRAY_
// vim: ft=cpp foldmethod=marker
================================================
FILE: 3rdparty/Vc/Vc/avx/casts.h
================================================
/* This file is part of the Vc library. {{{
Copyright © 2009-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_AVX_CASTS_H_
#define VC_AVX_CASTS_H_
#include "intrinsics.h"
#include "types.h"
#include "../sse/casts.h"
#include "shuffle.h"
#include "macros.h"
namespace Vc_VERSIONED_NAMESPACE
{
namespace AVX
{
namespace Casts
{
template<typename T> Vc_INTRINSIC_L T avx_cast(__m128 v) Vc_INTRINSIC_R;
template<typename T> Vc_INTRINSIC_L T avx_cast(__m128i v) Vc_INTRINSIC_R;
template<typename T> Vc_INTRINSIC_L T avx_cast(__m128d v) Vc_INTRINSIC_R;
template<typename T> Vc_INTRINSIC_L T avx_cast(__m256 v) Vc_INTRINSIC_R;
template<typename T> Vc_INTRINSIC_L T avx_cast(__m256i v) Vc_INTRINSIC_R;
template<typename T> Vc_INTRINSIC_L T avx_cast(__m256d v) Vc_INTRINSIC_R;
// 128 -> 128
template<> Vc_INTRINSIC __m128 avx_cast(__m128 v) { return v; }
template<> Vc_INTRINSIC __m128 avx_cast(__m128i v) { return _mm_castsi128_ps(v); }
template<> Vc_INTRINSIC __m128 avx_cast(__m128d v) { return _mm_castpd_ps(v); }
template<> Vc_INTRINSIC __m128i avx_cast(__m128 v) { return _mm_castps_si128(v); }
template<> Vc_INTRINSIC __m128i avx_cast(__m128i v) { return v; }
template<> Vc_INTRINSIC __m128i avx_cast(__m128d v) { return _mm_castpd_si128(v); }
template<> Vc_INTRINSIC __m128d avx_cast(__m128 v) { return _mm_castps_pd(v); }
template<> Vc_INTRINSIC __m128d avx_cast(__m128i v) { return _mm_castsi128_pd(v); }
template<> Vc_INTRINSIC __m128d avx_cast(__m128d v) { return v; }
// 128 -> 256
// FIXME: the following casts leave the upper 128bits undefined. With GCC and ICC I've never
// seen the cast not do what I want though: after a VEX-coded SSE instruction the register's
// upper 128bits are zero. Thus using the same register as AVX register will have the upper
// 128bits zeroed. MSVC, though, implements _mm256_castxx128_xx256 with a 128bit move to memory
// + 256bit load. Thus the upper 128bits are really undefined. But there is no intrinsic to do
// what I want (i.e. alias the register, disallowing the move to memory in-between). I'm stuck,
// do we really want to rely on specific compiler behavior here?
template<> Vc_INTRINSIC __m256 avx_cast(__m128 v) { return _mm256_castps128_ps256(v); }
template<> Vc_INTRINSIC __m256 avx_cast(__m128i v) { return _mm256_castps128_ps256(_mm_castsi128_ps(v)); }
template<> Vc_INTRINSIC __m256 avx_cast(__m128d v) { return _mm256_castps128_ps256(_mm_castpd_ps(v)); }
template<> Vc_INTRINSIC __m256i avx_cast(__m128 v) { return _mm256_castsi128_si256(_mm_castps_si128(v)); }
template<> Vc_INTRINSIC __m256i avx_cast(__m128i v) { return _mm256_castsi128_si256(v); }
template<> Vc_INTRINSIC __m256i avx_cast(__m128d v) { return _mm256_castsi128_si256(_mm_castpd_si128(v)); }
template<> Vc_INTRINSIC __m256d avx_cast(__m128 v) { return _mm256_castpd128_pd256(_mm_castps_pd(v)); }
template<> Vc_INTRINSIC __m256d avx_cast(__m128i v) { return _mm256_castpd128_pd256(_mm_castsi128_pd(v)); }
template<> Vc_INTRINSIC __m256d avx_cast(__m128d v) { return _mm256_castpd128_pd256(v); }
#if defined Vc_MSVC || defined Vc_CLANG || defined Vc_APPLECLANG
static Vc_INTRINSIC Vc_CONST __m256 zeroExtend(__m128 v) { return _mm256_permute2f128_ps (_mm256_castps128_ps256(v), _mm256_castps128_ps256(v), 0x80); }
static Vc_INTRINSIC Vc_CONST __m256i zeroExtend(__m128i v) { return _mm256_permute2f128_si256(_mm256_castsi128_si256(v), _mm256_castsi128_si256(v), 0x80); }
static Vc_INTRINSIC Vc_CONST __m256d zeroExtend(__m128d v) { return _mm256_permute2f128_pd (_mm256_castpd128_pd256(v), _mm256_castpd128_pd256(v), 0x80); }
#else
static Vc_INTRINSIC Vc_CONST __m256 zeroExtend(__m128 v) { return _mm256_castps128_ps256(v); }
static Vc_INTRINSIC Vc_CONST __m256i zeroExtend(__m128i v) { return _mm256_castsi128_si256(v); }
static Vc_INTRINSIC Vc_CONST __m256d zeroExtend(__m128d v) { return _mm256_castpd128_pd256(v); }
#endif
// 256 -> 128
template<> Vc_INTRINSIC __m128 avx_cast(__m256 v) { return _mm256_castps256_ps128(v); }
template<> Vc_INTRINSIC __m128 avx_cast(__m256i v) { return _mm256_castps256_ps128(_mm256_castsi256_ps(v)); }
template<> Vc_INTRINSIC __m128 avx_cast(__m256d v) { return _mm256_castps256_ps128(_mm256_castpd_ps(v)); }
template<> Vc_INTRINSIC __m128i avx_cast(__m256 v) { return _mm256_castsi256_si128(_mm256_castps_si256(v)); }
template<> Vc_INTRINSIC __m128i avx_cast(__m256i v) { return _mm256_castsi256_si128(v); }
template<> Vc_INTRINSIC __m128i avx_cast(__m256d v) { return _mm256_castsi256_si128(_mm256_castpd_si256(v)); }
template<> Vc_INTRINSIC __m128d avx_cast(__m256 v) { return _mm256_castpd256_pd128(_mm256_castps_pd(v)); }
template<> Vc_INTRINSIC __m128d avx_cast(__m256i v) { return _mm256_castpd256_pd128(_mm256_castsi256_pd(v)); }
template<> Vc_INTRINSIC __m128d avx_cast(__m256d v) { return _mm256_castpd256_pd128(v); }
// 256 -> 256
template<> Vc_INTRINSIC __m256 avx_cast(__m256 v) { return v; }
template<> Vc_INTRINSIC __m256 avx_cast(__m256i v) { return _mm256_castsi256_ps(v); }
template<> Vc_INTRINSIC __m256 avx_cast(__m256d v) { return _mm256_castpd_ps(v); }
template<> Vc_INTRINSIC __m256i avx_cast(__m256 v) { return _mm256_castps_si256(v); }
template<> Vc_INTRINSIC __m256i avx_cast(__m256i v) { return v; }
template<> Vc_INTRINSIC __m256i avx_cast(__m256d v) { return _mm256_castpd_si256(v); }
template<> Vc_INTRINSIC __m256d avx_cast(__m256 v) { return _mm256_castps_pd(v); }
template<> Vc_INTRINSIC __m256d avx_cast(__m256i v) { return _mm256_castsi256_pd(v); }
template<> Vc_INTRINSIC __m256d avx_cast(__m256d v) { return v; }
// simplify splitting 256-bit registers in 128-bit registers
Vc_INTRINSIC Vc_CONST __m128 lo128(__m256 v) { return avx_cast<__m128>(v); }
Vc_INTRINSIC Vc_CONST __m128d lo128(__m256d v) { return avx_cast<__m128d>(v); }
Vc_INTRINSIC Vc_CONST __m128i lo128(__m256i v) { return avx_cast<__m128i>(v); }
Vc_INTRINSIC Vc_CONST __m128 hi128(__m256 v) { return extract128<1>(v); }
Vc_INTRINSIC Vc_CONST __m128d hi128(__m256d v) { return extract128<1>(v); }
Vc_INTRINSIC Vc_CONST __m128i hi128(__m256i v) { return extract128<1>(v); }
// simplify combining 128-bit registers in 256-bit registers
Vc_INTRINSIC Vc_CONST __m256 concat(__m128 a, __m128 b) { return insert128<1>(avx_cast<__m256 >(a), b); }
Vc_INTRINSIC Vc_CONST __m256d concat(__m128d a, __m128d b) { return insert128<1>(avx_cast<__m256d>(a), b); }
Vc_INTRINSIC Vc_CONST __m256i concat(__m128i a, __m128i b) { return insert128<1>(avx_cast<__m256i>(a), b); }
} // namespace Casts
using namespace Casts;
} // namespace AVX
namespace AVX2
{
using namespace AVX::Casts;
} // namespace AVX2
namespace AVX
{
template <typename From, typename To> struct ConvertTag {};
Vc_INTRINSIC __m256i convert(__m256 v, ConvertTag<float , int>) { return _mm256_cvttps_epi32(v); }
Vc_INTRINSIC __m128i convert(__m256d v, ConvertTag<double, int>) { return _mm256_cvttpd_epi32(v); }
Vc_INTRINSIC __m256i convert(__m256i v, ConvertTag<int , int>) { return v; }
Vc_INTRINSIC __m256i convert(__m256i v, ConvertTag<uint , int>) { return v; }
Vc_INTRINSIC __m256i convert(__m128i v, ConvertTag<short , int>) {
#ifdef Vc_IMPL_AVX2
return _mm256_cvtepi16_epi32(v);
#else
return AVX::srai_epi32<16>(
concat(_mm_unpacklo_epi16(v, v), _mm_unpackhi_epi16(v, v)));
#endif
}
Vc_INTRINSIC __m256i convert(__m128i v, ConvertTag<ushort, int>) {
#ifdef Vc_IMPL_AVX2
return _mm256_cvtepu16_epi32(v);
#else
return AVX::srli_epi32<16>(
concat(_mm_unpacklo_epi16(v, v), _mm_unpackhi_epi16(v, v)));
#endif
}
Vc_INTRINSIC __m256i convert(__m256 v, ConvertTag<float , uint>) {
using namespace AVX;
return _mm256_castps_si256(_mm256_blendv_ps(
_mm256_castsi256_ps(_mm256_cvttps_epi32(v)),
_mm256_castsi256_ps(add_epi32(_mm256_cvttps_epi32(_mm256_sub_ps(v, set2power31_ps())),
set2power31_epu32())),
cmpge_ps(v, set2power31_ps())));
}
Vc_INTRINSIC __m128i convert(__m256d v, ConvertTag<double, uint>) {
using namespace AVX;
return _mm_xor_si128(
_mm256_cvttpd_epi32(_mm256_sub_pd(_mm256_floor_pd(v), set1_pd(0x80000000u))),
_mm_set2power31_epu32());
}
Vc_INTRINSIC __m256i convert(__m256i v, ConvertTag<int , uint>) { return v; }
Vc_INTRINSIC __m256i convert(__m256i v, ConvertTag<uint , uint>) { return v; }
Vc_INTRINSIC __m256i convert(__m128i v, ConvertTag<short , uint>) {
#ifdef Vc_IMPL_AVX2
return _mm256_cvtepi16_epi32(v);
#else
return AVX::srai_epi32<16>(
concat(_mm_unpacklo_epi16(v, v), _mm_unpackhi_epi16(v, v)));
#endif
}
Vc_INTRINSIC __m256i convert(__m128i v, ConvertTag<ushort, uint>) {
#ifdef Vc_IMPL_AVX2
return _mm256_cvtepu16_epi32(v);
#else
return AVX::srli_epi32<16>(
concat(_mm_unpacklo_epi16(v, v), _mm_unpackhi_epi16(v, v)));
#endif
}
Vc_INTRINSIC __m256 convert(__m256 v, ConvertTag<float , float>) { return v; }
Vc_INTRINSIC __m128 convert(__m256d v, ConvertTag<double, float>) { return _mm256_cvtpd_ps(v); }
Vc_INTRINSIC __m256 convert(__m256i v, ConvertTag<int , float>) { return _mm256_cvtepi32_ps(v); }
Vc_INTRINSIC __m256 convert(__m256i v, ConvertTag<uint , float>) {
// this is complicated because cvtepi32_ps only supports signed input. Thus, all
// input values with the MSB set would produce a negative result. We can reuse the
// cvtepi32_ps instruction if we unset the MSB. But then the rounding results can be
// different. Since float uses 24 bits for the mantissa (effectively), the 9-bit LSB
// determines the rounding direction. (Consider the bits ...8'7654'3210. The bits [0:7]
// need to be dropped and if > 0x80 round up, if < 0x80 round down. If [0:7] == 0x80
// then the rounding direction is determined by bit [8] for round to even. That's why
// the 9th bit is relevant for the rounding decision.)
// If the MSB of the input is set to 0, the cvtepi32_ps instruction makes its rounding
// decision on the lowest 8 bits instead. A second rounding decision is made when
// float(0x8000'0000) is added. This will rarely fix the rounding issue.
//
// Here's what the standard rounding mode expects:
// 0xc0000080 should cvt to 0xc0000000
// 0xc0000081 should cvt to 0xc0000100
// -- should cvt to 0xc0000100
// 0xc000017f should cvt to 0xc0000100
// 0xc0000180 should cvt to 0xc0000200
//
// However: using float(input ^ 0x8000'0000) + float(0x8000'0000) we get:
// 0xc0000081 would cvt to 0xc0000000
// 0xc00000c0 would cvt to 0xc0000000
// 0xc00000c1 would cvt to 0xc0000100
// 0xc000013f would cvt to 0xc0000100
// 0xc0000140 would cvt to 0xc0000200
//
// Solution: float(input & 0x7fff'fe00) + (float(0x8000'0000) + float(input & 0x1ff))
// This ensures the rounding decision is made on the 9-bit LSB when 0x8000'0000 is
// added to the float value of the low 8 bits of the input.
using namespace AVX;
return _mm256_blendv_ps(
_mm256_cvtepi32_ps(v),
_mm256_add_ps(_mm256_cvtepi32_ps(and_si256(v, set1_epi32(0x7ffffe00))),
_mm256_add_ps(set2power31_ps(), _mm256_cvtepi32_ps(and_si256(
v, set1_epi32(0x000001ff))))),
_mm256_castsi256_ps(cmplt_epi32(v, _mm256_setzero_si256())));
}
Vc_INTRINSIC __m256 convert(__m128i v, ConvertTag<short , float>) { return _mm256_cvtepi32_ps(convert(v, ConvertTag< short, int>())); }
Vc_INTRINSIC __m256 convert(__m128i v, ConvertTag<ushort, float>) { return _mm256_cvtepi32_ps(convert(v, ConvertTag<ushort, int>())); }
Vc_INTRINSIC __m256d convert(__m128 v, ConvertTag<float , double>) { return _mm256_cvtps_pd(v); }
Vc_INTRINSIC __m256d convert(__m256d v, ConvertTag<double, double>) { return v; }
Vc_INTRINSIC __m256d convert(__m128i v, ConvertTag<int , double>) { return _mm256_cvtepi32_pd(v); }
Vc_INTRINSIC __m256d convert(__m128i v, ConvertTag<uint , double>) {
using namespace AVX;
return _mm256_add_pd(
_mm256_cvtepi32_pd(_mm_xor_si128(v, _mm_setmin_epi32())),
set1_pd(1u << 31)); }
Vc_INTRINSIC __m256d convert(__m128i v, ConvertTag<short , double>) { return convert(convert(v, SSE::ConvertTag< short, int>()), ConvertTag<int, double>()); }
Vc_INTRINSIC __m256d convert(__m128i v, ConvertTag<ushort, double>) { return convert(convert(v, SSE::ConvertTag<ushort, int>()), ConvertTag<int, double>()); }
Vc_INTRINSIC __m128i convert(__m256i v, ConvertTag<int , short>) {
#ifdef Vc_IMPL_AVX2
auto a = _mm256_shuffle_epi8(
v, _mm256_setr_epi8(0, 1, 4, 5, 8, 9, 12, 13, -0x80, -0x80, -0x80, -0x80, -0x80,
-0x80, -0x80, -0x80, 0, 1, 4, 5, 8, 9, 12, 13, -0x80, -0x80,
-0x80, -0x80, -0x80, -0x80, -0x80, -0x80));
return lo128(_mm256_permute4x64_epi64(a, 0xf8)); // a[0] a[2] | a[3] a[3]
#else
const auto tmp0 = _mm_unpacklo_epi16(lo128(v), hi128(v));
const auto tmp1 = _mm_unpackhi_epi16(lo128(v), hi128(v));
const auto tmp2 = _mm_unpacklo_epi16(tmp0, tmp1);
const auto tmp3 = _mm_unpackhi_epi16(tmp0, tmp1);
return _mm_unpacklo_epi16(tmp2, tmp3);
#endif
}
Vc_INTRINSIC __m128i convert(__m256i v, ConvertTag<uint , short>) { return convert(v, ConvertTag<int, short>()); }
Vc_INTRINSIC __m128i convert(__m256 v, ConvertTag<float , short>) { return convert(convert(v, ConvertTag<float, int>()), ConvertTag<int, short>()); }
Vc_INTRINSIC __m128i convert(__m256d v, ConvertTag<double, short>) { return convert(convert(v, ConvertTag<double, int>()), SSE::ConvertTag<int, short>()); }
Vc_INTRINSIC __m256i convert(__m256i v, ConvertTag<short , short>) { return v; }
Vc_INTRINSIC __m256i convert(__m256i v, ConvertTag<ushort, short>) { return v; }
Vc_INTRINSIC __m128i convert(__m256i v, ConvertTag<int , ushort>) {
auto tmp0 = _mm_unpacklo_epi16(lo128(v), hi128(v));
auto tmp1 = _mm_unpackhi_epi16(lo128(v), hi128(v));
auto tmp2 = _mm_unpacklo_epi16(tmp0, tmp1);
auto tmp3 = _mm_unpackhi_epi16(tmp0, tmp1);
return _mm_unpacklo_epi16(tmp2, tmp3);
}
Vc_INTRINSIC __m128i convert(__m256i v, ConvertTag<uint , ushort>) {
auto tmp0 = _mm_unpacklo_epi16(lo128(v), hi128(v));
auto tmp1 = _mm_unpackhi_epi16(lo128(v), hi128(v));
auto tmp2 = _mm_unpacklo_epi16(tmp0, tmp1);
auto tmp3 = _mm_unpackhi_epi16(tmp0, tmp1);
return _mm_unpacklo_epi16(tmp2, tmp3);
}
Vc_INTRINSIC __m128i convert(__m256 v, ConvertTag<float , ushort>) { return convert(convert(v, ConvertTag<float, uint>()), ConvertTag<uint, ushort>()); }
Vc_INTRINSIC __m128i convert(__m256d v, ConvertTag<double, ushort>) { return convert(convert(v, ConvertTag<double, uint>()), SSE::ConvertTag<uint, ushort>()); }
Vc_INTRINSIC __m256i convert(__m256i v, ConvertTag<short , ushort>) { return v; }
Vc_INTRINSIC __m256i convert(__m256i v, ConvertTag<ushort, ushort>) { return v; }
template <typename From, typename To>
Vc_INTRINSIC auto convert(
typename std::conditional<(sizeof(From) < sizeof(To)),
typename SSE::VectorTraits<From>::VectorType,
typename AVX::VectorTypeHelper<From>::Type>::type v)
-> decltype(convert(v, ConvertTag<From, To>()))
{
return convert(v, ConvertTag<From, To>());
}
template <typename From, typename To, typename = enable_if<(sizeof(From) < sizeof(To))>>
Vc_INTRINSIC auto convert(typename AVX::VectorTypeHelper<From>::Type v)
-> decltype(convert(lo128(v), ConvertTag<From, To>()))
{
return convert(lo128(v), ConvertTag<From, To>());
}
} // namespace AVX
} // namespace Vc
#endif // VC_AVX_CASTS_H_
================================================
FILE: 3rdparty/Vc/Vc/avx/const.h
================================================
/* This file is part of the Vc library. {{{
Copyright © 2009-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_AVX_CONST_H_
#define VC_AVX_CONST_H_
#include <cstddef>
#include "types.h"
#include "const_data.h"
#include "macros.h"
namespace Vc_VERSIONED_NAMESPACE
{
namespace AVX
{
template<typename T> struct IndexesFromZeroData;
template<> struct IndexesFromZeroData<int> {
static Vc_ALWAYS_INLINE Vc_CONST const int *address() { return reinterpret_cast<const int *>(&_IndexesFromZero32[0]); }
};
template<> struct IndexesFromZeroData<unsigned int> {
static Vc_ALWAYS_INLINE Vc_CONST const unsigned int *address() { return &_IndexesFromZero32[0]; }
};
template<> struct IndexesFromZeroData<short> {
static Vc_ALWAYS_INLINE Vc_CONST const short *address() { return reinterpret_cast<const short *>(&_IndexesFromZero16[0]); }
};
template<> struct IndexesFromZeroData<unsigned short> {
static Vc_ALWAYS_INLINE Vc_CONST const unsigned short *address() { return &_IndexesFromZero16[0]; }
};
template<> struct IndexesFromZeroData<signed char> {
static Vc_ALWAYS_INLINE Vc_CONST const signed char *address() { return reinterpret_cast<const signed char *>(&_IndexesFromZero8[0]); }
};
template<> struct IndexesFromZeroData<char> {
static Vc_ALWAYS_INLINE Vc_CONST const char *address() { return reinterpret_cast<const char *>(&_IndexesFromZero8[0]); }
};
template<> struct IndexesFromZeroData<unsigned char> {
static Vc_ALWAYS_INLINE Vc_CONST const unsigned char *address() { return &_IndexesFromZero8[0]; }
};
template<typename _T> struct Const
{
typedef Vector<_T> V;
typedef typename V::EntryType T;
typedef typename V::Mask M;
static Vc_ALWAYS_INLINE Vc_CONST V _pi_4() { return V(c_trig<T>::data[0]); }
static Vc_ALWAYS_INLINE Vc_CONST V _pi_4_hi() { return V(c_trig<T>::data[1]); }
static Vc_ALWAYS_INLINE Vc_CONST V _pi_4_rem1() { return V(c_trig<T>::data[2]); }
static Vc_ALWAYS_INLINE Vc_CONST V _pi_4_rem2() { return V(c_trig<T>::data[3]); }
static Vc_ALWAYS_INLINE Vc_CONST V _1_16() { return V(c_trig<T>::data[4]); }
static Vc_ALWAYS_INLINE Vc_CONST V _16() { return V(c_trig<T>::data[5]); }
static Vc_ALWAYS_INLINE Vc_CONST V atanP(int i) { return V(c_trig<T>::data[(12 + i)]); }
static Vc_ALWAYS_INLINE Vc_CONST V atanQ(int i) { return V(c_trig<T>::data[(17 + i)]); }
static Vc_ALWAYS_INLINE Vc_CONST V atanThrsHi() { return V(c_trig<T>::data[22]); }
static Vc_ALWAYS_INLINE Vc_CONST V atanThrsLo() { return V(c_trig<T>::data[23]); }
static Vc_ALWAYS_INLINE Vc_CONST V _pi_2_rem() { return V(c_trig<T>::data[24]); }
static Vc_ALWAYS_INLINE Vc_CONST V lossThreshold() { return V(c_trig<T>::data[8]); }
static Vc_ALWAYS_INLINE Vc_CONST V _4_pi() { return V(c_trig<T>::data[9]); }
static Vc_ALWAYS_INLINE Vc_CONST V _pi_2() { return V(c_trig<T>::data[10]); }
static Vc_ALWAYS_INLINE Vc_CONST V _pi() { return V(c_trig<T>::data[11]); }
static Vc_ALWAYS_INLINE Vc_CONST V asinCoeff0(int i) { return V(c_trig<T>::data[(28 + i)]); }
static Vc_ALWAYS_INLINE Vc_CONST V asinCoeff1(int i) { return V(c_trig<T>::data[(33 + i)]); }
static Vc_ALWAYS_INLINE Vc_CONST V asinCoeff2(int i) { return V(c_trig<T>::data[(37 + i)]); }
static Vc_ALWAYS_INLINE Vc_CONST V asinCoeff3(int i) { return V(c_trig<T>::data[(43 + i)]); }
static Vc_ALWAYS_INLINE Vc_CONST V smallAsinInput() { return V(c_trig<T>::data[25]); }
static Vc_ALWAYS_INLINE Vc_CONST V largeAsinInput() { return V(c_trig<T>::data[26]); }
static Vc_ALWAYS_INLINE Vc_CONST M exponentMask() { return M(V(c_log<T>::d(1)).data()); }
static Vc_ALWAYS_INLINE Vc_CONST V _1_2() { return V(c_log<T>::d(18)); }
static Vc_ALWAYS_INLINE Vc_CONST V _1_sqrt2() { return V(c_log<T>::d(15)); }
static Vc_ALWAYS_INLINE Vc_CONST V P(int i) { return V(c_log<T>::d(2 + i)); }
static Vc_ALWAYS_INLINE Vc_CONST V Q(int i) { return V(c_log<T>::d(8 + i)); }
static Vc_ALWAYS_INLINE Vc_CONST V min() { return V(c_log<T>::d(14)); }
static Vc_ALWAYS_INLINE Vc_CONST V ln2_small() { return V(c_log<T>::d(17)); }
static Vc_ALWAYS_INLINE Vc_CONST V ln2_large() { return V(c_log<T>::d(16)); }
static Vc_ALWAYS_INLINE Vc_CONST V neginf() { return V(c_log<T>::d(13)); }
static Vc_ALWAYS_INLINE Vc_CONST V log10_e() { return V(c_log<T>::d(19)); }
static Vc_ALWAYS_INLINE Vc_CONST V log2_e() { return V(c_log<T>::d(20)); }
static Vc_ALWAYS_INLINE_L Vc_CONST_L V highMask() Vc_ALWAYS_INLINE_R Vc_CONST_R;
static Vc_ALWAYS_INLINE_L Vc_CONST_L V highMask(int bits) Vc_ALWAYS_INLINE_R Vc_CONST_R;
};
template <> Vc_ALWAYS_INLINE Vc_CONST Vector<float> Const<float>::highMask()
{
return _mm256_broadcast_ss(
reinterpret_cast<const float *>(&c_general::highMaskFloat));
}
template <> Vc_ALWAYS_INLINE Vc_CONST Vector<double> Const<double>::highMask()
{
return _mm256_broadcast_sd(
reinterpret_cast<const double *>(&c_general::highMaskDouble));
}
template <> Vc_ALWAYS_INLINE Vc_CONST Vector<float> Const<float>::highMask(int bits)
{
#ifdef Vc_IMPL_AVX2
#if defined Vc_ICC || defined Vc_MSVC
__m256i allone = _mm256_set1_epi64x(~0);
#else
auto allone = ~__m256i();
#endif
return _mm256_castsi256_ps(_mm256_slli_epi32(allone, bits));
#else
__m128 tmp = _mm_castsi128_ps(_mm_slli_epi32(_mm_setallone_si128(), bits));
return concat(tmp, tmp);
#endif
}
template <> Vc_ALWAYS_INLINE Vc_CONST Vector<double> Const<double>::highMask(int bits)
{
#ifdef Vc_IMPL_AVX2
#if defined Vc_ICC || defined Vc_MSVC
__m256i allone = _mm256_set1_epi64x(~0);
#else
auto allone = ~__m256i();
#endif
return _mm256_castsi256_pd(_mm256_slli_epi64(allone, bits));
#else
__m128d tmp = _mm_castsi128_pd(_mm_slli_epi64(_mm_setallone_si128(), bits));
return concat(tmp, tmp);
#endif
}
} // namespace AVX
namespace AVX2
{
using AVX::IndexesFromZeroData;
using AVX::Const;
} // namespace AVX2
} // namespace Vc
#endif // VC_AVX_CONST_H_
================================================
FILE: 3rdparty/Vc/Vc/avx/const_data.h
================================================
/* This file is part of the Vc library. {{{
Copyright © 2012-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_AVX_CONST_DATA_H_
#define VC_AVX_CONST_DATA_H_
#include "../common/data.h"
#include "macros.h"
namespace Vc_VERSIONED_NAMESPACE
{
namespace AVX
{
alignas(64) extern const unsigned int _IndexesFromZero32[ 8];
alignas(16) extern const unsigned short _IndexesFromZero16[16];
alignas(16) extern const unsigned char _IndexesFromZero8 [32];
struct alignas(64) c_general
{
static const float oneFloat;
static const unsigned int absMaskFloat[2];
static const unsigned int signMaskFloat[2];
static const unsigned int highMaskFloat;
static const unsigned short minShort[2];
static const unsigned short one16[2];
static const float _2power31;
static const double oneDouble;
static const unsigned long long frexpMask;
static const unsigned long long highMaskDouble;
};
template<typename T> struct c_trig
{
alignas(64) static const T data[];
};
#ifndef Vc_MSVC
template <> alignas(64) const float c_trig<float>::data[];
template <> alignas(64) const double c_trig<double>::data[];
#endif
template<typename T> struct c_log
{
typedef float floatAlias Vc_MAY_ALIAS;
static Vc_ALWAYS_INLINE float d(int i) { return *reinterpret_cast<const floatAlias *>(&data[i]); }
alignas(64) static const unsigned int data[21];
};
#ifndef Vc_MSVC
template<> alignas(64) const unsigned int c_log<float>::data[21];
#endif
template<> struct c_log<double>
{
enum VectorSize { Size = 16 / sizeof(double) };
typedef double doubleAlias Vc_MAY_ALIAS;
static Vc_ALWAYS_INLINE double d(int i) { return *reinterpret_cast<const doubleAlias *>(&data[i]); }
alignas(64) static const unsigned long long data[21];
};
} // namespace AVX
} // namespace Vc
namespace Vc_VERSIONED_NAMESPACE
{
namespace AVX2
{
using AVX::_IndexesFromZero8;
using AVX::_IndexesFromZero16;
using AVX::_IndexesFromZero32;
using AVX::c_general;
using AVX::c_trig;
using AVX::c_log;
} // namespace AVX2
} // namespace Vc
#endif // VC_AVX_CONST_DATA_H_
================================================
FILE: 3rdparty/Vc/Vc/avx/debug.h
================================================
/* This file is part of the Vc library. {{{
Copyright © 2011-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_AVX_DEBUG_H_
#define VC_AVX_DEBUG_H_
#ifndef NDEBUG
#include "vector.h"
#include <iostream>
#include <iomanip>
#endif
namespace Vc_VERSIONED_NAMESPACE
{
namespace AVX
{
template <typename T, typename U> struct AddType {
const U &d;
};
template <typename T, typename U> AddType<T, U> addType(const U &x) { return {x}; }
#ifdef NDEBUG
class DebugStream
{
public:
DebugStream(const char *, const char *, int) {}
template<typename T> inline DebugStream &operator<<(const T &) { return *this; }
};
#else
class DebugStream
{
private:
template<typename T, typename V> static void printVector(V _x)
{
enum { Size = sizeof(V) / sizeof(T) };
union { V v; T m[Size]; } x = { _x };
std::cerr << '[' << std::setprecision(24) << x.m[0];
for (int i = 1; i < Size; ++i) {
std::cerr << ", " << std::setprecision(24) << x.m[i];
}
std::cerr << ']';
}
public:
DebugStream(const char *func, const char *file, int line)
{
std::cerr << "\033[1;40;33mDEBUG: " << file << ':' << line << ' ' << func << ' ';
}
template<typename T> DebugStream &operator<<(const T &x) { std::cerr << x; return *this; }
template <typename T, typename U> DebugStream &operator<<(AddType<T, U> &&x)
{
printVector<T, U>(x.d);
return *this;
}
DebugStream &operator<<(__m128 x) {
printVector<float, __m128>(x);
return *this;
}
DebugStream &operator<<(__m256 x) {
printVector<float, __m256>(x);
return *this;
}
DebugStream &operator<<(__m128d x) {
printVector<double, __m128d>(x);
return *this;
}
DebugStream &operator<<(__m256d x) {
printVector<double, __m256d>(x);
return *this;
}
DebugStream &operator<<(__m128i x) {
printVector<unsigned int, __m128i>(x);
return *this;
}
DebugStream &operator<<(__m256i x) {
printVector<unsigned int, __m256i>(x);
return *this;
}
~DebugStream()
{
std::cerr << "\033[0m" << std::endl;
}
};
#endif
#ifdef Vc_DEBUG
#undef Vc_DEBUG
#endif
#ifdef Vc_MSVC
#define Vc_DEBUG Vc::AVX::DebugStream(__FUNCSIG__, __FILE__, __LINE__)
#else
#define Vc_DEBUG Vc::AVX::DebugStream(__PRETTY_FUNCTION__, __FILE__, __LINE__)
#endif
} // namespace AVX
} // namespace Vc
#endif // VC_AVX_DEBUG_H_
================================================
FILE: 3rdparty/Vc/Vc/avx/deinterleave.tcc
================================================
/* This file is part of the Vc library. {{{
Copyright © 2010-2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
namespace Vc_VERSIONED_NAMESPACE
{
namespace AVX2
{
inline void deinterleave(double_v &Vc_RESTRICT a, double_v &Vc_RESTRICT b, double_v &Vc_RESTRICT c)
{ // estimated latency (AVX): 4.5 cycles
const m256d tmp0 = Mem::shuffle128<X0, Y1>(a.data(), b.data());
const m256d tmp1 = Mem::shuffle128<X1, Y0>(a.data(), c.data());
const m256d tmp2 = Mem::shuffle128<X0, Y1>(b.data(), c.data());
a.data() = Mem::shuffle<X0, Y1, X2, Y3>(tmp0, tmp1);
b.data() = Mem::shuffle<X1, Y0, X3, Y2>(tmp0, tmp2);
c.data() = Mem::shuffle<X0, Y1, X2, Y3>(tmp1, tmp2);
}
inline void deinterleave(float_v &Vc_RESTRICT a, float_v &Vc_RESTRICT b, float_v &Vc_RESTRICT c)
{
// abc abc abc
// a = [a0 b0 c0 a1 b1 c1 a2 b2] 332 = 211+121
// b = [c2 a3 b3 c3 a4 b4 c4 a5] 323 = 112+211
// c = [b5 c5 a6 b6 c6 a7 b7 c7] 233 = 121+112
const m256 ac0 = Mem::shuffle128<X0, Y0>(a.data(), c.data()); // a0 b0 c0 a1 b5 c5 a6 b6
const m256 ac1 = Mem::shuffle128<X1, Y1>(a.data(), c.data()); // b1 c1 a2 b2 c6 a7 b7 c7
m256 tmp0 = Mem::blend<X0, Y1, X2, X3, Y4, X5, X6, Y7>( ac0, b.data());
tmp0 = Mem::blend<X0, X1, Y2, X3, X4, Y5, X6, X7>(tmp0, ac1); // a0 a3 a2 a1 a4 a7 a6 a5
m256 tmp1 = Mem::blend<X0, X1, Y2, X3, X4, Y5, X6, X7>( ac0, b.data());
tmp1 = Mem::blend<Y0, X1, X2, Y3, X4, X5, Y6, X7>(tmp1, ac1); // b1 b0 b3 b2 b5 b4 b7 b6
m256 tmp2 = Mem::blend<Y0, X1, X2, Y3, X4, X5, Y6, X7>( ac0, b.data());
tmp2 = Mem::blend<X0, Y1, X2, X3, Y4, X5, X6, Y7>(tmp2, ac1); // c2 c1 c0 c3 c6 c5 c4 c7
a.data() = Mem::permute<X0, X3, X2, X1>(tmp0);
b.data() = Mem::permute<X1, X0, X3, X2>(tmp1);
c.data() = Mem::permute<X2, X1, X0, X3>(tmp2);
}
inline void deinterleave(int_v &Vc_RESTRICT a, int_v &Vc_RESTRICT b, int_v &Vc_RESTRICT c)
{
deinterleave(reinterpret_cast<float_v &>(a), reinterpret_cast<float_v &>(b),
reinterpret_cast<float_v &>(c));
}
inline void deinterleave(uint_v &Vc_RESTRICT a, uint_v &Vc_RESTRICT b, uint_v &Vc_RESTRICT c)
{
deinterleave(reinterpret_cast<float_v &>(a), reinterpret_cast<float_v &>(b),
reinterpret_cast<float_v &>(c));
}
inline void deinterleave(Vector<short> &Vc_RESTRICT , Vector<short> &Vc_RESTRICT ,
Vector<short> &Vc_RESTRICT )
{
return;
/* TODO:
// abc abc abc
// a = [a0 b0 c0 a1 b1 c1 a2 b2] 332 = 211+121
// b = [c2 a3 b3 c3 a4 b4 c4 a5] 323 = 112+211
// c = [b5 c5 a6 b6 c6 a7 b7 c7] 233 = 121+112
m128i ac0 = _mm_unpacklo_epi64(a.data(), c.data()); // a0 b0 c0 a1 b5 c5 a6 b6
m128i ac1 = _mm_unpackhi_epi64(a.data(), c.data()); // b1 c1 a2 b2 c6 a7 b7 c7
m128i tmp0 = Mem::blend<X0, Y1, X2, X3, Y4, X5, X6, Y7>( ac0, b.data());
tmp0 = Mem::blend<X0, X1, Y2, X3, X4, Y5, X6, X7>(tmp0, ac1); // a0 a3 a2 a1 a4 a7 a6 a5
m128i tmp1 = Mem::blend<X0, X1, Y2, X3, X4, Y5, X6, X7>( ac0, b.data());
tmp1 = Mem::blend<Y0, X1, X2, Y3, X4, X5, Y6, X7>(tmp1, ac1); // b1 b0 b3 b2 b5 b4 b7 b6
m128i tmp2 = Mem::blend<Y0, X1, X2, Y3, X4, X5, Y6, X7>( ac0, b.data());
tmp2 = Mem::blend<X0, Y1, X2, X3, Y4, X5, X6, Y7>(tmp2, ac1); // c2 c1 c0 c3 c6 c5 c4 c7
a.data() = Mem::permuteHi<X4, X7, X6, X5>(Mem::permuteLo<X0, X3, X2, X1>(tmp0));
b.data() = Mem::permuteHi<X5, X4, X7, X6>(Mem::permuteLo<X1, X0, X3, X2>(tmp1));
c.data() = Mem::permuteHi<X6, X5, X4, X7>(Mem::permuteLo<X2, X1, X0, X3>(tmp2));
*/
}
inline void deinterleave(Vector<unsigned short> &Vc_RESTRICT a, Vector<unsigned short> &Vc_RESTRICT b,
Vector<unsigned short> &Vc_RESTRICT c)
{
deinterleave(reinterpret_cast<Vector<short> &>(a), reinterpret_cast<Vector<short> &>(b),
reinterpret_cast<Vector<short> &>(c));
}
inline void deinterleave(Vector<float> &a, Vector<float> &b)
{
// a7 a6 a5 a4 a3 a2 a1 a0
// b7 b6 b5 b4 b3 b2 b1 b0
const m256 tmp0 = Reg::permute128<Y0, X0>(a.data(), b.data()); // b3 b2 b1 b0 a3 a2 a1 a0
const m256 tmp1 = Reg::permute128<Y1, X1>(a.data(), b.data()); // b7 b6 b5 b4 a7 a6 a5 a4
const m256 tmp2 = _mm256_unpacklo_ps(tmp0, tmp1); // b5 b1 b4 b0 a5 a1 a4 a0
const m256 tmp3 = _mm256_unpackhi_ps(tmp0, tmp1); // b7 b3 b6 b2 a7 a3 a6 a2
a.data() = _mm256_unpacklo_ps(tmp2, tmp3); // b6 b4 b2 b0 a6 a4 a2 a0
b.data() = _mm256_unpackhi_ps(tmp2, tmp3); // b7 b5 b3 b1 a7 a5 a3 a1
}
inline void deinterleave(Vector<short> &a, // a0 b0 a1 b1 a2 b2 a3 b3 | a4 b4 a5 ...
Vector<short> &b) // a8 b8 a9 ...
{
auto v0 = Mem::shuffle128<X0, Y0>(a.data(), b.data());
auto v1 = Mem::shuffle128<X1, Y1>(a.data(), b.data());
auto v2 = AVX::unpacklo_epi16(v0, v1); // a0 a4 ...
auto v3 = AVX::unpackhi_epi16(v0, v1); // a2 a6 ...
v0 = AVX::unpacklo_epi16(v2, v3); // a0 a2 ...
v1 = AVX::unpackhi_epi16(v2, v3); // a1 a3 ...
a.data() = AVX::unpacklo_epi16(v0, v1); // a0 a1 ...
b.data() = AVX::unpackhi_epi16(v0, v1); // b0 b1 ...
}
inline void deinterleave(Vector<ushort> &a, Vector<ushort> &b)
{
auto v0 = Mem::shuffle128<X0, Y0>(a.data(), b.data());
auto v1 = Mem::shuffle128<X1, Y1>(a.data(), b.data());
auto v2 = AVX::unpacklo_epi16(v0, v1); // a0 a4 ...
auto v3 = AVX::unpackhi_epi16(v0, v1); // a2 a6 ...
v0 = AVX::unpacklo_epi16(v2, v3); // a0 a2 ...
v1 = AVX::unpackhi_epi16(v2, v3); // a1 a3 ...
a.data() = AVX::unpacklo_epi16(v0, v1); // a0 a1 ...
b.data() = AVX::unpackhi_epi16(v0, v1); // b0 b1 ...
}
} // namespace AVX2
namespace Detail
{
template <typename Flags>
inline void deinterleave(AVX2::float_v &a, AVX2::float_v &b, const float *m, Flags align)
{
a.load(m, align);
b.load(m + AVX2::float_v::Size, align);
Vc::AVX2::deinterleave(a, b);
}
template <typename Flags>
inline void deinterleave(AVX2::float_v &a, AVX2::float_v &b, const short *m, Flags f)
{
using namespace Vc::AVX2;
const auto tmp = Detail::load32(m, f);
a.data() =
_mm256_cvtepi32_ps(concat(_mm_srai_epi32(_mm_slli_epi32(lo128(tmp), 16), 16),
_mm_srai_epi32(_mm_slli_epi32(hi128(tmp), 16), 16)));
b.data() = _mm256_cvtepi32_ps(
concat(_mm_srai_epi32(lo128(tmp), 16), _mm_srai_epi32(hi128(tmp), 16)));
}
template <typename Flags>
inline void deinterleave(AVX2::float_v &a, AVX2::float_v &b, const unsigned short *m, Flags f)
{
using namespace Vc::AVX2;
const auto tmp = Detail::load32(m, f);
a.data() = _mm256_cvtepi32_ps(
concat(_mm_blend_epi16(lo128(tmp), _mm_setzero_si128(), 0xaa),
_mm_blend_epi16(hi128(tmp), _mm_setzero_si128(), 0xaa)));
b.data() = _mm256_cvtepi32_ps(
concat(_mm_srli_epi32(lo128(tmp), 16), _mm_srli_epi32(hi128(tmp), 16)));
}
template <typename Flags>
inline void deinterleave(AVX2::double_v &a, AVX2::double_v &b, const double *m, Flags align)
{
using namespace Vc::AVX2;
a.load(m, align);
b.load(m + AVX2::double_v::Size, align);
m256d tmp0 = Mem::shuffle128<Vc::X0, Vc::Y0>(a.data(), b.data()); // b1 b0 a1 a0
m256d tmp1 = Mem::shuffle128<Vc::X1, Vc::Y1>(a.data(), b.data()); // b3 b2 a3 a2
a.data() = _mm256_unpacklo_pd(tmp0, tmp1); // b2 b0 a2 a0
b.data() = _mm256_unpackhi_pd(tmp0, tmp1); // b3 b1 a3 a1
}
template <typename Flags>
inline void deinterleave(AVX2::int_v &a, AVX2::int_v &b, const int *m, Flags align)
{
using namespace AVX;
a.load(m, align);
b.load(m + AVX2::int_v::Size, align);
const m256 tmp0 = avx_cast<m256>(Mem::shuffle128<Vc::X0, Vc::Y0>(a.data(), b.data()));
const m256 tmp1 = avx_cast<m256>(Mem::shuffle128<Vc::X1, Vc::Y1>(a.data(), b.data()));
const m256 tmp2 = _mm256_unpacklo_ps(tmp0, tmp1); // b5 b1 b4 b0 a5 a1 a4 a0
const m256 tmp3 = _mm256_unpackhi_ps(tmp0, tmp1); // b7 b3 b6 b2 a7 a3 a6 a2
a.data() = avx_cast<m256i>(_mm256_unpacklo_ps(tmp2, tmp3)); // b6 b4 b2 b0 a6 a4 a2 a0
b.data() = avx_cast<m256i>(_mm256_unpackhi_ps(tmp2, tmp3)); // b7 b5 b3 b1 a7 a5 a3 a1
}
template <typename Flags>
inline void deinterleave(AVX2::int_v &a, AVX2::int_v &b, const short *m, Flags f)
{
using namespace Vc::AVX;
const AVX2::short_v tmp0(m, f);
const m256i tmp = tmp0.data();
a.data() = concat(
_mm_srai_epi32(_mm_slli_epi32(lo128(tmp), 16), 16),
_mm_srai_epi32(_mm_slli_epi32(hi128(tmp), 16), 16));
b.data() = concat(
_mm_srai_epi32(lo128(tmp), 16),
_mm_srai_epi32(hi128(tmp), 16));
}
template <typename Flags>
inline void deinterleave(AVX2::uint_v &a, AVX2::uint_v &b, const unsigned int *m, Flags align)
{
using namespace AVX;
a.load(m, align);
b.load(m + AVX2::uint_v::Size, align);
const m256 tmp0 = avx_cast<m256>(Mem::shuffle128<Vc::X0, Vc::Y0>(a.data(), b.data()));
const m256 tmp1 = avx_cast<m256>(Mem::shuffle128<Vc::X1, Vc::Y1>(a.data(), b.data()));
const m256 tmp2 = _mm256_unpacklo_ps(tmp0, tmp1); // b5 b1 b4 b0 a5 a1 a4 a0
const m256 tmp3 = _mm256_unpackhi_ps(tmp0, tmp1); // b7 b3 b6 b2 a7 a3 a6 a2
a.data() = avx_cast<m256i>(_mm256_unpacklo_ps(tmp2, tmp3)); // b6 b4 b2 b0 a6 a4 a2 a0
b.data() = avx_cast<m256i>(_mm256_unpackhi_ps(tmp2, tmp3)); // b7 b5 b3 b1 a7 a5 a3 a1
}
template <typename Flags>
inline void deinterleave(AVX2::uint_v &a, AVX2::uint_v &b, const unsigned short *m, Flags f)
{
using namespace Vc::AVX;
const AVX2::ushort_v tmp0(m, f);
const m256i tmp = tmp0.data();
a.data() = concat(
_mm_srai_epi32(_mm_slli_epi32(lo128(tmp), 16), 16),
_mm_srai_epi32(_mm_slli_epi32(hi128(tmp), 16), 16));
b.data() = concat(
_mm_srai_epi32(lo128(tmp), 16),
_mm_srai_epi32(hi128(tmp), 16));
}
template <typename Flags>
inline void deinterleave(AVX2::short_v &a, AVX2::short_v &b, const short *m, Flags align)
{
a.load(m, align);
b.load(m + AVX2::short_v::Size, align);
Vc::AVX2::deinterleave(a, b);
}
template <typename Flags>
inline void deinterleave(AVX2::ushort_v &a, AVX2::ushort_v &b, const unsigned short *m, Flags align)
{
a.load(m, align);
b.load(m + AVX2::ushort_v::Size, align);
Vc::AVX2::deinterleave(a, b);
}
// only support M == V::EntryType -> no specialization
template <typename T, typename M, typename Flags>
Vc_ALWAYS_INLINE void deinterleave(AVX2::Vector<T> &Vc_RESTRICT a,
AVX2::Vector<T> &Vc_RESTRICT b,
AVX2::Vector<T> &Vc_RESTRICT c,
const M *Vc_RESTRICT memory, Flags align)
{
using V = AVX2::Vector<T>;
a.load(&memory[0 * V::Size], align);
b.load(&memory[1 * V::Size], align);
c.load(&memory[2 * V::Size], align);
Vc::AVX2::deinterleave(a, b, c);
}
} // namespace Detail
} // namespace Vc
================================================
FILE: 3rdparty/Vc/Vc/avx/detail.h
================================================
/* This file is part of the Vc library. {{{
Copyright © 2015 Matthias Kretz <kretz@kde.org>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of contributing organizations nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}*/
#ifndef VC_AVX_DETAIL_H_
#define VC_AVX_DETAIL_H_
#include "../sse/detail.h"
#include "macros.h"
namespace Vc_VERSIONED_NAMESPACE
{
namespace Detail
{
// (converting) load functions {{{1
template <typename Flags>
Vc_INTRINSIC Vc_PURE __m256 load(const float *x, Flags, LoadTag<__m256, float>,
typename Flags::EnableIfAligned = nullptr)
{
return _mm256_load_ps(x);
}
template <typename Flags>
Vc_INTRINSIC Vc_PURE __m256 load(const float *x, Flags, LoadTag<__m256, float>,
typename Flags::EnableIfUnaligned = nullptr)
{
return _mm256_loadu_ps(x);
}
template <typename Flags>
Vc_INTRINSIC Vc_PURE __m256 load(const float *x, Flags, LoadTag<__m256, float>,
typename Flags::EnableIfStreaming = nullptr)
{
return AvxIntrinsics::stream_load<__m256>(x);
}
template <typename Flags>
Vc_INTRINSIC Vc_PURE __m256d load(const double *x, Flags, LoadTag<__m256d, double>,
typename Flags::EnableIfAligned = nullptr)
{
return _mm256_load_pd(x);
}
template <typename Flags>
Vc_INTRINSIC Vc_PURE __m256d load(const double *x, Flags, LoadTag<__m256d, double>,
typename Flags::EnableIfUnaligned = nullptr)
{
return _mm256_loadu_pd(x);
}
template <typename Flags>
Vc_INTRINSIC Vc_PURE __m256d load(const double *x, Flags, LoadTag<__m256d, double>,
typename Flags::EnableIfStreaming = nullptr)
{
return AvxIntrinsics::stream_load<__m256d>(x);
}
template <typename Flags, typename T, typename = enable_if<std::is_integral<T>::value>>
Vc_INTRINSIC Vc_PURE __m256i
load(const T *x, Flags, LoadTag<__m256i, T>, typename Flags::EnableIfAligned = nullptr)
{
return _mm256_load_si256(reinterpret_cast<const __m256i *>(x));
}
template <typename Flags, typename T, typename = enable_if<std::is_integral<T>::value>>
Vc_INTRINSIC Vc_PURE __m256i
load(const T *x, Flags, LoadTag<__m256i, T>, typename Flags::EnableIfUnaligned = nullptr)
{
return _mm256_loadu_si256(reinterpret_cast<const __m256i *>(x));
}
template <typename Flags, typename T, typename = enable_if<std::is_integral<T>::value>>
Vc_INTRINSIC Vc_PURE __m256i
load(const T *x, Flags, LoadTag<__m256i, T>, typename Flags::EnableIfStreaming = nullptr)
{
return AvxIntrinsics::stream_load<__m256i>(x);
}
// load32{{{2
Vc_INTRINSIC __m256 load32(const float *mem, when_aligned)
{
return _mm256_load_ps(mem);
}
Vc_INTRINSIC __m256 load32(const float *mem, when_unaligned)
{
return _mm256_loadu_ps(mem);
}
Vc_INTRINSIC __m256 load32(const float *mem, when_streaming)
{
return AvxIntrinsics::stream_load<__m256>(mem);
}
Vc_INTRINSIC __m256d load32(const double *mem, when_aligned)
{
return _mm256_load_pd(mem);
}
Vc_INTRINSIC __m256d load32(const double *mem, when_unaligned)
{
return _mm256_loadu_pd(mem);
}
Vc_INTRINSIC __m256d load32(const double *mem, when_streaming)
{
return AvxIntrinsics::stream_load<__m256d>(mem);
}
template <class T> Vc_INTRINSIC __m256i load32(const T *mem, when_aligned)
{
static_assert(std::is_integral<T>::value, "load32<T> is only intended for integral T");
return _mm256_load_si256(reinterpret_cast<const __m256i *>(mem));
}
template <class T> Vc_INTRINSIC __m256i load32(const T *mem, when_unaligned)
{
static_assert(std::is_integral<T>::value, "load32<T> is only intended for integral T");
return _mm256_loadu_si256(reinterpret_cast<const __m256i *>(mem));
}
template <class T> Vc_INTRINSIC __m256i load32(const T *mem, when_streaming)
{
static_assert(std::is_integral<T>::value, "load32<T> is only intended for integral T");
return AvxIntrinsics::stream_load<__m256i>(mem);
}
// MSVC workarounds{{{2
#ifdef Vc_MSVC
// work around: "fatal error C1001: An internal error has occurred in the compiler."
Vc_INTRINSIC __m256i load(const uint *mem, when_aligned, LoadTag<__m256i, int>)
{
return _mm256_load_si256(reinterpret_cast<const __m256i *>(mem));
}
Vc_INTRINSIC __m256d load(const double *mem, when_unaligned, LoadTag<__m256d, double>)
{
return _mm256_loadu_pd(mem);
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256 load(const float *mem, when_aligned,
enable_if<(std::is_same<DstT, float>::value &&
std::is_same<V, __m256>::value)> = nullarg)
{
return _mm256_load_ps(mem);
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256 load(const float *mem, when_unaligned,
enable_if<(std::is_same<DstT, float>::value &&
std::is_same<V, __m256>::value)> = nullarg)
{
return _mm256_loadu_ps(mem);
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256 load(const float *mem, when_streaming,
enable_if<(std::is_same<DstT, float>::value &&
std::is_same<V, __m256>::value)> = nullarg)
{
return AvxIntrinsics::stream_load<__m256>(mem);
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256d load(const double *mem, when_aligned,
enable_if<(std::is_same<DstT, double>::value &&
std::is_same<V, __m256d>::value)> = nullarg)
{
return _mm256_load_pd(mem);
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256d load(const double *mem, when_unaligned,
enable_if<(std::is_same<DstT, double>::value &&
std::is_same<V, __m256d>::value)> = nullarg)
{
return _mm256_loadu_pd(mem);
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256d load(const double *mem, when_streaming,
enable_if<(std::is_same<DstT, double>::value &&
std::is_same<V, __m256d>::value)> = nullarg)
{
return AvxIntrinsics::stream_load<__m256d>(mem);
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const uint *mem, when_aligned,
enable_if<(std::is_same<DstT, uint>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return _mm256_load_si256(reinterpret_cast<const __m256i *>(mem));
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const uint *mem, when_unaligned,
enable_if<(std::is_same<DstT, uint>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return _mm256_loadu_si256(reinterpret_cast<const __m256i *>(mem));
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const uint *mem, when_streaming,
enable_if<(std::is_same<DstT, uint>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return AvxIntrinsics::stream_load<__m256i>(mem);
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const int *mem, when_unaligned,
enable_if<(std::is_same<DstT, int>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return _mm256_loadu_si256(reinterpret_cast<const __m256i *>(mem));
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const int *mem, when_aligned,
enable_if<(std::is_same<DstT, int>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return _mm256_load_si256(reinterpret_cast<const __m256i *>(mem));
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const int *mem, when_streaming,
enable_if<(std::is_same<DstT, int>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return AvxIntrinsics::stream_load<__m256i>(mem);
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const short *mem, when_unaligned,
enable_if<(std::is_same<DstT, short>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return _mm256_loadu_si256(reinterpret_cast<const __m256i *>(mem));
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const short *mem, when_aligned,
enable_if<(std::is_same<DstT, short>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return _mm256_load_si256(reinterpret_cast<const __m256i *>(mem));
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const short *mem, when_streaming,
enable_if<(std::is_same<DstT, short>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return AvxIntrinsics::stream_load<__m256i>(mem);
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const ushort *mem, when_unaligned,
enable_if<(std::is_same<DstT, ushort>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return _mm256_loadu_si256(reinterpret_cast<const __m256i *>(mem));
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const ushort *mem, when_aligned,
enable_if<(std::is_same<DstT, ushort>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return _mm256_load_si256(reinterpret_cast<const __m256i *>(mem));
}
template <typename V, typename DstT>
Vc_INTRINSIC __m256i load(const ushort *mem, when_streaming,
enable_if<(std::is_same<DstT, ushort>::value &&
std::is_same<V, __m256i>::value)> = nullarg)
{
return AvxIntrinsics::stream_load<__m256i>(mem);
}
#endif // Vc_MSVC
// short {{{2
template <typename Flags>
Vc_INTRINSIC __m256i load(const ushort *mem, Flags f, LoadTag<__m256i, short>)
{
return load32(mem, f);
}
template <typename Flags>
Vc_INTRINSIC __m256i load(const uchar *mem, Flags f, LoadTag<__m256i, short>)
{
return AVX::cvtepu8_epi16(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256i load(const schar *mem, Flags f, LoadTag<__m256i, short>)
{
return AVX::cvtepi8_epi16(load16(mem, f));
}
// ushort {{{2
template <typename Flags>
Vc_INTRINSIC __m256i load(const uchar *mem, Flags f, LoadTag<__m256i, ushort>)
{
return AVX::cvtepu8_epi16(load16(mem, f));
}
// int {{{2
template <typename Flags>
Vc_INTRINSIC __m256i load(const uint *mem, Flags f, LoadTag<__m256i, int>)
{
return load32(mem, f);
}
template <typename Flags>
Vc_INTRINSIC __m256i load(const ushort *mem, Flags f, LoadTag<__m256i, int>)
{
return AVX::cvtepu16_epi32(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256i load(const short *mem, Flags f, LoadTag<__m256i, int>)
{
return AVX::cvtepi16_epi32(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256i load(const uchar *mem, Flags, LoadTag<__m256i, int>)
{
return AVX::cvtepu8_epi32(_mm_loadl_epi64(reinterpret_cast<const __m128i *>(mem)));
}
template <typename Flags>
Vc_INTRINSIC __m256i load(const schar *mem, Flags, LoadTag<__m256i, int>)
{
return AVX::cvtepi8_epi32(_mm_loadl_epi64(reinterpret_cast<const __m128i *>(mem)));
}
// uint {{{2
template <typename Flags>
Vc_INTRINSIC __m256i load(const ushort *mem, Flags f, LoadTag<__m256i, uint>)
{
return AVX::cvtepu16_epi32(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256i load(const uchar *mem, Flags, LoadTag<__m256i, uint>)
{
return AVX::cvtepu8_epi32(_mm_loadl_epi64(reinterpret_cast<const __m128i *>(mem)));
}
// double {{{2
template <typename Flags>
Vc_INTRINSIC __m256d load(const float *mem, Flags f, LoadTag<__m256d, double>)
{
return AVX::convert<float, double>(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256d load(const uint *mem, Flags f, LoadTag<__m256d, double>)
{
return AVX::convert<uint, double>(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256d load(const int *mem, Flags f, LoadTag<__m256d, double>)
{
return AVX::convert<int, double>(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256d load(const ushort *mem, Flags f, LoadTag<__m256d, double>)
{
return AVX::convert<int, double>(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256d load(const short *mem, Flags f, LoadTag<__m256d, double>)
{
return AVX::convert<int, double>(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256d load(const uchar *mem, Flags f, LoadTag<__m256d, double>)
{
return AVX::convert<int, double>(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256d load(const schar *mem, Flags f, LoadTag<__m256d, double>)
{
return AVX::convert<int, double>(load16(mem, f));
}
// float {{{2
template <typename Flags>
Vc_INTRINSIC __m256 load(const double *mem, Flags f, LoadTag<__m256, float>)
{
return AVX::concat(_mm256_cvtpd_ps(load32(&mem[0], f)),
_mm256_cvtpd_ps(load32(&mem[4], f)));
}
template <typename Flags>
Vc_INTRINSIC __m256 load(const uint *mem, Flags f, LoadTag<__m256, float>)
{
const auto v = load32(mem, f);
return _mm256_blendv_ps(
_mm256_cvtepi32_ps(v),
_mm256_add_ps(_mm256_cvtepi32_ps(AVX::sub_epi32(v, AVX::set2power31_epu32())),
AVX::set2power31_ps()),
_mm256_castsi256_ps(AVX::cmplt_epi32(v, _mm256_setzero_si256())));
}
template <typename Flags>
Vc_INTRINSIC __m256 load(const int *mem, Flags f, LoadTag<__m256, float>)
{
return AVX::convert<int, float>(load32(mem, f));
}
template <typename T, typename Flags,
typename = enable_if<!std::is_same<T, float>::value>>
Vc_INTRINSIC __m256 load(const T *mem, Flags f, LoadTag<__m256, float>)
{
return _mm256_cvtepi32_ps(load<__m256i, int>(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256 load(const ushort *mem, Flags f, LoadTag<__m256, float>)
{
return AVX::convert<ushort, float>(load16(mem, f));
}
template <typename Flags>
Vc_INTRINSIC __m256 load(const short *mem, Flags f, LoadTag<__m256, float>)
{
return AVX::convert<short, float>(load16(mem, f));
}
/*
template<typename Flags> struct LoadHelper<float, unsigned char, Flags> {
static __m256 load(const unsigned char *mem, Flags)
{
return _mm256_cvtepi32_ps(
cvtepu8_epi32(_mm_loadl_epi64(reinterpret_cast<const __m128i *>(mem))));
}
};
template<typename Flags> struct LoadHelper<float, signed char, Flags> {
static __m256 load(const signed char *mem, Flags)
{
return _mm256_cvtepi32_ps(
cvtepi8_epi32(_mm_loadl_epi64(reinterpret_cast<const __m128i *>(mem))));
}
};
*/
// shifted{{{1
template <int amount, typename T>
Vc_INTRINSIC Vc_CONST enable_if<(sizeof(T) == 32 && amount >= 16), T> shifted(T k)
{
return AVX::avx_cast<T>(AVX::zeroExtend(
_mm_srli_si128(AVX::hi128(AVX::avx_cast<__m256i>(k)), amount - 16)));
}
template <int amount, typename T>
Vc_INTRINSIC Vc_CONST enable_if<(sizeof(T) == 32 && amount > 0 && amount < 16), T>
shifted(T k)
{
return AVX::avx_cast<T>(
AVX::alignr<amount>(Mem::permute128<X1, Const0>(AVX::avx_cast<__m256i>(k)),
AVX::avx_cast<__m256i>(k)));
}
template <int amount, typename T>
Vc_INTRINSIC Vc_CONST enable_if<(sizeof(T) == 32 && amount <= -16), T> shifted(T k)
{
return AVX::avx_cast<T>(Mem::permute128<Const0, X0>(AVX::avx_cast<__m256i>(
_mm_slli_si128(AVX::lo128(AVX::avx_cast<__m256i>(k)), -16 - amount))));
}
template <int amount, typename T>
Vc_INTRINSIC Vc_CONST enable_if<(sizeof(T) == 32 && amount > -16 && amount < 0), T>
shifted(T k)
{
return AVX::avx_cast<T>(
AVX::alignr<16 + amount>(AVX::avx_cast<__m256i>(k),
Mem::permute128<Const0, X0>(AVX::avx_cast<__m256i>(k))));
}
// mask_cast{{{1
template<size_t From, size_t To, typename R> Vc_INTRINSIC Vc_CONST R mask_cast(__m256i k)
{
static_assert(From == To, "Incorrect mask cast.");
static_assert(std::is_same<R, __m256>::value, "Incorrect mask cast.");
return AVX::avx_cast<__m256>(k);
}
// 4 -> 4
template <> Vc_INTRINSIC Vc_CONST __m128 mask_cast<4, 4, __m128>(__m256i k)
{
return AVX::avx_cast<__m128>(_mm_packs_epi32(AVX::lo128(k), AVX::hi128(k)));
}
template <> Vc_INTRINSIC Vc_CONST __m256 mask_cast<4, 4, __m256>(__m128i k)
{
const auto kk = _mm_castsi128_ps(k);
return AVX::concat(_mm_unpacklo_ps(kk, kk), _mm_unpackhi_ps(kk, kk));
}
// 4 -> 8
template<> Vc_INTRINSIC Vc_CONST __m256 mask_cast<4, 8, __m256>(__m256i k)
{
// aabb ccdd -> abcd 0000
return AVX::avx_cast<__m256>(AVX::concat(_mm_packs_epi32(AVX::lo128(k), AVX::hi128(k)),
_mm_setzero_si128()));
}
template<> Vc_INTRINSIC Vc_CONST __m128 mask_cast<4, 8, __m128>(__m256i k)
{
// aaaa bbbb cccc dddd -> abcd 0000
return AVX::avx_cast<__m128>(_mm_packs_epi16(_mm_packs_epi32(AVX::lo128(k), AVX::hi128(k)), _mm_setzero_si128()));
}
template <> Vc_INTRINSIC Vc_CONST __m256 mask_cast<4, 8, __m256>(__m128i k)
{
return AVX::zeroExtend(AVX::avx_cast<__m128>(k));
}
// 4 -> 16
template<> Vc_INTRINSIC Vc_CONST __m256 mask_cast<4, 16, __m256>(__m256i k)
{
// aaaa bbbb cccc dddd -> abcd 0000 0000 0000
return AVX::zeroExtend(mask_cast<4, 8, __m128>(k));
}
// 8 -> 4
template<> Vc_INTRINSIC Vc_CONST __m256 mask_cast<8, 4, __m256>(__m256i k)
{
// aabb ccdd eeff gghh -> aaaa bbbb cccc dddd
const auto lo = AVX::lo128(AVX::avx_cast<__m256>(k));
return AVX::concat(_mm_unpacklo_ps(lo, lo),
_mm_unpackhi_ps(lo, lo));
}
template<> Vc_INTRINSIC Vc_CONST __m128 mask_cast<8, 4, __m128>(__m256i k)
{
return AVX::avx_cast<__m128>(AVX::lo128(k));
}
template<> Vc_INTRINSIC Vc_CONST __m256 mask_cast<8, 4, __m256>(__m128i k)
{
// abcd efgh -> aaaa bbbb cccc dddd
const auto tmp = _mm_unpacklo_epi16(k, k); // aa bb cc dd
return AVX::avx_cast<__m256>(AVX::concat(_mm_unpacklo_epi32(tmp, tmp), // aaaa bbbb
_mm_unpackhi_epi32(tmp, tmp))); // cccc dddd
}
// 8 -> 8
template<> Vc_INTRINSIC Vc_CONST __m128 mask_cast<8, 8, __m128>(__m256i k)
{
// aabb ccdd eeff gghh -> abcd efgh
return AVX::avx_cast<__m128>(_mm_packs_epi16(AVX::lo128(k), AVX::hi128(k)));
}
template<> Vc_INTRINSIC Vc_CONST __m256 mask_cast<8, 8, __m256>(__m128i k)
{
return AVX::avx_cast<__m256>(AVX::concat(_mm_unpacklo_epi16(k, k),
_mm_unpackhi_epi16(k, k)));
}
// 8 -> 16
template<> Vc_INTRINSIC Vc_CONST __m256 mask_cast<8, 16, __m256>(__m256i k)
{
// aabb ccdd eeff gghh -> abcd efgh 0000 0000
return AVX::zeroExtend(mask_cast<8, 8, __m128>(k));
}
// 16 -> 8
#ifdef Vc_IMPL_AVX2
template<> Vc_INTRINSIC Vc_CONST __m256 mask_cast<16, 8, __m256>(__m256i k)
{
// abcd efgh ijkl mnop -> aabb ccdd eeff gghh
const auto flipped = Mem::permute4x64<X0, X2, X1, X3>(k);
return _mm256_castsi256_ps(AVX::unpacklo_epi16(flipped, flipped));
}
#endif
// 16 -> 4
template<> Vc_INTRINSIC Vc_CONST __m256 mask_cast<16, 4, __m256>(__m256i k)
{
// abcd efgh ijkl mnop -> aaaa bbbb cccc dddd
const auto tmp = _mm_unpacklo_epi16(AVX::lo128(k), AVX::lo128(k)); // aabb ccdd
return _mm256_castsi256_ps(AVX::concat(_mm_unpacklo_epi32(tmp, tmp), _mm_unpackhi_epi32(tmp, tmp)));
}
// allone{{{1
template<> Vc_INTRINSIC Vc_CONST __m256 allone<__m256 >() { return AVX::setallone_ps(); }
template<> Vc_INTRINSIC Vc_CONST __m256i allone<__m256i>() { return AVX::setallone_si256(); }
template<> Vc_INTRINSIC Vc_CONST __m256d allone<__m256d>() { return AVX::setallone_pd(); }
// zero{{{1
template<> Vc_INTRINSIC Vc_CONST __m256 zero<__m256 >() { return _mm256_setzero_ps(); }
template<> Vc_INTRINSIC Vc_CONST __m256i zero<__m256i>() { return _mm256_setzero_si256(); }
template<> Vc_INTRINSIC Vc_CONST __m256d zero<__m256d>() { return _mm256_setzero_pd(); }
// one{{{1
Vc_INTRINSIC Vc_CONST __m256 one( float) { return AVX::setone_ps (); }
Vc_INTRINSIC Vc_CONST __m256d one(double) { return AVX::setone_pd (); }
Vc_INTRINSIC Vc_CONST __m256i one( int) { return AVX::setone_epi32(); }
Vc_INTRINSIC Vc_CONST __m256i one( uint) { return AVX::setone_epu32(); }
Vc_INTRINSIC Vc_CONST __m256i one( short) { return AVX::setone_epi16(); }
Vc_INTRINSIC Vc_CONST __m256i one(ushort) { return AVX::setone_epu16(); }
Vc_INTRINSIC Vc_CONST __m256i one( schar) { return AVX::setone_epi8 (); }
Vc_INTRINSIC Vc_CONST __m256i one( uchar) { return AVX::setone_epu8 (); }
// negate{{{1
Vc_ALWAYS_INLINE Vc_CONST __m256 negate(__m256 v, std::integral_constant<std::size_t, 4>)
{
return _mm256_xor_ps(v, AVX::setsignmask_ps());
}
Vc_ALWAYS_INLINE Vc_CONST __m256d negate(__m256d v, std::integral_constant<std::size_t, 8>)
{
return _mm256_xor_pd(v, AVX::setsignmask_pd());
}
Vc_ALWAYS_INLINE Vc_CONST __m256i negate(__m256i v, std::integral_constant<std::size_t, 4>)
{
return AVX::sign_epi32(v, Detail::allone<__m256i>());
}
Vc_ALWAYS_INLINE Vc_CONST __m256i negate(__m256i v, std::integral_constant<std::size_t, 2>)
{
return AVX::sign_epi16(v, Detail::allone<__m256i>());
}
// xor_{{{1
Vc_INTRINSIC __m256 xor_(__m256 a, __m256 b) { return _mm256_xor_ps(a, b); }
Vc_INTRINSIC __m256d xor_(__m256d a, __m256d b) { return _mm256_xor_pd(a, b); }
Vc_INTRINSIC __m256i xor_(__m256i a, __m256i b)
{
#ifdef Vc_IMPL_AVX2
return _mm256_xor_si256(a, b);
#else
return _mm256_castps_si256(
_mm256_xor_ps(_mm256_castsi256_ps(a), _mm256_castsi256_ps(b)));
#endif
}
// or_{{{1
Vc_INTRINSIC __m256 or_(__m256 a, __m256 b) { return _mm256_or_ps(a, b); }
Vc_INTRINSIC __m256d or_(__m256d a, __m256d b) { return _mm256_or_pd(a, b); }
Vc_INTRINSIC __m256i or_(__m256i a, __m256i b)
{
#ifdef Vc_IMPL_AVX2
return _mm256_or_si256(a, b);
#else
return _mm256_castps_si256(
_mm256_or_ps(_mm256_castsi256_ps(a), _mm256_castsi256_ps(b)));
#endif
}
// and_{{{1
Vc_INTRINSIC __m256 and_(__m256 a, __m256 b) { return _mm256_and_ps(a, b); }
Vc_INTRINSIC __m256d and_(__m256d a, __m256d b) { return _mm256_and_pd(a, b); }
Vc_INTRINSIC __m256i and_(__m256i a, __m256i b) {
#ifdef Vc_IMPL_AVX2
return _mm256_and_si256(a, b);
#else
return _mm256_castps_si256(
_mm256_and_ps(_mm256_castsi256_ps(a), _mm256_castsi256_ps(b)));
#endif
}
// andnot_{{{1
Vc_INTRINSIC __m256 andnot_(__m256 a, __m256 b) { return _mm256_andnot_ps(a, b); }
Vc_INTRINSIC __m256d andnot_(__m256d a, __m256d b) { return _mm256_andnot_pd(a, b); }
Vc_INTRINSIC __m256i andnot_(__m256i a, __m256i b)
{
#ifdef Vc_IMPL_AVX2
return _mm256_andnot_si256(a, b);
#else
return _mm256_castps_si256(
_mm256_andnot_ps(_mm256_castsi256_ps(a), _mm256_castsi256_ps(b)));
#endif
}
// not_{{{1
Vc_INTRINSIC __m256 not_(__m256 a) { return andnot_(a, allone<__m256 >()); }
Vc_INTRINSIC __m256d not_(__m256d a) { return andnot_(a, allone<__m256d>()); }
Vc_INTRINSIC __m256i not_(__m256i a) { return andnot_(a, allone<__m256i>()); }
// blend{{{1
Vc_INTRINSIC __m256 blend(__m256 a, __m256 b, __m256 c) { return _mm256_blendv_ps(a, b, c); }
Vc_INTRINSIC __m256d blend(__m256d a, __m256d b, __m256d c) { return _mm256_blendv_pd(a, b, c); }
Vc_INTRINSIC __m256i blend(__m256i a, __m256i b, __m256i c) { return AVX::blendv_epi8(a, b, c); }
// abs{{{1
Vc_INTRINSIC __m256 abs(__m256 a, float) { return and_(a, AVX::setabsmask_ps()); }
Vc_INTRINSIC __m256d abs(__m256d a, double) { return and_(a, AVX::setabsmask_pd()); }
Vc_INTRINSIC __m256i abs(__m256i a, int) { return AVX::abs_epi32(a); }
Vc_INTRINSIC __m256i abs(__m256i a, uint) { return a; }
Vc_INTRINSIC __m256i abs(__m256i a, short) { return AVX::abs_epi16(a); }
Vc_INTRINSIC __m256i abs(__m256i a, ushort) { return a; }
Vc_INTRINSIC __m256i abs(__m256i a, schar) { return AVX::abs_epi8 (a); }
Vc_INTRINSIC __m256i abs(__m256i a, uchar) { return a; }
// add{{{1
Vc_INTRINSIC __m256 add(__m256 a, __m256 b, float) { return _mm256_add_ps(a, b); }
Vc_INTRINSIC __m256d add(__m256d a, __m256d b, double) { return _mm256_add_pd(a, b); }
Vc_INTRINSIC __m256i add(__m256i a, __m256i b, int) { return AVX::add_epi32(a, b); }
Vc_INTRINSIC __m256i add(__m256i a, __m256i b, uint) { return AVX::add_epi32(a, b); }
Vc_INTRINSIC __m256i add(__m256i a, __m256i b, short) { return AVX::add_epi16(a, b); }
Vc_INTRINSIC __m256i add(__m256i a, __m256i b, ushort) { return AVX::add_epi16(a, b); }
// sub{{{1
Vc_INTRINSIC __m256 sub(__m256 a, __m256 b, float) { return _mm256_sub_ps(a, b); }
Vc_INTRINSIC __m256d sub(__m256d a, __m256d b, double) { return _mm256_sub_pd(a, b); }
Vc_INTRINSIC __m256i sub(__m256i a, __m256i b, int) { return AVX::sub_epi32(a, b); }
Vc_INTRINSIC __m256i sub(__m256i a, __m256i b, uint) { return AVX::sub_epi32(a, b); }
Vc_INTRINSIC __m256i sub(__m256i a, __m256i b, short) { return AVX::sub_epi16(a, b); }
Vc_INTRINSIC __m256i sub(__m256i a, __m256i b, ushort) { return AVX::sub_epi16(a, b); }
// mul{{{1
Vc_INTRINSIC __m256 mul(__m256 a, __m256 b, float) { return _mm256_mul_ps(a, b); }
Vc_INTRINSIC __m256d mul(__m256d a, __m256d b, double) { return _mm256_mul_pd(a, b); }
Vc_INTRINSIC __m256i mul(__m256i a, __m256i b, int) { return AVX::mullo_epi32(a, b); }
Vc_INTRINSIC __m256i mul(__m256i a, __m256i b, uint) { return AVX::mullo_epi32(a, b); }
Vc_INTRINSIC __m256i mul(__m256i a, __m256i b, short) { return AVX::mullo_epi16(a, b); }
Vc_INTRINSIC __m256i mul(__m256i a, __m256i b, ushort) { return AVX::mullo_epi16(a, b); }
// mul{{{1
Vc_INTRINSIC __m256 div(__m256 a, __m256 b, float) { return _mm256_div_ps(a, b); }
Vc_INTRINSIC __m256d div(__m256d a, __m256d b, double) { return _mm256_div_pd(a, b); }
Vc_INTRINSIC __m256i div(__m256i a, __m256i b, int) {
using namespace AVX;
const __m256d lo1 = _mm256_cvtepi32_pd(lo128(a));
const __m256d lo2 = _mm256_cvtepi32_pd(lo128(b));
const __m256d hi1 = _mm256_cvtepi32_pd(hi128(a));
const __m256d hi2 = _mm256_cvtepi32_pd(hi128(b));
return concat(_mm256_cvttpd_epi32(_mm256_div_pd(lo1, lo2)),
_mm256_cvttpd_epi32(_mm256_div_pd(hi1, hi2)));
}
Vc_INTRINSIC __m256i div(__m256i a, __m256i b, uint) {
// SSE/AVX only has signed int conversion to doubles. Therefore we first adjust the input before
// conversion and take the adjustment back after the conversion.
// It could be argued that for b this is not really important because division by a b >= 2^31 is
// useless. But for full correctness it cannot be ignored.
using namespace AVX;
const __m256i aa = add_epi32(a, set1_epi32(-2147483648));
const __m256i bb = add_epi32(b, set1_epi32(-2147483648));
const __m256d loa = _mm256_add_pd(_mm256_cvtepi32_pd(lo128(aa)), set1_pd(2147483648.));
const __m256d hia = _mm256_add_pd(_mm256_cvtepi32_pd(hi128(aa)), set1_pd(2147483648.));
const __m256d lob = _mm256_add_pd(_mm256_cvtepi32_pd(lo128(bb)), set1_pd(2147483648.));
const __m256d hib = _mm256_add_pd(_mm256_cvtepi32_pd(hi128(bb)), set1_pd(2147483648.));
// there is one remaining problem: a >= 2^31 and b == 1
// in that case the return value would be 2^31
return avx_cast<__m256i>(_mm256_blendv_ps(
avx_cast<__m256>(concat(_mm256_cvttpd_epi32(_mm256_div_pd(loa, lob)),
_mm256_cvttpd_epi32(_mm256_div_pd(hia, hib)))),
avx_cast<__m256>(a),
avx_cast<__m256>(cmpeq_epi32(b, setone_epi32()))));
}
Vc_INTRINSIC __m256i div(__m256i a, __m256i b, short) {
using namespace AVX;
const __m256 lo =
_mm256_div_ps(convert<short, float>(lo128(a)), convert<short, float>(lo128(b)));
const __m256 hi =
_mm256_div_ps(convert<short, float>(hi128(a)), convert<short, float>(hi128(b)));
return concat(convert<float, short>(lo), convert<float, short>(hi));
}
// horizontal add{{{1
template <typename T> Vc_INTRINSIC T add(Common::IntrinsicType<T, 32 / sizeof(T)> a, T)
{
return {add(add(AVX::lo128(a), AVX::hi128(a), T()), T())};
}
// horizontal mul{{{1
template <typename T> Vc_INTRINSIC T mul(Common::IntrinsicType<T, 32 / sizeof(T)> a, T)
{
return {mul(mul(AVX::lo128(a), AVX::hi128(a), T()), T())};
}
// horizontal min{{{1
template <typename T> Vc_INTRINSIC T min(Common::IntrinsicType<T, 32 / sizeof(T)> a, T)
{
return {min(min(AVX::lo128(a), AVX::hi128(a), T()), T())};
}
// horizontal max{{{1
template <typename T> Vc_INTRINSIC T max(Common::IntrinsicType<T, 32 / sizeof(T)> a, T)
{
return {max(max(AVX::lo128(a), AVX::hi128(a), T()), T())};
}
// cmpeq{{{1
Vc_INTRINSIC __m256 cmpeq(__m256 a, __m256 b, float) { return AvxIntrinsics::cmpeq_ps(a, b); }
Vc_INTRINSIC __m256d cmpeq(__m256d a, __m256d b, double) { return AvxIntrinsics::cmpeq_pd(a, b); }
Vc_INTRINSIC __m256i cmpeq(__m256i a, __m256i b, int) { return AvxIntrinsics::cmpeq_epi32(a, b); }
Vc_INTRINSIC __m256i cmpeq(__m256i a, __m256i b, uint) { return AvxIntrinsics::cmpeq_epi32(a, b); }
Vc_INTRINSIC __m256i cmpeq(__m256i a, __m256i b, short) { return AvxIntrinsics::cmpeq_epi16(a, b); }
Vc_INTRINSIC __m256i cmpeq(__m256i a, __m256i b, ushort) { return AvxIntrinsics::cmpeq_epi16(a, b); }
// cmpneq{{{1
Vc_INTRINSIC __m256 cmpneq(__m256 a, __m256 b, float) { return AvxIntrinsics::cmpneq_ps(a, b); }
Vc_INTRINSIC __m256d cmpneq(__m256d a, __m256d b, double) { return AvxIntrinsics::cmpneq_pd(a, b); }
Vc_INTRINSIC __m256i cmpneq(__m256i a, __m256i b, int) { return not_(AvxIntrinsics::cmpeq_epi32(a, b)); }
Vc_INTRINSIC __m256i cmpneq(__m256i a, __m256i b, uint) { return not_(AvxIntrinsics::cmpeq_epi32(a, b)); }
Vc_INTRINSIC __m256i cmpneq(__m256i a, __m256i b, short) { return not_(AvxIntrinsics::cmpeq_epi16(a, b)); }
Vc_INTRINSIC __m256i cmpneq(__m256i a, __m256i b, ushort) { return not_(AvxIntrinsics::cmpeq_epi16(a, b)); }
Vc_INTRINSIC __m256i cmpneq(__m256i a, __m256i b, schar) { return not_(AvxIntrinsics::cmpeq_epi8 (a, b)); }
Vc_INTRINSIC __m256i cmpneq(__m256i a, __m256i b, uchar) { return not_(AvxIntrinsics::cmpeq_epi8 (a, b)); }
// cmpgt{{{1
Vc_INTRINSIC __m256 cmpgt(__m256 a, __m256 b, float) { return AVX::cmpgt_ps(a, b); }
Vc_INTRINSIC __m256d cmpgt(__m256d a, __m256d b, double) { return AVX::cmpgt_pd(a, b); }
Vc_INTRINSIC __m256i cmpgt(__m256i a, __m256i b, int) { return AVX::cmpgt_epi32(a, b); }
Vc_INTRINSIC __m256i cmpgt(__m256i a, __m256i b, uint) { return AVX::cmpgt_epu32(a, b); }
Vc_INTRINSIC __m256i cmpgt(__m256i a, __m256i b, short) { return AVX::cmpgt_epi16(a, b); }
Vc_INTRINSIC __m256i cmpgt(__m256i a, __m256i b, ushort) { return AVX::cmpgt_epu16(a, b); }
Vc_INTRINSIC __m256i cmpgt(__m256i a, __m256i b, schar) { return AVX::cmpgt_epi8 (a, b); }
Vc_INTRINSIC __m256i cmpgt(__m256i a, __m256i b, uchar) { return AVX::cmpgt_epu8 (a, b); }
// cmpge{{{1
Vc_INTRINSIC __m256 cmpge(__m256 a, __m256 b, float) { return AVX::cmpge_ps(a, b); }
Vc_INTRINSIC __m256d cmpge(__m256d a, __m256d b, double) { return AVX::cmpge_pd(a, b); }
Vc_INTRINSIC __m256i cmpge(__m256i a, __m256i b, int) { return not_(AVX::cmpgt_epi32(b, a)); }
Vc_INTRINSIC __m256i cmpge(__m256i a, __m256i b, uint) { return not_(AVX::cmpgt_epu32(b, a)); }
Vc_INTRINSIC __m256i cmpge(__m256i a, __m256i b, short) { return not_(AVX::cmpgt_epi16(b, a)); }
Vc_INTRINSIC __m256i cmpge(__m256i a, __m256i b, ushort) { return not_(AVX::cmpgt_epu16(b, a)); }
Vc_INTRINSIC __m256i cmpge(__m256i a, __m256i b, schar) { return not_(AVX::cmpgt_epi8 (b, a)); }
Vc_INTRINSIC __m256i cmpge(__m256i a, __m256i b, uchar) { return not_(AVX::cmpgt_epu8 (b, a)); }
// cmple{{{1
Vc_INTRINSIC __m256 cmple(__m256 a, __m256 b, float) { return AVX::cmple_ps(a, b); }
Vc_INTRINSIC __m256d cmple(__m256d a, __m256d b, double) { return AVX::cmple_pd(a, b); }
Vc_INTRINSIC __m256i cmple(__m256i a, __m256i b, int) { return not_(AVX::cmpgt_epi32(a, b)); }
Vc_INTRINSIC __m256i cmple(__m256i a, __m256i b, uint) { return not_(AVX::cmpgt_epu32(a, b)); }
Vc_INTRINSIC __m256i cmple(__m256i a, __m256i b, short) { return not_(AVX::cmpgt_epi16(a, b)); }
Vc_INTRINSIC __m256i cmple(__m256i a, __m256i b, ushort) { return not_(AVX::cmpgt_epu16(a, b)); }
Vc_INTRINSIC __m256i cmple(__m256i a, __m256i b, schar) { return not_(AVX::cmpgt_epi8 (a, b)); }
Vc_INTRINSIC __m256i cmple(__m256i a, __m256i b, uchar) { return not_(AVX::cmpgt_epu8 (a, b)); }
// cmplt{{{1
Vc_INTRINSIC __m256 cmplt(__m256 a, __m256 b, float) { return AVX::cmplt_ps(a, b); }
Vc_INTRINSIC __m256d cmplt(__m256d a, __m256d b, double) { return AVX::cmplt_pd(a, b); }
Vc_INTRINSIC __m256i cmplt(__m256i a, __m256i b, int) { return AVX::cmpgt_epi32(b, a); }
Vc_INTRINSIC __m256i cmplt(__m256i a, __m256i b, uint) { return AVX::cmpgt_epu32(b, a); }
Vc_INTRINSIC __m256i cmplt(__m256i a, __m256i b, short) { return AVX::cmpgt_epi16(b, a); }
Vc_INTRINSIC __m256i cmplt(__m256i a, __m256i b, ushort) { return AVX::cmpgt_epu16(b, a); }
Vc_INTRINSIC __m256i cmplt(__m256i a, __m256i b, schar) { return AVX::cmpgt_epi8 (b, a); }
Vc_INTRINSIC __m256i cmplt(__m256i a, __m256i b, uchar) { return AVX::cmpgt_epu8 (b, a); }
// fma{{{1
Vc_INTRINSIC __m256 fma(__m256 a, __m256 b, __m256 c, float) {
#ifdef Vc_IMPL_FMA4
return _mm256_macc_ps(a, b, c);
#elif defined Vc_IMPL_FMA
return _mm256_fmadd_ps(a, b, c);
#else
using namespace AVX;
__m256d v1_0 = _mm256_cvtps_pd(lo128(a));
__m256d v1_1 = _mm256_cvtps_pd(hi128(a));
__m256d v2_0 = _mm256_cvtps_pd(lo128(b));
__m256d v2_1 = _mm256_cvtps_pd(hi128(b));
__m256d
gitextract_8_7cfln5/
├── .clang-format
├── .clang-tidy
├── .dockerignore
├── .editorconfig
├── .envrc
├── .git-blame-ignore-revs
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── config.yml
│ ├── dependabot.yml
│ ├── instructions/
│ │ ├── cmake-review.instructions.md
│ │ ├── cpp-review.instructions.md
│ │ └── workflow-review.instructions.md
│ ├── labeler.yml
│ ├── pull_request_template.md
│ ├── release.yml
│ ├── scripts/
│ │ ├── docker-build.bash
│ │ └── setup-sccache.sh
│ └── workflows/
│ ├── build-and-test-linux.yaml
│ ├── build-and-test-macos.yaml
│ ├── codeql.yml
│ ├── docker.yaml
│ ├── labeler.yml
│ ├── nix.yaml
│ ├── publish-appimage.yml
│ ├── stale.yml
│ └── web.yml
├── .gitignore
├── .prettierrc.cjs
├── .vscode/
│ └── extensions.json
├── 3rdparty/
│ ├── CMakeLists.txt
│ ├── Vc/
│ │ ├── .clang-format
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── Vc/
│ │ │ ├── Allocator
│ │ │ ├── IO
│ │ │ ├── Memory
│ │ │ ├── SimdArray
│ │ │ ├── Utils
│ │ │ ├── Vc
│ │ │ ├── algorithm
│ │ │ ├── array
│ │ │ ├── avx/
│ │ │ │ ├── casts.h
│ │ │ │ ├── const.h
│ │ │ │ ├── const_data.h
│ │ │ │ ├── debug.h
│ │ │ │ ├── deinterleave.tcc
│ │ │ │ ├── detail.h
│ │ │ │ ├── helperimpl.h
│ │ │ │ ├── intrinsics.h
│ │ │ │ ├── limits.h
│ │ │ │ ├── macros.h
│ │ │ │ ├── mask.h
│ │ │ │ ├── mask.tcc
│ │ │ │ ├── math.h
│ │ │ │ ├── shuffle.h
│ │ │ │ ├── simd_cast.h
│ │ │ │ ├── simd_cast_caller.tcc
│ │ │ │ ├── types.h
│ │ │ │ ├── vector.h
│ │ │ │ ├── vector.tcc
│ │ │ │ └── vectorhelper.h
│ │ │ ├── common/
│ │ │ │ ├── algorithms.h
│ │ │ │ ├── aliasingentryhelper.h
│ │ │ │ ├── alignedbase.h
│ │ │ │ ├── bitscanintrinsics.h
│ │ │ │ ├── const.h
│ │ │ │ ├── data.h
│ │ │ │ ├── deinterleave.h
│ │ │ │ ├── detail.h
│ │ │ │ ├── elementreference.h
│ │ │ │ ├── exponential.h
│ │ │ │ ├── fix_clang_emmintrin.h
│ │ │ │ ├── gatherimplementation.h
│ │ │ │ ├── gatherinterface.h
│ │ │ │ ├── gatherinterface_deprecated.h
│ │ │ │ ├── generalinterface.h
│ │ │ │ ├── iif.h
│ │ │ │ ├── indexsequence.h
│ │ │ │ ├── interleave.h
│ │ │ │ ├── interleavedmemory.h
│ │ │ │ ├── iterators.h
│ │ │ │ ├── loadinterface.h
│ │ │ │ ├── loadstoreflags.h
│ │ │ │ ├── logarithm.h
│ │ │ │ ├── macros.h
│ │ │ │ ├── makeContainer.h
│ │ │ │ ├── make_unique.h
│ │ │ │ ├── malloc.h
│ │ │ │ ├── mask.h
│ │ │ │ ├── maskbool.h
│ │ │ │ ├── math.h
│ │ │ │ ├── memory.h
│ │ │ │ ├── memorybase.h
│ │ │ │ ├── memoryfwd.h
│ │ │ │ ├── operators.h
│ │ │ │ ├── permutation.h
│ │ │ │ ├── scatterimplementation.h
│ │ │ │ ├── scatterinterface.h
│ │ │ │ ├── scatterinterface_deprecated.h
│ │ │ │ ├── set.h
│ │ │ │ ├── simd_cast.h
│ │ │ │ ├── simd_cast_caller.tcc
│ │ │ │ ├── simdarray.h
│ │ │ │ ├── simdarrayfwd.h
│ │ │ │ ├── simdarrayhelper.h
│ │ │ │ ├── simdize.h
│ │ │ │ ├── simdmaskarray.h
│ │ │ │ ├── span.h
│ │ │ │ ├── storage.h
│ │ │ │ ├── storeinterface.h
│ │ │ │ ├── subscript.h
│ │ │ │ ├── support.h
│ │ │ │ ├── transpose.h
│ │ │ │ ├── trigonometric.h
│ │ │ │ ├── types.h
│ │ │ │ ├── utility.h
│ │ │ │ ├── vector/
│ │ │ │ │ └── casts.h
│ │ │ │ ├── vector.h
│ │ │ │ ├── vectorabi.h
│ │ │ │ ├── vectortraits.h
│ │ │ │ ├── vectortuple.h
│ │ │ │ ├── where.h
│ │ │ │ ├── writemaskedvector.h
│ │ │ │ └── x86_prefetches.h
│ │ │ ├── cpuid.h
│ │ │ ├── fwddecl.h
│ │ │ ├── global.h
│ │ │ ├── iterators
│ │ │ ├── limits
│ │ │ ├── scalar/
│ │ │ │ ├── detail.h
│ │ │ │ ├── helperimpl.h
│ │ │ │ ├── limits.h
│ │ │ │ ├── macros.h
│ │ │ │ ├── mask.h
│ │ │ │ ├── math.h
│ │ │ │ ├── operators.h
│ │ │ │ ├── simd_cast.h
│ │ │ │ ├── simd_cast_caller.tcc
│ │ │ │ ├── type_traits.h
│ │ │ │ ├── types.h
│ │ │ │ ├── vector.h
│ │ │ │ └── vector.tcc
│ │ │ ├── simdize
│ │ │ ├── span
│ │ │ ├── sse/
│ │ │ │ ├── casts.h
│ │ │ │ ├── const.h
│ │ │ │ ├── const_data.h
│ │ │ │ ├── debug.h
│ │ │ │ ├── deinterleave.tcc
│ │ │ │ ├── detail.h
│ │ │ │ ├── helperimpl.h
│ │ │ │ ├── intrinsics.h
│ │ │ │ ├── limits.h
│ │ │ │ ├── macros.h
│ │ │ │ ├── mask.h
│ │ │ │ ├── mask.tcc
│ │ │ │ ├── math.h
│ │ │ │ ├── prefetches.tcc
│ │ │ │ ├── shuffle.h
│ │ │ │ ├── simd_cast.h
│ │ │ │ ├── simd_cast_caller.tcc
│ │ │ │ ├── type_traits.h
│ │ │ │ ├── types.h
│ │ │ │ ├── vector.h
│ │ │ │ ├── vector.tcc
│ │ │ │ ├── vectorhelper.h
│ │ │ │ └── vectorhelper.tcc
│ │ │ ├── support.h
│ │ │ ├── traits/
│ │ │ │ ├── decay.h
│ │ │ │ ├── entry_type_of.h
│ │ │ │ ├── has_addition_operator.h
│ │ │ │ ├── has_contiguous_storage.h
│ │ │ │ ├── has_equality_operator.h
│ │ │ │ ├── has_multiply_operator.h
│ │ │ │ ├── has_no_allocated_data.h
│ │ │ │ ├── has_subscript_operator.h
│ │ │ │ ├── is_functor_argument_immutable.h
│ │ │ │ ├── is_implicit_cast_allowed.h
│ │ │ │ ├── is_index_sequence.h
│ │ │ │ ├── is_output_iterator.h
│ │ │ │ └── type_traits.h
│ │ │ ├── type_traits
│ │ │ ├── vector
│ │ │ ├── vector.h
│ │ │ └── version.h
│ │ ├── cmake/
│ │ │ ├── AddCompilerFlag.cmake
│ │ │ ├── AddTargetProperty.cmake
│ │ │ ├── CheckCCompilerFlag.cmake
│ │ │ ├── CheckCXXCompilerFlag.cmake
│ │ │ ├── FindVc.cmake
│ │ │ ├── OptimizeForArchitecture.cmake
│ │ │ ├── UserWarning.cmake
│ │ │ ├── VcConfig.cmake.in
│ │ │ ├── VcMacros.cmake
│ │ │ ├── toolchain-arm-linux-gnueabi-gcc.cmake
│ │ │ └── toolchain-arm-linux.cmake
│ │ ├── print_target_architecture.cmake
│ │ └── src/
│ │ ├── avx_sorthelper.cpp
│ │ ├── const.cpp
│ │ ├── cpuid.cpp
│ │ ├── sse_sorthelper.cpp
│ │ ├── support_dummy.cpp
│ │ ├── support_x86.cpp
│ │ └── trigonometric.cpp
│ └── toluapp/
│ ├── .gitignore
│ ├── .travis.yml
│ ├── CMakeLists.txt
│ ├── COPYRIGHT
│ ├── INSTALL
│ ├── README-5.1
│ ├── README.md
│ ├── SConstruct
│ ├── cmake/
│ │ ├── dist.cmake
│ │ └── lua.cmake
│ ├── config_linux.py
│ ├── config_msvc.py
│ ├── config_posix.py
│ ├── custom-5.1.py
│ ├── debian/
│ │ ├── README.Debian
│ │ ├── changelog
│ │ ├── compat
│ │ ├── conffiles.ex
│ │ ├── control
│ │ ├── copyright
│ │ ├── cron.d.ex
│ │ ├── dirs
│ │ ├── docs
│ │ ├── emacsen-install.ex
│ │ ├── emacsen-remove.ex
│ │ ├── emacsen-startup.ex
│ │ ├── init.d.ex
│ │ ├── manpage.1.ex
│ │ ├── manpage.sgml.ex
│ │ ├── manpage.xml.ex
│ │ ├── menu.ex
│ │ ├── postinst.ex
│ │ ├── postrm.ex
│ │ ├── preinst.ex
│ │ ├── prerm.ex
│ │ ├── rules
│ │ ├── tolua++-default.ex
│ │ ├── tolua++.doc-base.EX
│ │ └── watch.ex
│ ├── dist.info
│ ├── doc/
│ │ ├── index.html
│ │ └── tolua++.html
│ ├── include/
│ │ └── tolua++.h
│ ├── libtoluapp.def
│ ├── src/
│ │ ├── bin/
│ │ │ ├── SCsub
│ │ │ ├── lua/
│ │ │ │ ├── all.lua
│ │ │ │ ├── array.lua
│ │ │ │ ├── basic.lua
│ │ │ │ ├── class.lua
│ │ │ │ ├── clean.lua
│ │ │ │ ├── code.lua
│ │ │ │ ├── compat-5.1.lua
│ │ │ │ ├── compat.lua
│ │ │ │ ├── container.lua
│ │ │ │ ├── custom.lua
│ │ │ │ ├── declaration.lua
│ │ │ │ ├── define.lua
│ │ │ │ ├── doit.lua
│ │ │ │ ├── enumerate.lua
│ │ │ │ ├── feature.lua
│ │ │ │ ├── function.lua
│ │ │ │ ├── module.lua
│ │ │ │ ├── namespace.lua
│ │ │ │ ├── operator.lua
│ │ │ │ ├── ordered_pairs.lua
│ │ │ │ ├── package.lua
│ │ │ │ ├── template_class.lua
│ │ │ │ ├── typedef.lua
│ │ │ │ ├── variable.lua
│ │ │ │ └── verbatim.lua
│ │ │ ├── tolua.c
│ │ │ ├── tolua_scons.pkg
│ │ │ ├── toluabind.c
│ │ │ ├── toluabind.h
│ │ │ ├── toluabind_default.c
│ │ │ └── toluabind_default.h
│ │ ├── lib/
│ │ │ ├── SCsub
│ │ │ ├── tolua_event.c
│ │ │ ├── tolua_event.h
│ │ │ ├── tolua_is.c
│ │ │ ├── tolua_map.c
│ │ │ ├── tolua_push.c
│ │ │ └── tolua_to.c
│ │ └── tests/
│ │ ├── SCsub
│ │ ├── tarray.c
│ │ ├── tarray.h
│ │ ├── tarray.lua
│ │ ├── tarray.pkg
│ │ ├── tarraybind.c
│ │ ├── tclass.cpp
│ │ ├── tclass.h
│ │ ├── tclass.lua
│ │ ├── tclass.pkg
│ │ ├── tconstant.h
│ │ ├── tconstant.lua
│ │ ├── tconstant.pkg
│ │ ├── tdirective.lua
│ │ ├── tdirective.pkg
│ │ ├── tdirectivebind.c
│ │ ├── tdirectivelua.lua
│ │ ├── tdirectivepkg.pkg
│ │ ├── tfunction.h
│ │ ├── tfunction.lua
│ │ ├── tfunction.pkg
│ │ ├── tmodule.c
│ │ ├── tmodule.h
│ │ ├── tmodule.lua
│ │ ├── tmodule.pkg
│ │ ├── tmodulebind.c
│ │ ├── tnamespace.h
│ │ ├── tnamespace.lua
│ │ ├── tnamespace.pkg
│ │ ├── tvariable.c
│ │ ├── tvariable.h
│ │ ├── tvariable.lua
│ │ ├── tvariable.pkg
│ │ └── tvariablebind.c
│ └── win32/
│ └── vc7/
│ ├── toluapp.sln
│ └── toluapp.vcproj
├── AGENTS.md
├── AUTHORS
├── CMakeLists.txt
├── COPYING
├── Dockerfile
├── LICENSE.BSD
├── LICENSE.md
├── README.cmake
├── README.md
├── appimage/
│ ├── build.sh
│ └── pubkey.asc
├── bin/
│ ├── changelog2html.py
│ ├── check-style.sh
│ ├── check_docs.py
│ ├── clang-tidy-diff.py
│ ├── format-colors.sh
│ ├── run-clang-format.py
│ └── text2c.sh
├── cmake/
│ ├── CCache.cmake
│ ├── Catch.cmake
│ ├── CatchAddTests.cmake
│ ├── CodeCoverage.cmake
│ ├── Conky.cmake
│ ├── ConkyBuildOptions.cmake
│ ├── ConkyCPackSetup.cmake
│ ├── ConkyPlatformChecks.cmake
│ ├── DependentOption.cmake
│ ├── FindClangFormat.cmake
│ ├── FindClangTidy.cmake
│ ├── FindWayland.cmake
│ ├── ToLua.cmake
│ ├── UninstallConky.cmake.in
│ ├── build.h.in
│ ├── clang-format.cmake
│ ├── clang-tidy.cmake
│ ├── config.h.in
│ └── scripts/
│ ├── clang-format-check-changed
│ └── clang-format-check-changed.py
├── data/
│ ├── CMakeLists.txt
│ ├── color-names.yml
│ ├── conky-dfly-smp.conf
│ ├── conky.conf
│ ├── conky.desktop
│ └── conky_no_x11.conf
├── doc/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── config_settings.yaml
│ ├── lua.yaml
│ ├── man.md.j2
│ ├── render.py
│ └── variables.yaml
├── extras/
│ ├── CMakeLists.txt
│ ├── convert.lua
│ ├── gedit/
│ │ └── conky.lang
│ ├── git_ranked.py
│ ├── nano/
│ │ └── conky.nanorc.j2
│ └── vim/
│ ├── ftdetect/
│ │ └── conkyrc.vim
│ └── syntax/
│ └── conkyrc.vim.j2
├── flake.nix
├── lefthook.yml
├── lua/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── cairo.pkg
│ ├── cairo_imlib2_helper.pkg
│ ├── cairo_text_helper.pkg
│ ├── cairo_xlib.pkg
│ ├── imlib2.pkg
│ ├── imlib2_old.pkg
│ ├── libcairo-helper.h
│ ├── libcairo.patch
│ ├── libcairo_imlib2_helper.h
│ ├── libcairo_text_helper.h
│ ├── librsvg-helper.h
│ ├── rsvg.pkg
│ └── text.pkg
├── requirements-dev.txt
├── src/
│ ├── CMakeLists.txt
│ ├── build.h.in
│ ├── c++wrap.cc
│ ├── c++wrap.hh
│ ├── common.cc
│ ├── common.h
│ ├── conky-imlib2.cc
│ ├── conky-imlib2.h
│ ├── conky.cc
│ ├── conky.h
│ ├── content/
│ │ ├── algebra.cc
│ │ ├── algebra.h
│ │ ├── colour-names-stub.hh
│ │ ├── colours.cc
│ │ ├── colours.hh
│ │ ├── combine.cc
│ │ ├── combine.h
│ │ ├── gradient.cc
│ │ ├── gradient.hh
│ │ ├── scroll.cc
│ │ ├── scroll.h
│ │ ├── specials.cc
│ │ ├── specials.h
│ │ ├── temphelper.cc
│ │ ├── temphelper.h
│ │ ├── template.cc
│ │ ├── template.h
│ │ ├── text_object.cc
│ │ └── text_object.h
│ ├── core.cc
│ ├── core.h
│ ├── data/
│ │ ├── audio/
│ │ │ ├── audacious.cc
│ │ │ ├── audacious.h
│ │ │ ├── cmus.cc
│ │ │ ├── cmus.h
│ │ │ ├── libmpdclient.cc
│ │ │ ├── libmpdclient.h
│ │ │ ├── mixer.cc
│ │ │ ├── mixer.h
│ │ │ ├── moc.cc
│ │ │ ├── moc.h
│ │ │ ├── mpd.cc
│ │ │ ├── mpd.h
│ │ │ ├── pulseaudio.cc
│ │ │ ├── pulseaudio.h
│ │ │ ├── xmms2.cc
│ │ │ └── xmms2.h
│ │ ├── data-source.cc
│ │ ├── data-source.hh
│ │ ├── entropy.cc
│ │ ├── entropy.h
│ │ ├── exec.cc
│ │ ├── exec.h
│ │ ├── fs.cc
│ │ ├── fs.h
│ │ ├── hardware/
│ │ │ ├── apcupsd.cc
│ │ │ ├── apcupsd.h
│ │ │ ├── bsdapm.cc
│ │ │ ├── bsdapm.h
│ │ │ ├── cpu.cc
│ │ │ ├── cpu.h
│ │ │ ├── diskio.cc
│ │ │ ├── diskio.h
│ │ │ ├── hddtemp.cc
│ │ │ ├── hddtemp.h
│ │ │ ├── i8k.cc
│ │ │ ├── i8k.h
│ │ │ ├── ibm.cc
│ │ │ ├── ibm.h
│ │ │ ├── intel_backlight.cc
│ │ │ ├── intel_backlight.h
│ │ │ ├── nvidia.cc
│ │ │ ├── nvidia.h
│ │ │ ├── smapi.cc
│ │ │ ├── smapi.h
│ │ │ ├── sony.cc
│ │ │ └── sony.h
│ │ ├── ical.cc
│ │ ├── ical.h
│ │ ├── iconv_tools.cc
│ │ ├── iconv_tools.h
│ │ ├── misc.cc
│ │ ├── misc.h
│ │ ├── mysql.cc
│ │ ├── mysql.h
│ │ ├── network/
│ │ │ ├── ccurl_thread.cc
│ │ │ ├── ccurl_thread.h
│ │ │ ├── irc.cc
│ │ │ ├── irc.h
│ │ │ ├── libtcp-portmon.cc
│ │ │ ├── libtcp-portmon.h
│ │ │ ├── mail.cc
│ │ │ ├── mail.h
│ │ │ ├── mboxscan.cc
│ │ │ ├── mboxscan.h
│ │ │ ├── net_stat.cc
│ │ │ ├── net_stat.h
│ │ │ ├── prss.cc
│ │ │ ├── prss.h
│ │ │ ├── read_tcpip.cc
│ │ │ ├── read_tcpip.h
│ │ │ ├── rss.cc
│ │ │ ├── rss.h
│ │ │ ├── tcp-portmon.cc
│ │ │ └── tcp-portmon.h
│ │ ├── os/
│ │ │ ├── bsdcommon.cc
│ │ │ ├── bsdcommon.h
│ │ │ ├── darwin.h
│ │ │ ├── darwin.mm
│ │ │ ├── darwin_sip.h
│ │ │ ├── darwin_top_helpers.cc
│ │ │ ├── darwin_top_helpers.h
│ │ │ ├── dragonfly.cc
│ │ │ ├── dragonfly.h
│ │ │ ├── freebsd.cc
│ │ │ ├── freebsd.h
│ │ │ ├── haiku.cc
│ │ │ ├── haiku.h
│ │ │ ├── journal.cc
│ │ │ ├── journal.h
│ │ │ ├── linux.cc
│ │ │ ├── linux.h
│ │ │ ├── netbsd.cc
│ │ │ ├── netbsd.h
│ │ │ ├── openbsd.cc
│ │ │ ├── openbsd.h
│ │ │ ├── solaris.cc
│ │ │ └── solaris.h
│ │ ├── proc.cc
│ │ ├── proc.h
│ │ ├── tailhead.cc
│ │ ├── tailhead.h
│ │ ├── timeinfo.cc
│ │ ├── timeinfo.h
│ │ ├── top.cc
│ │ ├── top.h
│ │ ├── user.cc
│ │ ├── user.h
│ │ ├── users.cc
│ │ └── users.h
│ ├── geometry.h
│ ├── i18n.h
│ ├── logging.h
│ ├── lua/
│ │ ├── colour-settings.cc
│ │ ├── colour-settings.hh
│ │ ├── fonts.cc
│ │ ├── fonts.h
│ │ ├── llua.cc
│ │ ├── llua.h
│ │ ├── lua-config.cc
│ │ ├── lua-config.hh
│ │ ├── luamm.cc
│ │ ├── luamm.hh
│ │ ├── setting.cc
│ │ ├── setting.hh
│ │ ├── x11-settings.cc
│ │ └── x11-settings.h
│ ├── macros.h
│ ├── main.cc
│ ├── mouse-events.cc
│ ├── mouse-events.h
│ ├── output/
│ │ ├── display-console.cc
│ │ ├── display-console.hh
│ │ ├── display-file.cc
│ │ ├── display-file.hh
│ │ ├── display-http.cc
│ │ ├── display-http.hh
│ │ ├── display-ncurses.cc
│ │ ├── display-ncurses.hh
│ │ ├── display-output.cc
│ │ ├── display-output.hh
│ │ ├── display-wayland.cc
│ │ ├── display-wayland.hh
│ │ ├── display-x11.cc
│ │ ├── display-x11.hh
│ │ ├── gui.cc
│ │ ├── gui.h
│ │ ├── nc.cc
│ │ ├── nc.h
│ │ ├── wl.cc
│ │ ├── wl.h
│ │ ├── x11-color.cc
│ │ ├── x11.cc
│ │ └── x11.h
│ ├── prioqueue.cc
│ ├── prioqueue.h
│ ├── semaphore.hh
│ ├── update-cb.cc
│ ├── update-cb.hh
│ └── wl_protocols/
│ └── wlr-layer-shell-unstable-v1.xml
├── tests/
│ ├── CMakeLists.txt
│ ├── catch2/
│ │ ├── catch.hpp
│ │ ├── catch_amalgamated.cpp
│ │ └── catch_amalgamated.hpp
│ ├── dockerfiles/
│ │ ├── Dockerfile.alpine-base
│ │ ├── Dockerfile.alpine-clang
│ │ ├── Dockerfile.alpine-gcc
│ │ ├── Dockerfile.archlinux-base
│ │ ├── Dockerfile.archlinux-clang
│ │ ├── Dockerfile.archlinux-gcc
│ │ ├── Dockerfile.fedora-31-base
│ │ ├── Dockerfile.fedora-31-clang-8
│ │ ├── Dockerfile.fedora-32-base
│ │ ├── Dockerfile.fedora-32-clang-10
│ │ ├── Dockerfile.fedora-33-base
│ │ ├── Dockerfile.fedora-33-clang-11
│ │ ├── Dockerfile.ubuntu-base
│ │ ├── Dockerfile.ubuntu-clang-10
│ │ ├── Dockerfile.ubuntu-clang-11
│ │ ├── Dockerfile.ubuntu-clang-9
│ │ ├── Dockerfile.ubuntu-gcc-10
│ │ ├── Dockerfile.ubuntu-gcc-7
│ │ ├── Dockerfile.ubuntu-gcc-8
│ │ └── Dockerfile.ubuntu-gcc-9
│ ├── llvm-gcov.sh
│ ├── test-algebra.cc
│ ├── test-colours.cc
│ ├── test-common.cc
│ ├── test-conky.cc
│ ├── test-core.cc
│ ├── test-darwin-top.cc
│ ├── test-darwin.cc
│ ├── test-diskio.cc
│ ├── test-fs.cc
│ ├── test-gradient.cc
│ ├── test-graph.cc
│ ├── test-linux-proc.cc
│ ├── test-linux.cc
│ └── test-security.cc
└── web/
├── .gitignore
├── components/
│ ├── CopyleftIcon.tsx
│ ├── Docs.tsx
│ ├── Doggy.tsx
│ ├── Footer.tsx
│ ├── Header.tsx
│ ├── Layout.tsx
│ ├── SEO.tsx
│ ├── Search.tsx
│ └── ThemeSwitcher.tsx
├── cypress/
│ └── e2e/
│ └── basic.cy.js
├── cypress.config.js
├── documents/
│ ├── about.mdx
│ ├── compiling.mdx
│ ├── contributing.mdx
│ ├── docker.mdx
│ └── syntax-highlighting.mdx
├── eslint.config.mjs
├── netlify.toml
├── next-env.d.ts
├── next.config.mjs
├── package.json
├── pages/
│ ├── 404.tsx
│ ├── _app.tsx
│ ├── _document.tsx
│ ├── config_settings.tsx
│ ├── documents/
│ │ └── [slug].tsx
│ ├── index.tsx
│ ├── lua.tsx
│ └── variables.tsx
├── postcss.config.js
├── scripts/
│ └── write-search-index.ts
├── styles/
│ └── globals.css
├── tailwind.config.js
├── tsconfig.json
└── utils/
├── build-meta.ts
├── doc-utils.ts
├── mdx-utils.ts
├── search-serde.ts
├── search.ts
└── tailwind-preset.js
Copy disabled (too large)
Download .txt
Showing preview only (289,270K chars total). Download the full file to get everything.
SYMBOL INDEX (5611 symbols across 365 files)
FILE: 3rdparty/Vc/Vc/avx/casts.h
function namespace (line 37) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/avx/const.h
function namespace (line 36) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/avx/const_data.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 87) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/avx/debug.h
function namespace (line 37) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/avx/detail.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
function Vc_PURE (line 90) | Vc_PURE __m256i
function Vc_INTRINSIC (line 101) | Vc_INTRINSIC __m256 load32(const float *mem, when_unaligned)
function Vc_INTRINSIC (line 105) | Vc_INTRINSIC __m256 load32(const float *mem, when_streaming)
function Vc_INTRINSIC (line 109) | Vc_INTRINSIC __m256d load32(const double *mem, when_aligned)
function Vc_INTRINSIC (line 113) | Vc_INTRINSIC __m256d load32(const double *mem, when_unaligned)
function Vc_INTRINSIC (line 117) | Vc_INTRINSIC __m256d load32(const double *mem, when_streaming)
function __m256i (line 121) | __m256i load32(const T *mem, when_aligned)
function __m256i (line 126) | __m256i load32(const T *mem, when_unaligned)
function __m256i (line 131) | __m256i load32(const T *mem, when_streaming)
function Vc_INTRINSIC (line 140) | Vc_INTRINSIC __m256i load(const uint *mem, when_aligned, LoadTag<__m256i...
function Vc_INTRINSIC (line 145) | Vc_INTRINSIC __m256d load(const double *mem, when_unaligned, LoadTag<__m...
function __m256i (line 298) | __m256i load(const ushort *mem, Flags f, LoadTag<__m256i, short>)
function __m256i (line 303) | __m256i load(const uchar *mem, Flags f, LoadTag<__m256i, short>)
function __m256i (line 308) | __m256i load(const schar *mem, Flags f, LoadTag<__m256i, short>)
function __m256i (line 315) | __m256i load(const uchar *mem, Flags f, LoadTag<__m256i, ushort>)
function __m256i (line 322) | __m256i load(const uint *mem, Flags f, LoadTag<__m256i, int>)
function __m256i (line 327) | __m256i load(const ushort *mem, Flags f, LoadTag<__m256i, int>)
function __m256i (line 332) | __m256i load(const short *mem, Flags f, LoadTag<__m256i, int>)
function __m256i (line 337) | __m256i load(const uchar *mem, Flags, LoadTag<__m256i, int>)
function __m256i (line 342) | __m256i load(const schar *mem, Flags, LoadTag<__m256i, int>)
function __m256i (line 349) | __m256i load(const ushort *mem, Flags f, LoadTag<__m256i, uint>)
function __m256i (line 354) | __m256i load(const uchar *mem, Flags, LoadTag<__m256i, uint>)
function __m256d (line 361) | __m256d load(const float *mem, Flags f, LoadTag<__m256d, double>)
function __m256d (line 366) | __m256d load(const uint *mem, Flags f, LoadTag<__m256d, double>)
function __m256d (line 371) | __m256d load(const int *mem, Flags f, LoadTag<__m256d, double>)
function __m256d (line 376) | __m256d load(const ushort *mem, Flags f, LoadTag<__m256d, double>)
function __m256d (line 381) | __m256d load(const short *mem, Flags f, LoadTag<__m256d, double>)
function __m256d (line 386) | __m256d load(const uchar *mem, Flags f, LoadTag<__m256d, double>)
function __m256d (line 391) | __m256d load(const schar *mem, Flags f, LoadTag<__m256d, double>)
function __m256 (line 398) | __m256 load(const double *mem, Flags f, LoadTag<__m256, float>)
function __m256 (line 404) | __m256 load(const uint *mem, Flags f, LoadTag<__m256, float>)
function __m256 (line 414) | __m256 load(const int *mem, Flags f, LoadTag<__m256, float>)
function __m256 (line 420) | __m256 load(const T *mem, Flags f, LoadTag<__m256, float>)
function __m256 (line 425) | __m256 load(const ushort *mem, Flags f, LoadTag<__m256, float>)
function __m256 (line 430) | __m256 load(const short *mem, Flags f, LoadTag<__m256, float>)
function Vc_CONST (line 481) | Vc_CONST R mask_cast(__m256i k)
function Vc_INTRINSIC (line 859) | Vc_INTRINSIC __m256d fma(__m256d a, __m256d b, __m256d c, double)
function Vc_INTRINSIC (line 896) | Vc_INTRINSIC __m256i shiftRight(__m256i a, int shift, int) { return A...
function Vc_INTRINSIC (line 897) | Vc_INTRINSIC __m256i shiftRight(__m256i a, int shift, uint) { return A...
function Vc_INTRINSIC (line 898) | Vc_INTRINSIC __m256i shiftRight(__m256i a, int shift, short) { return A...
function Vc_INTRINSIC (line 899) | Vc_INTRINSIC __m256i shiftRight(__m256i a, int shift, ushort) { return A...
function Vc_INTRINSIC (line 911) | Vc_INTRINSIC __m256i shiftLeft(__m256i a, int shift, int) { return AV...
function Vc_INTRINSIC (line 912) | Vc_INTRINSIC __m256i shiftLeft(__m256i a, int shift, uint) { return AV...
function Vc_INTRINSIC (line 913) | Vc_INTRINSIC __m256i shiftLeft(__m256i a, int shift, short) { return AV...
function Vc_INTRINSIC (line 914) | Vc_INTRINSIC __m256i shiftLeft(__m256i a, int shift, ushort) { return AV...
function Vc_INTRINSIC (line 919) | Vc_INTRINSIC __m256 zeroExtendIfNeeded(__m256 x) { return x; }
function Vc_INTRINSIC (line 920) | Vc_INTRINSIC __m256d zeroExtendIfNeeded(__m256d x) { return x; }
function Vc_INTRINSIC (line 921) | Vc_INTRINSIC __m256i zeroExtendIfNeeded(__m256i x) { return x; }
function Vc_INTRINSIC (line 922) | Vc_INTRINSIC __m256 zeroExtendIfNeeded(__m128 x) { return AVX::zeroExt...
function Vc_INTRINSIC (line 923) | Vc_INTRINSIC __m256d zeroExtendIfNeeded(__m128d x) { return AVX::zeroExt...
function Vc_INTRINSIC (line 924) | Vc_INTRINSIC __m256i zeroExtendIfNeeded(__m128i x) { return AVX::zeroExt...
function Vc_INTRINSIC (line 927) | Vc_INTRINSIC __m256 avx_broadcast( float x) { return _mm256_set1_ps(x); }
function Vc_INTRINSIC (line 928) | Vc_INTRINSIC __m256d avx_broadcast(double x) { return _mm256_set1_pd(x); }
function Vc_INTRINSIC (line 929) | Vc_INTRINSIC __m256i avx_broadcast( int x) { return _mm256_set1_epi32(...
function Vc_INTRINSIC (line 930) | Vc_INTRINSIC __m256i avx_broadcast( uint x) { return _mm256_set1_epi32(...
function Vc_INTRINSIC (line 931) | Vc_INTRINSIC __m256i avx_broadcast( short x) { return _mm256_set1_epi16(...
function Vc_INTRINSIC (line 932) | Vc_INTRINSIC __m256i avx_broadcast(ushort x) { return _mm256_set1_epi16(...
function Vc_INTRINSIC (line 933) | Vc_INTRINSIC __m256i avx_broadcast( char x) { return _mm256_set1_epi8(x...
function Vc_INTRINSIC (line 934) | Vc_INTRINSIC __m256i avx_broadcast( schar x) { return _mm256_set1_epi8(x...
function Vc_INTRINSIC (line 935) | Vc_INTRINSIC __m256i avx_broadcast( uchar x) { return _mm256_set1_epi8(x...
function testc (line 1175) | int testc(__m128 a, __m128 b) { return _mm_testc_si128(_mm_castps_si12...
function testc (line 1176) | int testc(__m256 a, __m256 b) { return _mm256_testc_ps(a, b); }
function testc (line 1177) | int testc(__m256d a, __m256d b) { return _mm256_testc_pd(a, b); }
function testc (line 1178) | int testc(__m256i a, __m256i b) { return _mm256_testc_si256(a, b); }
function testz (line 1181) | int testz(__m128 a, __m128 b) { return _mm_testz_si128(_mm_castps_si12...
function testz (line 1182) | int testz(__m256 a, __m256 b) { return _mm256_testz_ps(a, b); }
function testz (line 1183) | int testz(__m256d a, __m256d b) { return _mm256_testz_pd(a, b); }
function testz (line 1184) | int testz(__m256i a, __m256i b) { return _mm256_testz_si256(a, b); }
function testnzc (line 1187) | int testnzc(__m128 a, __m128 b) { return _mm_testnzc_si128(_mm_castps_si...
function testnzc (line 1188) | int testnzc(__m256 a, __m256 b) { return _mm256_testnzc_ps(a, b); }
function testnzc (line 1189) | int testnzc(__m256d a, __m256d b) { return _mm256_testnzc_pd(a, b); }
function testnzc (line 1190) | int testnzc(__m256i a, __m256i b) { return _mm256_testnzc_si256(a, b); }
function movemask (line 1193) | int movemask(__m256i a) { return AVX::movemask_epi8(a); }
function movemask (line 1194) | int movemask(__m128i a) { return _mm_movemask_epi8(a); }
function movemask (line 1195) | int movemask(__m256d a) { return _mm256_movemask_pd(a); }
function movemask (line 1196) | int movemask(__m128d a) { return _mm_movemask_pd(a); }
function movemask (line 1197) | int movemask(__m256 a) { return _mm256_movemask_ps(a); }
function movemask (line 1198) | int movemask(__m128 a) { return _mm_movemask_ps(a); }
function interleave (line 1362) | void interleave(typename V::EntryType *const data, const I &i,/*{{{*/
function interleave (line 1368) | void interleave(typename V::EntryType *const data, const I &i,/*{{{*/
function interleave (line 1394) | static inline void interleave(typename V::EntryType *const data, const C...
function interleave (line 1414) | void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1423) | void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1432) | void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1442) | void interleave(typename V::EntryType *const data, const I &i,
function deinterleave (line 1452) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1477) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1507) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1538) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1581) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1625) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1672) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function interleave (line 1723) | inline void interleave(typename V::EntryType *const data, const I &i,/*{...
function interleave (line 1740) | static inline void interleave(typename V::EntryType *const data, const C...
function interleave (line 1755) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1788) | static inline void interleave(typename V::EntryType *const data,
function interleave (line 1824) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1852) | static inline void interleave(typename V::EntryType *const data,
function interleave (line 1880) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1889) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1898) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1908) | inline void interleave(typename V::EntryType *const data, const I &i,
function deinterleave (line 1920) | inline void deinterleave(typename V::EntryType const *const data, const ...
function deinterleave (line 1943) | static inline void deinterleave(typename V::EntryType const *const data,
function deinterleave (line 1961) | inline void deinterleave(typename V::EntryType const *const data, const ...
function deinterleave (line 1987) | static inline void deinterleave(typename V::EntryType const *const data,
function deinterleave (line 2027) | inline void deinterleave(typename V::EntryType const *const data, const ...
function deinterleave (line 2054) | static inline void deinterleave(typename V::EntryType const *const data,
function deinterleave (line 2081) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 2087) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 2093) | static inline void deinterleave(typename V::EntryType const *const data,...
function deinterleave (line 2122) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 2128) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function interleave (line 2137) | void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 2149) | void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 2176) | void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 2206) | void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 2215) | void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 2224) | void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 2234) | void interleave(typename V::EntryType *const data, const I &i,
function deinterleave (line 2244) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 2254) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 2260) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 2266) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 2273) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 2280) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 2288) | void deinterleave(typename V::EntryType const *const data,/*{{{*/
FILE: 3rdparty/Vc/Vc/avx/helperimpl.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/avx/intrinsics.h
function namespace (line 73) | namespace Vc_VERSIONED_NAMESPACE
function Vc_INTRINSIC (line 553) | Vc_INTRINSIC void stream_store(float *mem, __m128 value, __m128 mask)
function Vc_INTRINSIC (line 557) | Vc_INTRINSIC void stream_store(float *mem, __m256 value, __m256 mask)
function Vc_INTRINSIC (line 562) | Vc_INTRINSIC void stream_store(double *mem, __m128d value, __m128d mask)
function Vc_INTRINSIC (line 566) | Vc_INTRINSIC void stream_store(double *mem, __m256d value, __m256d mask)
function Vc_INTRINSIC (line 571) | Vc_INTRINSIC void stream_store(void *mem, __m128i value, __m128i mask)
function Vc_INTRINSIC (line 575) | Vc_INTRINSIC void stream_store(void *mem, __m256i value, __m256i mask)
function __m128i (line 582) | __m128i _mm_cvtsi64_si128(int64_t x) {
function namespace (line 628) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/avx/limits.h
function namespace (line 35) | namespace std
FILE: 3rdparty/Vc/Vc/avx/mask.h
function namespace (line 40) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/avx/math.h
function namespace (line 35) | namespace Vc_VERSIONED_NAMESPACE
function lo (line 163) | auto lo = AVX::avx_cast<__m128i>(AVX::lo128(exponentPart));
function namespace (line 215) | namespace Detail
function AVX2 (line 230) | inline AVX2::float_v frexp(AVX2::float_v::AsArg v, SimdArray<int, 8> *e)
function AVX2 (line 248) | inline AVX2::double_v ldexp(AVX2::double_v::AsArg v, const SimdArray<int...
function Vc_ALWAYS_INLINE (line 278) | Vc_ALWAYS_INLINE AVX2::float_v trunc(AVX2::float_v::AsArg v)
function Vc_ALWAYS_INLINE (line 282) | Vc_ALWAYS_INLINE AVX2::double_v trunc(AVX2::double_v::AsArg v)
function Vc_ALWAYS_INLINE (line 288) | Vc_ALWAYS_INLINE AVX2::float_v floor(AVX2::float_v::AsArg v)
function Vc_ALWAYS_INLINE (line 292) | Vc_ALWAYS_INLINE AVX2::double_v floor(AVX2::double_v::AsArg v)
function Vc_ALWAYS_INLINE (line 298) | Vc_ALWAYS_INLINE AVX2::float_v ceil(AVX2::float_v::AsArg v)
function Vc_ALWAYS_INLINE (line 302) | Vc_ALWAYS_INLINE AVX2::double_v ceil(AVX2::double_v::AsArg v)
FILE: 3rdparty/Vc/Vc/avx/shuffle.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 250) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/avx/simd_cast.h
function namespace (line 36) | namespace Vc_VERSIONED_NAMESPACE
function Vc_CONST (line 1613) | Vc_CONST Return
function Vc_CONST (line 1620) | Vc_CONST Return
function Vc_CONST (line 1628) | Vc_CONST Return
function Vc_CONST (line 1635) | Vc_CONST Return
function Vc_CONST (line 1642) | Vc_CONST Return
function Vc_CONST (line 1649) | Vc_CONST Return
function Vc_CONST (line 1659) | Vc_CONST Return
function Vc_CONST (line 1666) | Vc_CONST Return
function Vc_CONST (line 1674) | Vc_CONST Return
function Vc_CONST (line 1681) | Vc_CONST Return
function Vc_CONST (line 1688) | Vc_CONST Return
function Vc_CONST (line 1695) | Vc_CONST Return
function Vc_CONST (line 1705) | Vc_CONST Return
function Vc_CONST (line 1712) | Vc_CONST Return
function Vc_CONST (line 1720) | Vc_CONST Return
function Vc_CONST (line 1727) | Vc_CONST Return
function Vc_CONST (line 1735) | Vc_CONST Return
function Vc_CONST (line 1742) | Vc_CONST Return
function Vc_CONST (line 1752) | Vc_CONST Return
function Vc_CONST (line 1760) | Vc_CONST Return
function Vc_CONST (line 1769) | Vc_CONST Return
function Vc_CONST (line 1777) | Vc_CONST Return
function Vc_CONST (line 1786) | Vc_CONST Return
function Vc_CONST (line 1794) | Vc_CONST Return
function Vc_CONST (line 1805) | Vc_CONST Return
function Vc_CONST (line 1814) | Vc_CONST Return
function Vc_CONST (line 1822) | Vc_CONST Return
function Vc_CONST (line 1831) | Vc_CONST Return
function Vc_CONST (line 1839) | Vc_CONST Return
function Vc_CONST (line 1850) | Vc_CONST Return
function Vc_CONST (line 1860) | Vc_CONST Return
function Vc_CONST (line 1869) | Vc_CONST Return
function Vc_CONST (line 1878) | Vc_CONST Return
function Vc_CONST (line 1887) | Vc_CONST Return
function Vc_CONST (line 1899) | Vc_CONST Return
function Vc_CONST (line 1910) | Vc_CONST Return
function Vc_CONST (line 1920) | Vc_CONST Return
function Vc_CONST (line 1931) | Vc_CONST Return
function Vc_CONST (line 1941) | Vc_CONST Return
function Vc_CONST (line 1954) | Vc_CONST Return
function Vc_CONST (line 1965) | Vc_CONST Return
function Vc_CONST (line 1975) | Vc_CONST Return
function Vc_CONST (line 1986) | Vc_CONST Return
function Vc_CONST (line 1996) | Vc_CONST Return
function Vc_CONST (line 2010) | Vc_CONST Return
function Vc_CONST (line 2021) | Vc_CONST Return
function Vc_CONST (line 2036) | Vc_CONST Return
function Vc_CONST (line 2047) | Vc_CONST Return
function Vc_CONST (line 2062) | Vc_CONST Return
function Vc_CONST (line 2074) | Vc_CONST Return
function Vc_CONST (line 2090) | Vc_CONST Return
function Vc_CONST (line 2102) | Vc_CONST Return
function Vc_CONST (line 2118) | Vc_CONST Return
function Vc_CONST (line 2130) | Vc_CONST Return
function Vc_CONST (line 2146) | Vc_CONST Return
function Vc_CONST (line 2159) | Vc_CONST Return
function Vc_CONST (line 2176) | Vc_CONST Return
function Vc_CONST (line 2190) | Vc_CONST Return
function Vc_CONST (line 2208) | Vc_CONST Return
function Vc_CONST (line 2222) | Vc_CONST Return
function Vc_CONST (line 2239) | Vc_CONST To
function Vc_CONST (line 2248) | Vc_CONST Return
function Vc_CONST (line 2388) | Vc_CONST Return
function Vc_CONST (line 2522) | Vc_CONST To
function Vc_CONST (line 2545) | Vc_CONST Return
FILE: 3rdparty/Vc/Vc/avx/types.h
function namespace (line 51) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/avx/vector.h
function namespace (line 51) | namespace Vc_VERSIONED_NAMESPACE
function Vc_INTRINSIC (line 320) | Vc_INTRINSIC static value_type get(const Vector &o, int i) noexcept
function Vc_ALWAYS_INLINE (line 343) | Vc_ALWAYS_INLINE value_type operator[](size_t index) const noexcept
function Vc_ALWAYS_INLINE (line 406) | Vc_ALWAYS_INLINE WriteMaskedVector operator()(const Mask &k)
function Vc_ALWAYS_INLINE (line 411) | Vc_ALWAYS_INLINE VectorType &data() { return d.v(); }
function Vc_ALWAYS_INLINE (line 420) | Vc_ALWAYS_INLINE EntryType min() const { return Detail::min(data(), T()); }
function Vc_ALWAYS_INLINE (line 422) | Vc_ALWAYS_INLINE EntryType product() const { return Detail::mul(data(), ...
function Vc_ALWAYS_INLINE_L (line 424) | Vc_ALWAYS_INLINE_L Vector partialSum() const Vc_ALWAYS_INLINE_R;
FILE: 3rdparty/Vc/Vc/avx/vectorhelper.h
function namespace (line 38) | namespace Vc_VERSIONED_NAMESPACE
function __m256d (line 56) | struct VectorHelper<__m256d>
function __m256i (line 70) | struct VectorHelper<__m256i>
function double (line 93) | struct VectorHelper<double> {
function float (line 174) | struct VectorHelper<float> {
FILE: 3rdparty/Vc/Vc/common/algorithms.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/aliasingentryhelper.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/alignedbase.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/bitscanintrinsics.h
function _Vc_bit_scan_reverse_asm (line 36) | int _Vc_bit_scan_reverse_asm(unsigned int x) {
function _bit_scan_forward (line 45) | static inline __forceinline unsigned long _bit_scan_forward(unsigned lon...
function _bit_scan_reverse (line 50) | static inline __forceinline unsigned long _bit_scan_reverse(unsigned lon...
FILE: 3rdparty/Vc/Vc/common/data.h
function namespace (line 32) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/deinterleave.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/detail.h
function namespace (line 35) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/elementreference.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/exponential.h
type typename (line 56) | typedef typename V::Mask M;
type Detail (line 57) | typedef Detail::Const<float, Abi> C;
FILE: 3rdparty/Vc/Vc/common/gatherimplementation.h
function namespace (line 35) | namespace Common
FILE: 3rdparty/Vc/Vc/common/gatherinterface.h
function Vc_CURRENT_CLASS_NAME (line 149) | int Scale>
function Vc_CURRENT_CLASS_NAME (line 167) | int Scale>
function gather (line 178) | void gather(const MT *mem, const IT &indexes)
function gather (line 188) | void gather(const MT *mem, const IT &indexes, MaskArgument mask)
function gather (line 205) | int Scale>
function gather (line 212) | int Scale>
FILE: 3rdparty/Vc/Vc/common/gatherinterface_deprecated.h
function gather (line 169) | void gather(const S1 *array,
function gather (line 192) | void gather(const S1 *array,
function gather (line 219) | void gather(const S1 *array, const S2 S1::*member1,
function gather (line 244) | void gather(const S1 *array, const S2 S1::*member1,
function gather (line 267) | void gather(const S1 *array,
function gather (line 290) | void gather(const S1 *array,
FILE: 3rdparty/Vc/Vc/common/generalinterface.h
function size (line 38) | static constexpr std::size_t size() { return Size; }
function Vector (line 45) | Vector Zero() { return Vector(Vc::Zero); }
function Vector (line 46) | Vector One() { return Vector(Vc::One); }
function Vector (line 47) | Vector IndexesFromZero()
FILE: 3rdparty/Vc/Vc/common/iif.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/indexsequence.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/interleave.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/interleavedmemory.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
type typename (line 179) | typedef typename std::conditional<std::is_const<S>::value,
type typename (line 182) | typedef typename V::IndexType I;
type typename (line 183) | typedef typename V::AsArg VArg;
type I (line 184) | typedef const I &IndexType;
type T (line 195) | typedef T Ta Vc_MAY_ALIAS;
function Vc_ALWAYS_INLINE (line 275) | Vc_ALWAYS_INLINE ReadAccess operator[](IndexType indexes) const
function Vc_ALWAYS_INLINE (line 281) | Vc_ALWAYS_INLINE ReadAccess gather(IndexType indexes) const { return ope...
function Vc_ALWAYS_INLINE (line 316) | Vc_ALWAYS_INLINE ReadSuccessiveEntries operator[](size_t first) const
function Vc_ALWAYS_INLINE (line 321) | Vc_ALWAYS_INLINE AccessSuccessiveEntries operator[](size_t first)
FILE: 3rdparty/Vc/Vc/common/iterators.h
function namespace (line 40) | namespace Vc_VERSIONED_NAMESPACE
function class (line 151) | class BitmaskIterator/*{{{*/
function BitmaskIterator (line 237) | BitmaskIterator begin(const WhereImpl::WhereMask<M> &w)
function BitmaskIterator (line 242) | BitmaskIterator end(const WhereImpl::WhereMask<M> &)
FILE: 3rdparty/Vc/Vc/common/loadinterface.h
function explicit (line 36) | explicit Vc_INTRINSIC Vector(const EntryType *mem)
function Vc_INTRINSIC (line 72) | Vc_INTRINSIC void load(const EntryType *mem)
FILE: 3rdparty/Vc/Vc/common/loadstoreflags.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
type LoadStoreFlags (line 156) | typedef LoadStoreFlags::LoadStoreFlags<> AlignedTag;
type LoadStoreFlags (line 157) | typedef LoadStoreFlags::LoadStoreFlags<LoadStoreFlags::StreamingFlag> St...
type LoadStoreFlags (line 158) | typedef LoadStoreFlags::LoadStoreFlags<LoadStoreFlags::UnalignedFlag> Un...
type UnalignedTag (line 161) | typedef UnalignedTag DefaultLoadTag;
type UnalignedTag (line 163) | typedef UnalignedTag DefaultStoreTag;
function namespace (line 227) | namespace Traits
FILE: 3rdparty/Vc/Vc/common/logarithm.h
type LogarithmBase (line 58) | enum LogarithmBase {
function namespace (line 62) | namespace Detail
FILE: 3rdparty/Vc/Vc/common/macros.h
function namespace (line 146) | namespace Vc_VERSIONED_NAMESPACE {
function Vc_ALWAYS_INLINE (line 192) | Vc_ALWAYS_INLINE void *operator new(size_t, void *p) { return p; }
function Vc_ALWAYS_INLINE (line 194) | Vc_ALWAYS_INLINE void *operator new[](size_t size) ...
function Vc_ALWAYS_INLINE (line 199) | Vc_ALWAYS_INLINE void *operator new[](size_t, void *p) { return p; }
function operator (line 201) | operator delete(void *ptr, size_t) { Vc::Common::free(ptr); }
function operator (line 203) | operator delete(void *, void *) {}
function operator (line 205) | operator delete[](void *ptr, size_t) \
function operator (line 210) | operator delete[](void *, void *) {}
FILE: 3rdparty/Vc/Vc/common/makeContainer.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
function decltype (line 137) | auto makeContainer(std::initializer_list<T> list) -> decltype(make_conta...
function decltype (line 143) | auto make_container(std::initializer_list<T> list) -> decltype(makeConta...
FILE: 3rdparty/Vc/Vc/common/make_unique.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/malloc.h
function namespace (line 43) | namespace Vc_VERSIONED_NAMESPACE
function T (line 136) | T *malloc(size_t n)
function free (line 163) | void free(T *p)
FILE: 3rdparty/Vc/Vc/common/mask.h
function Vc_ALWAYS_INLINE (line 311) | Vc_ALWAYS_INLINE bool isFull() const;
function all_of (line 401) | constexpr bool all_of(bool b) { return b; }
function any_of (line 406) | bool any_of(const Mask &m) { return m.isNotEmpty(); }
function any_of (line 410) | constexpr bool any_of(bool b) { return b; }
function none_of (line 415) | bool none_of(const Mask &m) { return m.isEmpty(); }
function none_of (line 419) | constexpr bool none_of(bool b) { return !b; }
function some_of (line 425) | bool some_of(const Mask &m) { return m.isMix(); }
function some_of (line 429) | constexpr bool some_of(bool) { return false; }
FILE: 3rdparty/Vc/Vc/common/maskbool.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/math.h
function namespace (line 38) | namespace Vc_VERSIONED_NAMESPACE
function AVX (line 57) | inline AVX::double_v exp(AVX::double_v _x)
function SSE (line 98) | inline SSE::double_v exp(SSE::double_v::AsArg _x) {
FILE: 3rdparty/Vc/Vc/common/memory.h
function namespace (line 41) | namespace Vc_VERSIONED_NAMESPACE
type typename (line 367) | typedef typename V::EntryType EntryType;
type InternalConstants (line 372) | enum InternalConstants {
function calcPaddedEntriesCount (line 379) | size_t calcPaddedEntriesCount(size_t x)
function swap (line 447) | inline void swap(Memory &rhs) {
function Vc_ALWAYS_INLINE (line 510) | Vc_ALWAYS_INLINE void prefetchForOneRead(const void *addr)
function Vc_ALWAYS_INLINE (line 527) | Vc_ALWAYS_INLINE void prefetchForModify(const void *addr)
function Vc_ALWAYS_INLINE (line 542) | Vc_ALWAYS_INLINE void prefetchClose(const void *addr)
function Vc_ALWAYS_INLINE (line 557) | Vc_ALWAYS_INLINE void prefetchMid(const void *addr)
function Vc_ALWAYS_INLINE (line 572) | Vc_ALWAYS_INLINE void prefetchFar(const void *addr)
function namespace (line 586) | namespace std
FILE: 3rdparty/Vc/Vc/common/memorybase.h
function namespace (line 36) | namespace Vc_VERSIONED_NAMESPACE
function Vc_ALWAYS_INLINE (line 282) | Vc_ALWAYS_INLINE EntryType &operator[](size_t i) { return entries()[i]; }
function Vc_ALWAYS_INLINE (line 284) | Vc_ALWAYS_INLINE const EntryType &operator[](size_t i) const { return en...
function Vc_PURE (line 297) | Vc_PURE V operator[](Vector<IndexT> i) const
function Parent (line 305) | Parent *p() { return static_cast<Parent *>(this); }
function Parent (line 306) | const Parent *p() const { return static_cast<const Parent *>(this); }
function rowCount (line 313) | static constexpr size_t rowCount() { return Parent::RowCount; }
function EntryType (line 327) | const EntryType scalar(size_t i, size_t j) const { return entries(i)[j]; }
function RowMemory (line 336) | const RowMemory &operator[](size_t i) const {
function Parent (line 367) | const Parent *p() const { return static_cast<const Parent *>(this); }
function V (line 583) | V gather(const unsigned char *indexes) const { return V(entries(), type...
function V (line 584) | V gather(const unsigned short *indexes) const { return V(entries(), type...
function V (line 585) | V gather(const unsigned int *indexes) const { return V(entries(), type...
function V (line 586) | V gather(const unsigned long *indexes) const { return V(entries(), type...
function Vc_ALWAYS_INLINE (line 591) | Vc_ALWAYS_INLINE void setZero() {
function namespace (line 785) | namespace Detail
FILE: 3rdparty/Vc/Vc/common/memoryfwd.h
function namespace (line 31) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/operators.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
function bool (line 66) | struct my_make_signed<bool> {
FILE: 3rdparty/Vc/Vc/common/permutation.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/scatterimplementation.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/scatterinterface_deprecated.h
function scatter (line 18) | void scatter(S1 *array, EntryType S1::*member1,
function scatter (line 41) | void scatter(S1 *array, EntryType S1::*member1,
function scatter (line 66) | void scatter(S1 *array, S2 S1::*member1,
function scatter (line 92) | void scatter(S1 *array, S2 S1::*member1,
function scatter (line 115) | void scatter(S1 *array, EntryType *S1::*ptrMember1,
function scatter (line 138) | void scatter(S1 *array, EntryType *S1::*ptrMember1,
FILE: 3rdparty/Vc/Vc/common/set.h
function namespace (line 32) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/simd_cast.h
function namespace (line 38) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/simdarray.h
function namespace (line 47) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 86) | namespace internal
function size (line 141) | static constexpr std::size_t size() { return N; }
function Vc_INTRINSIC (line 162) | Vc_INTRINSIC SimdArray(const value_type &a) : data(a) {}
function Vc_INTRINSIC (line 163) | Vc_INTRINSIC SimdArray(value_type &a) : data(a) {}
function Vc_INTRINSIC (line 164) | Vc_INTRINSIC SimdArray(value_type &&a) : data(a) {}
function SimdArray (line 168) | SimdArray(U a)
function SimdArray (line 196) | size_t Index>
function Vc_INTRINSIC (line 202) | Vc_INTRINSIC SimdArray(const std::initializer_list<value_type> &init)
function data (line 212) | SimdArray(const V &x)
function set (line 379) | void set(SimdArray &o, int i, U &&v) noexcept(
function Vc_INTRINSIC (line 397) | Vc_INTRINSIC value_type operator[](size_t i) const noexcept
function Vc_INTRINSIC (line 407) | Vc_INTRINSIC void assign(const SimdArray &v, const mask_type &k)
function data (line 483) | SimdArray(const G &gen) : data(gen)
function Vc_INTRINSIC (line 501) | Vc_INTRINSIC SimdArray(private_init_t, VectorType &&x) : data(std::move(...
function T (line 534) | T unwrap(const T &x) { return x; }
function V (line 537) | V unwrap(const SimdArray<T, N, V, N> &x)
function decltype (line 543) | auto unwrap(const Common::Segment<T, Pieces, Index> &x)
type vectorentry_type (line 654) | typedef vectorentry_type alias_type
function size (line 675) | static constexpr std::size_t size() { return N; }
function Vc_INTRINSIC (line 755) | Vc_INTRINSIC SimdArray(value_type a) : data0(a), data1(a) {}
function Vc_INTRINSIC (line 807) | Vc_INTRINSIC SimdArray(const std::initializer_list<value_type> &init)
function explicit (line 818) | explicit Vc_INTRINSIC SimdArray(VectorSpecialInitializerOne o) : data0(o...
function explicit (line 819) | explicit Vc_INTRINSIC SimdArray(VectorSpecialInitializerIndexesFromZero i)
function Vc_INTRINSIC (line 1057) | Vc_INTRINSIC void assign(const SimdArray &v, const mask_type &k) //{{{2
function Vc_INTRINSIC (line 1084) | Vc_INTRINSIC value_type name_() const { return name_##_impl(); } ...
function Vc_INTRINSIC (line 1459) | Vc_INTRINSIC SimdArray(storage_type0 &&x, storage_type1 &&y) //{{{2
function namespace (line 1584) | namespace Detail
function namespace (line 1630) | namespace result_vector_type_internal
function sincos (line 1848) | void sincos(const SimdArray<T, N> &x, SimdArray<T, N> *sin, SimdArray<T,...
function debugDoNothing (line 2044) | void debugDoNothing(const std::initializer_list<void *> &) {}
function vc_debug_ (line 2046) | void vc_debug_(const char *prefix, const char *suffix, const T0 &arg0,
function transpose_impl (line 2629) | inline void transpose_impl(
function namespace (line 2683) | namespace Detail
function namespace (line 2734) | namespace std
FILE: 3rdparty/Vc/Vc/common/simdarrayfwd.h
function namespace (line 38) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/simdarrayhelper.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
function Vc_INTRINSIC (line 271) | static Vc_INTRINSIC auto loImpl(const SimdMaskArray<U, N, V, M> &x) -> d...
function Vc_INTRINSIC (line 276) | static Vc_INTRINSIC auto hiImpl(const SimdMaskArray<U, N, V, M> &x) -> d...
function Vc_INTRINSIC (line 297) | Vc_INTRINSIC SSE::Vector<T> loImpl(Vector<T, VectorAbi::Avx> &&x)
function Vc_INTRINSIC (line 302) | Vc_INTRINSIC SSE::Vector<T> hiImpl(Vector<T, VectorAbi::Avx> &&x)
function Vc_INTRINSIC (line 307) | Vc_INTRINSIC SSE::Mask<T> loImpl(Mask<T, VectorAbi::Avx> &&x)
function Vc_INTRINSIC (line 312) | Vc_INTRINSIC SSE::Mask<T> hiImpl(Mask<T, VectorAbi::Avx> &&x)
function is_vector_or_mask (line 318) | constexpr bool is_vector_or_mask(){
function T (line 335) | const T *loImpl(const std::vector<T, A> &x)
function T (line 340) | const T *hiImpl(const std::vector<T, A> &x)
function have_lo_impl (line 366) | constexpr bool have_lo_impl()
function have_hi_impl (line 374) | constexpr bool have_hi_impl()
function U (line 394) | const U *hi(Operations::gather, const U *ptr)
function Vc_ALWAYS_INLINE (line 399) | Vc_ALWAYS_INLINE decltype(loImpl(std::declval<U>()))
function Vc_ALWAYS_INLINE (line 405) | Vc_ALWAYS_INLINE decltype(hiImpl(std::declval<U>()))
function U (line 411) | const U *lo(Operations::scatter, const U *ptr)
function U (line 416) | const U *hi(Operations::scatter, const U *ptr)
function Vc_ALWAYS_INLINE (line 434) | Vc_ALWAYS_INLINE decltype(loImpl(std::declval<U>())) lo(U &&x)
function Vc_ALWAYS_INLINE (line 439) | Vc_ALWAYS_INLINE decltype(hiImpl(std::declval<U>())) hi(U &&x)
function Vc_INTRINSIC (line 459) | static Vc_INTRINSIC const V &actual_value(Op, const SimdArray<U, M, V, M...
function Arg (line 513) | Arg conditionalUnpack(std::false_type, Op, Arg &&arg)
function unpackArgumentsAuto (line 564) | void unpackArgumentsAuto(Op op, R &&r, Args &&... args)
FILE: 3rdparty/Vc/Vc/common/simdize.h
function namespace (line 122) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 689) | namespace preferred_construction_impl
function namespace (line 1317) | namespace SimdizeDetail
function namespace (line 1329) | namespace IteratorDetails // {{{
function pointer (line 1661) | pointer operator->() { return scalar_it; }
function reference (line 1669) | reference operator*() { return scalar_it; }
function const_pointer (line 1671) | const_pointer operator->() const { return scalar_it; }
function const_reference (line 1680) | const_reference operator*() const { return scalar_it; }
function reference (line 1812) | reference operator[](difference_type i) { return *(*this + i); }
function const_reference (line 1813) | const_reference operator[](difference_type i) const { return *(*this + i...
function namespace (line 1948) | namespace std // {{{
FILE: 3rdparty/Vc/Vc/common/simdmaskarray.h
function namespace (line 39) | namespace Vc_VERSIONED_NAMESPACE
function friend (line 338) | friend const storage_type0 &internal_data0(const SimdMaskArray &m) { ret...
function friend (line 339) | friend const storage_type1 &internal_data1(const SimdMaskArray &m) { ret...
function size (line 344) | static constexpr std::size_t size() { return N; }
function data1 (line 386) | data0(Split::lo(rhs)), data1(Split::hi(rhs))
function data1 (line 391) | size_t Index>
function load (line 480) | void load(const bool *mem, Flags f)
function Vc_INTRINSIC (line 491) | Vc_INTRINSIC void store(bool *mem) const
function store (line 503) | void store(bool *mem, Flags f) const
function reference (line 627) | reference operator[](size_t index) noexcept
function value_type (line 639) | value_type operator[](size_t index) const noexcept
function Vc_INTRINSIC (line 689) | Vc_INTRINSIC SimdMaskArray(storage_type0 &&x, storage_type1 &&y)
FILE: 3rdparty/Vc/Vc/common/span.h
function namespace (line 23) | namespace Vc_VERSIONED_NAMESPACE
function Vc_CONSTEXPR (line 283) | Vc_CONSTEXPR reference operator[](index_type _idx) const noexcept
function Vc_CONSTEXPR (line 289) | Vc_CONSTEXPR reference operator()(index_type _idx) const noexcept
function Vc_CONSTEXPR (line 298) | Vc_CONSTEXPR iterator begin() const noexcept { return iterator(data()); }
function Vc_CONSTEXPR (line 300) | Vc_CONSTEXPR const_iterator cbegin() const noexcept { return const_itera...
function Vc_CONSTEXPR (line 305) | Vc_CONSTEXPR reverse_iterator rbegin() const noexcept { return reverse_i...
function Vc_CONSTEXPR (line 307) | Vc_CONSTEXPR const_reverse_iterator crbegin() const noexcept
function noexcept (line 324) | const noexcept
function noexcept (line 329) | const noexcept
function Vc_CONSTEXPR (line 360) | Vc_CONSTEXPR span() noexcept : data_{nullptr}, size_{0} {}
function Vc_CONSTEXPR (line 366) | Vc_CONSTEXPR span(pointer _f, pointer _l) : data_{_f}, size_{distance(_f...
function noexcept (line 446) | const noexcept
function Vc_CONSTEXPR (line 476) | Vc_CONSTEXPR reference operator[](index_type _idx) const noexcept
function Vc_CONSTEXPR (line 482) | Vc_CONSTEXPR reference operator()(index_type _idx) const noexcept
function Vc_CONSTEXPR (line 491) | Vc_CONSTEXPR iterator begin() const noexcept { return iterator(data()); }
function Vc_CONSTEXPR (line 493) | Vc_CONSTEXPR const_iterator cbegin() const noexcept { return const_itera...
function Vc_CONSTEXPR (line 498) | Vc_CONSTEXPR reverse_iterator rbegin() const noexcept { return reverse_i...
function Vc_CONSTEXPR (line 500) | Vc_CONSTEXPR const_reverse_iterator crbegin() const noexcept
function noexcept (line 524) | const noexcept
function noexcept (line 529) | const noexcept
function namespace (line 641) | namespace Traits
FILE: 3rdparty/Vc/Vc/common/storage.h
function namespace (line 39) | namespace Vc_VERSIONED_NAMESPACE
function Vc_INTRINSIC (line 303) | Vc_INTRINSIC Storage() : data() { assertCorrectAlignment(&data); }
function Vc_INTRINSIC (line 328) | Vc_INTRINSIC void set(size_t i, EntryType x) { ref(i) = x; }
FILE: 3rdparty/Vc/Vc/common/storeinterface.h
function Vc_INTRINSIC (line 69) | Vc_INTRINSIC void store(EntryType *mem) const
function Vc_VDECL (line 80) | Vc_VDECL store(EntryType *mem, MaskType mask) const
FILE: 3rdparty/Vc/Vc/common/subscript.h
function namespace (line 38) | namespace Vc_VERSIONED_NAMESPACE
type IndexVectorSizeMatches (line 207) | struct IndexVectorSizeMatches
type IndexVectorSizeMatches (line 214) | struct IndexVectorSizeMatches
type IndexVectorSizeMatches (line 221) | struct IndexVectorSizeMatches
type IndexVectorSizeMatches (line 228) | struct IndexVectorSizeMatches
type IndexVectorSizeMatches (line 235) | struct IndexVectorSizeMatches
function Vc_ALWAYS_INLINE (line 262) | Vc_ALWAYS_INLINE SubscriptOperation(T *address, const U &indexes)
function Vc_ALWAYS_INLINE (line 268) | Vc_ALWAYS_INLINE SubscriptOperation(T *address, const IndexVector &indexes,
function operator (line 312) | operator V() &&
FILE: 3rdparty/Vc/Vc/common/transpose.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/trigonometric.h
function namespace (line 48) | namespace Detail
FILE: 3rdparty/Vc/Vc/common/types.h
function namespace (line 41) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/utility.h
function left_size (line 78) | constexpr std::size_t left_size()
function right_size (line 86) | constexpr std::size_t right_size()
FILE: 3rdparty/Vc/Vc/common/vector.h
function namespace (line 41) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/vector/casts.h
function explicit (line 62) | explicit Vector(std::initializer_list<EntryType>)
FILE: 3rdparty/Vc/Vc/common/vectorabi.h
function namespace (line 31) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 64) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/vectortraits.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/vectortuple.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
function Vc_ALWAYS_INLINE (line 113) | Vc_ALWAYS_INLINE Reference operator[](std::size_t i) { return *r[i]; }
FILE: 3rdparty/Vc/Vc/common/where.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
type _LValue (line 160) | typedef _LValue LValue;
type _Mask (line 189) | typedef _Mask Mask;
function mask (line 193) | constexpr WhereMask(const Mask &m) : mask(m) {}
function Vc_WARN_UNUSED_RESULT (line 265) | Vc_WARN_UNUSED_RESULT WhereImpl::WhereMask<M> where(const M &mask)
function Vc_WARN_UNUSED_RESULT (line 287) | Vc_WARN_UNUSED_RESULT WhereImpl::WhereMask<M> _if(const M &m)
FILE: 3rdparty/Vc/Vc/common/writemaskedvector.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/common/x86_prefetches.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/cpuid.h
function namespace (line 32) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/fwddecl.h
function namespace (line 35) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/global.h
type MallocAlignment (line 452) | enum MallocAlignment {
type Implementation (line 482) | enum Implementation
type ExtraInstructions (line 514) | enum ExtraInstructions
function Implementation (line 548) | static constexpr Implementation current()
function is (line 553) | static constexpr bool is(Implementation impl)
function is_between (line 561) | static constexpr bool is_between(Implementation low, Implementation high)
function runs_on (line 569) | static constexpr bool runs_on(unsigned int extraInstructions)
FILE: 3rdparty/Vc/Vc/scalar/detail.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/scalar/helperimpl.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/scalar/mask.h
function size (line 50) | static constexpr std::size_t size() { return 1; }
type EntryType (line 55) | typedef bool EntryType;
type VectorEntryType (line 65) | typedef bool VectorEntryType;
function Vc_INTRINSIC (line 78) | Vc_INTRINSIC explicit Mask(bool b) : m(b) {}
function Vc_INTRINSIC (line 81) | Vc_INTRINSIC static Mask Zero() { return Mask(false); }
function Vc_INTRINSIC (line 82) | Vc_INTRINSIC static Mask One() { return Mask(true); }
function Vc_ALWAYS_INLINE (line 99) | Vc_ALWAYS_INLINE explicit Mask(const bool *mem) : m(mem[0]) {}
function explicit (line 100) | explicit Mask(const bool *mem, Flags) : m(mem[0]) {}
function Vc_ALWAYS_INLINE (line 102) | Vc_ALWAYS_INLINE void load(const bool *mem) { m = mem[0]; }
function load (line 103) | void load(const bool *mem, Flags) { m = mem[0]; }
function Vc_ALWAYS_INLINE (line 105) | Vc_ALWAYS_INLINE void store(bool *mem) const { *mem = m; }
function store (line 106) | void store(bool *mem, Flags) const { *mem = m; }
function Vc_ALWAYS_INLINE (line 116) | Vc_ALWAYS_INLINE Mask operator!() const { return Mask(!m); }
function Vc_INTRINSIC (line 133) | static Vc_INTRINSIC bool get(const Mask &o, int) noexcept { return o.m; }
FILE: 3rdparty/Vc/Vc/scalar/math.h
function Vc_INTRINSIC (line 37) | Vc_INTRINSIC Scalar::float_v copysign(Scalar::float_v mag, Scalar::float...
function Vc_ALWAYS_INLINE (line 75) | Vc_ALWAYS_INLINE Scalar::Vector<T> sqrt (const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 80) | Vc_ALWAYS_INLINE Scalar::Vector<T> rsqrt(const Scalar::Vector<T> &x)
function Vc_PURE (line 88) | Vc_PURE Scalar::Vector<T> abs(Scalar::Vector<T> x)
function sincos (line 110) | void sincos(const Scalar::Vector<double> &x, Scalar::Vector<double> *sin...
function Vc_ALWAYS_INLINE (line 127) | Vc_ALWAYS_INLINE Scalar::Vector<T> sin (const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 132) | Vc_ALWAYS_INLINE Scalar::Vector<T> asin (const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 137) | Vc_ALWAYS_INLINE Scalar::Vector<T> cos (const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 142) | Vc_ALWAYS_INLINE Scalar::Vector<T> log (const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 147) | Vc_ALWAYS_INLINE Scalar::Vector<T> log10(const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 152) | Vc_ALWAYS_INLINE Scalar::Vector<T> log2(const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 157) | Vc_ALWAYS_INLINE Scalar::Vector<T> exp (const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 162) | Vc_ALWAYS_INLINE Scalar::Vector<T> atan (const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 167) | Vc_ALWAYS_INLINE Scalar::Vector<T> atan2(const Scalar::Vector<T> &x, con...
function Vc_ALWAYS_INLINE (line 172) | Vc_ALWAYS_INLINE Scalar::Vector<T> trunc(const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 177) | Vc_ALWAYS_INLINE Scalar::Vector<T> floor(const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 182) | Vc_ALWAYS_INLINE Scalar::Vector<T> ceil(const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 187) | Vc_ALWAYS_INLINE Scalar::Vector<T> round(const Scalar::Vector<T> &x)
function Vc_ALWAYS_INLINE (line 211) | Vc_ALWAYS_INLINE Scalar::Vector<T> reciprocal(const Scalar::Vector<T> &x)
function frexp (line 253) | float> frexp(Scalar::Vector<float> x, SimdArray<int, 1, Scalar::Vector<i...
function Vc_ALWAYS_INLINE (line 256) | Vc_ALWAYS_INLINE Scalar::Vector<double> frexp(Scalar::Vector<double> x, ...
function Vc_ALWAYS_INLINE (line 260) | Vc_ALWAYS_INLINE Scalar::Vector<float> ldexp(Scalar::Vector<float> x, co...
function Vc_ALWAYS_INLINE (line 263) | Vc_ALWAYS_INLINE Scalar::Vector<double> ldexp(Scalar::Vector<double> x, ...
FILE: 3rdparty/Vc/Vc/scalar/operators.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/scalar/simd_cast.h
function namespace (line 35) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/scalar/type_traits.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/scalar/types.h
function namespace (line 43) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/scalar/vector.h
function namespace (line 45) | namespace Vc_VERSIONED_NAMESPACE
function Vc_ALWAYS_INLINE (line 234) | Vc_ALWAYS_INLINE EntryType min(Mask) const { return m_data; }
function Vc_ALWAYS_INLINE (line 235) | Vc_ALWAYS_INLINE EntryType max(Mask) const { return m_data; }
function Vc_ALWAYS_INLINE (line 236) | Vc_ALWAYS_INLINE EntryType product(Mask m) const
function Vc_ALWAYS_INLINE (line 244) | Vc_ALWAYS_INLINE EntryType sum(Mask m) const { if (m.data()) return m_da...
function Vc_VDECL (line 246) | Vc_VDECL shifted(int amount, Vector shiftIn) const {
function Vc_INTRINSIC (line 250) | Vc_INTRINSIC Vector shifted(int amount) const { return amount == 0 ? *th...
function Vc_INTRINSIC (line 251) | Vc_INTRINSIC Vector rotated(int) const { return *this; }
function Vc_INTRINSIC (line 284) | Vc_INTRINSIC Vector generate(G gen)
function Vector (line 289) | Vector Vc_VDECL
function Vc_VDECL (line 300) | Vc_VDECL interleaveLow(Vector) const { return *this; }
function Vc_VDECL (line 301) | Vc_VDECL interleaveHigh(Vector x) const { return x; }
FILE: 3rdparty/Vc/Vc/sse/casts.h
function namespace (line 35) | namespace Vc_VERSIONED_NAMESPACE
function Vc_INTRINSIC (line 67) | Vc_INTRINSIC __m128i convert(__m128 v, ConvertTag<float , int >) { re...
function Vc_INTRINSIC (line 68) | Vc_INTRINSIC __m128i convert(__m128d v, ConvertTag<double, int >) { re...
function Vc_INTRINSIC (line 69) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<int , int >) { re...
function Vc_INTRINSIC (line 70) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<uint , int >) { re...
function Vc_INTRINSIC (line 71) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<short , int >) {
function Vc_INTRINSIC (line 78) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<ushort, int >) {
function Vc_INTRINSIC (line 85) | Vc_INTRINSIC __m128i convert(__m128 v, ConvertTag<float , uint >) {
function Vc_INTRINSIC (line 93) | Vc_INTRINSIC __m128i convert(__m128d v, ConvertTag<double, uint >) {
function Vc_INTRINSIC (line 104) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<int , uint >) { re...
function Vc_INTRINSIC (line 105) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<uint , uint >) { re...
function Vc_INTRINSIC (line 106) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<short , uint >) { re...
function Vc_INTRINSIC (line 107) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<ushort, uint >) { re...
function Vc_INTRINSIC (line 108) | Vc_INTRINSIC __m128 convert(__m128 v, ConvertTag<float , float >) { re...
function Vc_INTRINSIC (line 109) | Vc_INTRINSIC __m128 convert(__m128d v, ConvertTag<double, float >) { re...
function Vc_INTRINSIC (line 110) | Vc_INTRINSIC __m128 convert(__m128i v, ConvertTag<int , float >) { re...
function Vc_INTRINSIC (line 111) | Vc_INTRINSIC __m128 convert(__m128i v, ConvertTag<uint , float >) {
function Vc_INTRINSIC (line 121) | Vc_INTRINSIC __m128 convert(__m128i v, ConvertTag<short , float >) { re...
function Vc_INTRINSIC (line 122) | Vc_INTRINSIC __m128 convert(__m128i v, ConvertTag<ushort, float >) { re...
function Vc_INTRINSIC (line 123) | Vc_INTRINSIC __m128d convert(__m128 v, ConvertTag<float , double>) { re...
function Vc_INTRINSIC (line 124) | Vc_INTRINSIC __m128d convert(__m128d v, ConvertTag<double, double>) { re...
function Vc_INTRINSIC (line 125) | Vc_INTRINSIC __m128d convert(__m128i v, ConvertTag<int , double>) { re...
function Vc_INTRINSIC (line 126) | Vc_INTRINSIC __m128d convert(__m128i v, ConvertTag<uint , double>) { re...
function Vc_INTRINSIC (line 127) | Vc_INTRINSIC __m128d convert(__m128i v, ConvertTag<short , double>) { re...
function Vc_INTRINSIC (line 128) | Vc_INTRINSIC __m128d convert(__m128i v, ConvertTag<ushort, double>) { re...
function Vc_INTRINSIC (line 129) | Vc_INTRINSIC __m128i convert(__m128 v, ConvertTag<float , short >) { re...
function Vc_INTRINSIC (line 130) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<int , short >) { re...
function Vc_INTRINSIC (line 131) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<uint , short >) { re...
function Vc_INTRINSIC (line 132) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<short , short >) { re...
function Vc_INTRINSIC (line 133) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<ushort, short >) { re...
function Vc_INTRINSIC (line 134) | Vc_INTRINSIC __m128i convert(__m128d v, ConvertTag<double, short >) { re...
function Vc_INTRINSIC (line 135) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<int , ushort>) {
function Vc_INTRINSIC (line 142) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<uint , ushort>) {
function Vc_INTRINSIC (line 149) | Vc_INTRINSIC __m128i convert(__m128 v, ConvertTag<float , ushort>) { re...
function Vc_INTRINSIC (line 150) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<short , ushort>) { re...
function Vc_INTRINSIC (line 151) | Vc_INTRINSIC __m128i convert(__m128i v, ConvertTag<ushort, ushort>) { re...
function Vc_INTRINSIC (line 152) | Vc_INTRINSIC __m128i convert(__m128d v, ConvertTag<double, ushort>) { re...
FILE: 3rdparty/Vc/Vc/sse/const.h
function namespace (line 37) | namespace SSE
FILE: 3rdparty/Vc/Vc/sse/const_data.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/sse/debug.h
function namespace (line 37) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/sse/detail.h
function namespace (line 39) | namespace Vc_VERSIONED_NAMESPACE
function Vc_CONST_L (line 464) | Vc_CONST_L V allone() Vc_INTRINSIC_R Vc_CONST_R;
function interleave (line 862) | static inline void interleave(typename V::EntryType *const data, const C...
function interleave (line 870) | inline void interleave(typename V::EntryType *const data, const I &i,/*{...
function interleave (line 900) | inline void interleave(typename V::EntryType *const data, const I &i,/*{...
function interleave (line 923) | static inline void interleave(typename V::EntryType *const data, const C...
function interleave (line 943) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 952) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 961) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 971) | inline void interleave(typename V::EntryType *const data, const I &i,
function deinterleave (line 981) | inline void deinterleave(typename V::EntryType const *const data, /*{{{*/
function deinterleave (line 1004) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1030) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1057) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1091) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1126) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1164) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function interleave (line 1205) | static inline void interleave(typename V::EntryType *const data, const C...
function interleave (line 1214) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1225) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1250) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1264) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1273) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1282) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1292) | inline void interleave(typename V::EntryType *const data, const I &i,
function deinterleave (line 1302) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1316) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1333) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1351) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1357) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1363) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1369) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function interleave (line 1378) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1387) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1395) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1403) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1412) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1421) | inline void interleave(typename V::EntryType *const data, const I &i,
function interleave (line 1431) | inline void interleave(typename V::EntryType *const data, const I &i,
function deinterleave (line 1441) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1450) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1456) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1462) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1469) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1476) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
function deinterleave (line 1484) | inline void deinterleave(typename V::EntryType const *const data,/*{{{*/
FILE: 3rdparty/Vc/Vc/sse/helperimpl.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/sse/intrinsics.h
function namespace (line 49) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 161) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 178) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 248) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 344) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 573) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 661) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/sse/limits.h
function namespace (line 35) | namespace std
FILE: 3rdparty/Vc/Vc/sse/mask.h
function namespace (line 38) | namespace Detail
type Common (line 65) | typedef Common::MaskBool<sizeof(T)> MaskBool;
type Common (line 67) | typedef Common::Storage<T, SSE::VectorTraits<T>::Size> Storage;
type MaskBool (line 87) | typedef MaskBool VectorEntryType;
function size (line 103) | static constexpr std::size_t size() { return Size; }
type Mask (line 107) | typedef const Mask &Argument;
type Mask (line 109) | typedef Mask Argument;
function Vc_INTRINSIC (line 116) | Vc_INTRINSIC Mask(const __m128 &x) : d(sse_cast<VectorType>(x)) {}
function Vc_INTRINSIC (line 117) | Vc_INTRINSIC Mask(const __m128d &x) : d(sse_cast<VectorType>(x)) {}
function Vc_INTRINSIC (line 118) | Vc_INTRINSIC Mask(const __m128i &x) : d(sse_cast<VectorType>(x)) {}
function Vc_INTRINSIC (line 121) | Vc_INTRINSIC explicit Mask(bool b) : Mask(b ? SSE::_mm_setallone_ps() : ...
function Vc_INTRINSIC (line 122) | Vc_INTRINSIC static Mask Zero() { return Mask{Vc::Zero}; }
function value_type (line 245) | value_type operator[](size_t index) const noexcept
FILE: 3rdparty/Vc/Vc/sse/math.h
function SSE (line 56) | inline SSE::double_v frexp(const SSE::double_v &v,
function SSE (line 74) | inline SSE::float_v frexp(const SSE::float_v &v, SimdArray<int, 4, SSE::...
function SSE (line 92) | inline SSE::double_v ldexp(SSE::double_v::AsArg v,
function SSE (line 100) | inline SSE::float_v ldexp(SSE::float_v::AsArg v,
function SSE (line 110) | inline SSE::double_v trunc(SSE::double_v::AsArg v) { return _mm_round_pd...
function SSE (line 111) | inline SSE::float_v trunc(SSE::float_v::AsArg v) { return _mm_round_ps(v...
function SSE (line 113) | inline SSE::double_v floor(SSE::double_v::AsArg v) { return _mm_floor_pd...
function SSE (line 114) | inline SSE::float_v floor(SSE::float_v::AsArg v) { return _mm_floor_ps(v...
function SSE (line 116) | inline SSE::double_v ceil(SSE::double_v::AsArg v) { return _mm_ceil_pd(v...
function SSE (line 117) | inline SSE::float_v ceil(SSE::float_v::AsArg v) { return _mm_ceil_ps(v.d...
function SSE (line 119) | inline SSE::Vector<float> trunc(SSE::Vector<float> x)
function SSE (line 130) | inline SSE::Vector<double> trunc(SSE::Vector<double> x)
FILE: 3rdparty/Vc/Vc/sse/shuffle.h
function namespace (line 34) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 147) | namespace Reg
FILE: 3rdparty/Vc/Vc/sse/simd_cast.h
function namespace (line 43) | namespace SSE
function namespace (line 313) | namespace SSE
function Vc_CONST (line 426) | Vc_CONST Return
function Vc_CONST (line 433) | Vc_CONST Return
function Vc_CONST (line 440) | Vc_CONST Return
function Vc_CONST (line 447) | Vc_CONST Return
function Vc_CONST (line 454) | Vc_CONST Return
function Vc_CONST (line 462) | Vc_CONST Return
function Vc_CONST (line 472) | Vc_CONST Return
function Vc_CONST (line 480) | Vc_CONST Return
function Vc_CONST (line 488) | Vc_CONST Return
function Vc_CONST (line 496) | Vc_CONST Return
function Vc_CONST (line 505) | Vc_CONST Return
function Vc_CONST (line 514) | Vc_CONST Return
function Vc_CONST (line 525) | Vc_CONST Return
function Vc_CONST (line 532) | Vc_CONST Return
function Vc_CONST (line 539) | Vc_CONST Return
function Vc_CONST (line 547) | Vc_CONST Return
function Vc_CONST (line 554) | Vc_CONST Return
function Vc_CONST (line 563) | Vc_CONST Return
function Vc_CONST (line 574) | Vc_CONST Return
function Vc_CONST (line 585) | Vc_CONST Return
function Vc_CONST (line 596) | Vc_CONST Return
function Vc_CONST (line 607) | Vc_CONST Return
function Vc_CONST (line 620) | Vc_CONST Return
function Vc_CONST (line 628) | Vc_CONST Return
function Vc_CONST (line 638) | Vc_CONST Return
function Vc_CONST (line 647) | Vc_CONST Return
function Vc_CONST (line 658) | Vc_CONST Return
function Vc_CONST (line 667) | Vc_CONST Return
function Vc_CONST (line 678) | Vc_CONST Return
function Vc_CONST (line 699) | Vc_CONST Return
function Vc_CONST (line 722) | Vc_CONST To
function Vc_CONST (line 739) | Vc_CONST Return simd_cast(
function Vc_CONST (line 747) | Vc_CONST Return simd_cast(
function Vc_CONST (line 757) | Vc_CONST Return simd_cast(
function Vc_CONST (line 770) | Vc_CONST Return
function Vc_CONST (line 779) | Vc_CONST Return
function Vc_CONST (line 789) | Vc_CONST Return simd_cast(Scalar::Mask<T> x0,
function Vc_CONST (line 806) | Vc_CONST Return simd_cast(Scalar::Mask<T> x0,
function Vc_CONST (line 834) | Vc_CONST To
function Vc_CONST (line 864) | Vc_CONST Return simd_cast(
function Vc_CONST (line 886) | Vc_CONST Return simd_cast(
FILE: 3rdparty/Vc/Vc/sse/type_traits.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/sse/types.h
function namespace (line 42) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/sse/vector.h
function namespace (line 53) | namespace Vc_VERSIONED_NAMESPACE
function Vc_INTRINSIC (line 261) | Vc_INTRINSIC static value_type get(const Vector &o, int i) noexcept
function Vc_ALWAYS_INLINE (line 284) | Vc_ALWAYS_INLINE value_type operator[](size_t index) const noexcept
function Vc_INTRINSIC (line 348) | Vc_INTRINSIC EntryType min() const { return HT::min(data()); }
function Vc_INTRINSIC (line 350) | Vc_INTRINSIC EntryType product() const { return HT::mul(data()); }
function Vc_INTRINSIC_L (line 352) | Vc_INTRINSIC_L Vector partialSum() const Vc_INTRINSIC_R;
FILE: 3rdparty/Vc/Vc/sse/vectorhelper.h
function namespace (line 37) | namespace Vc_VERSIONED_NAMESPACE
function store (line 60) | void store(float *mem, VectorType x, VectorType m) { _mm_maskmoveu_si128...
function __m128d (line 68) | struct VectorHelper<__m128d>
function store (line 82) | void store(double *mem, VectorType x, VectorType m) { _mm_maskmoveu_si12...
function __m128i (line 89) | struct VectorHelper<__m128i>
function store (line 103) | void store(T *mem, VectorType x, VectorType m) { _mm_maskmoveu_si128(x, ...
function double (line 131) | struct VectorHelper<double> {
function float (line 219) | struct VectorHelper<float> {
function int (line 301) | struct VectorHelper<int> {
function unsigned (line 366) | struct VectorHelper<unsigned int> {
function signed (line 445) | struct VectorHelper<signed short> {
type VectorHelper (line 512) | struct VectorHelper
type __m128i (line 513) | typedef __m128i VectorType;
type EntryType (line 514) | typedef unsigned short EntryType;
function Vc_OP_CAST_ (line 516) | Vc_OP_CAST_(or_) Vc_OP_CAST_(and_) Vc_OP_CAST_(xor_)
function VectorType (line 518) | VectorType notMaskedToZero(VectorType a, __m128 mask) { return Vc_CAT2(_...
function __m128i (line 520) | __m128i concat(__m128i a, __m128i b) { return _mm_packus_epi32(a, b); }
function __m128i (line 523) | __m128i concat(__m128i a, __m128i b) {
function __m128i (line 531) | __m128i expand0(__m128i x) { return _mm_unpacklo_epi16(x, _mm_setzero_si...
function __m128i (line 532) | __m128i expand1(__m128i x) { return _mm_unpackhi_epi16(x, _mm_setzero_si...
function VectorType (line 536) | VectorType one() { return Vc_CAT2(_mm_setone_, Vc_SUFFIX)(); }
function VectorType (line 557) | VectorType min(VectorType a, VectorType b) { return min_epu16(a, b); }
function VectorType (line 558) | VectorType max(VectorType a, VectorType b) { return max_epu16(a, b); }
function VectorType (line 562) | VectorType shiftLeft(VectorType a, int shift) {
function VectorType (line 565) | VectorType shiftRight(VectorType a, int shift) {
function Vc_OP (line 573) | Vc_OP(min) Vc_OP(max) // XXX breaks for values with MSB set
function EntryType (line 582) | EntryType max(VectorType a) {
function EntryType (line 589) | EntryType mul(VectorType a) {
function EntryType (line 596) | EntryType add(VectorType a) {
function VectorType (line 603) | VectorType set(const EntryType a) { return Vc_CAT2(_mm_set1_, Vc_SUFFIX)...
function VectorType (line 604) | VectorType set(const EntryType a, const EntryType b, const EntryType c,
function VectorType (line 612) | VectorType round(VectorType a) { return a; }
FILE: 3rdparty/Vc/Vc/support.h
function namespace (line 47) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/traits/decay.h
function namespace (line 31) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/traits/entry_type_of.h
function namespace (line 31) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/traits/has_addition_operator.h
function namespace (line 31) | namespace has_addition_operator_impl
FILE: 3rdparty/Vc/Vc/traits/has_contiguous_storage.h
function namespace (line 52) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/traits/has_equality_operator.h
function namespace (line 31) | namespace has_equality_operator_impl
FILE: 3rdparty/Vc/Vc/traits/has_multiply_operator.h
function namespace (line 31) | namespace has_multiply_operator_impl
FILE: 3rdparty/Vc/Vc/traits/has_no_allocated_data.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/traits/has_subscript_operator.h
function namespace (line 31) | namespace has_subscript_operator_impl
function decltype (line 40) | struct has_subscript_operator : public decltype(has_subscript_operator_i...
FILE: 3rdparty/Vc/Vc/traits/is_implicit_cast_allowed.h
function namespace (line 31) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/traits/is_index_sequence.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/traits/is_output_iterator.h
function namespace (line 33) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/traits/type_traits.h
function namespace (line 40) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/Vc/vector.h
function namespace (line 41) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 193) | namespace Vc_VERSIONED_NAMESPACE {
function namespace (line 248) | namespace std
FILE: 3rdparty/Vc/Vc/version.h
function namespace (line 67) | namespace Vc_VERSIONED_NAMESPACE
function namespace (line 94) | namespace Vc_VERSIONED_NAMESPACE
FILE: 3rdparty/Vc/src/avx_sorthelper.cpp
type Vc_VERSIONED_NAMESPACE (line 32) | namespace Vc_VERSIONED_NAMESPACE
type Detail (line 34) | namespace Detail
function Vc_CONST (line 38) | Vc_CONST AVX2::short_v sorted<CurrentImplementation::current()>(AVX2...
function Vc_CONST (line 145) | Vc_CONST AVX2::ushort_v sorted<CurrentImplementation::current()>(AVX...
function Vc_CONST (line 220) | Vc_CONST AVX2::int_v sorted<CurrentImplementation::current()>(AVX2::...
function Vc_CONST (line 266) | Vc_CONST AVX2::uint_v sorted<CurrentImplementation::current()>(AVX2:...
function Vc_CONST (line 312) | Vc_CONST AVX2::float_v sorted<CurrentImplementation::current()>(AVX2...
function Vc_CONST (line 387) | Vc_CONST AVX2::double_v sorted<CurrentImplementation::current()>(AVX...
FILE: 3rdparty/Vc/src/const.cpp
type Vc_VERSIONED_NAMESPACE (line 39) | namespace Vc_VERSIONED_NAMESPACE
type AVX (line 41) | namespace AVX
type Common (line 237) | namespace Common
function checkLibraryAbi (line 254) | void Vc_CDECL checkLibraryAbi(unsigned int compileTimeAbi, unsigned ...
type SSE (line 267) | namespace SSE
type Vc_VERSIONED_NAMESPACE (line 235) | namespace Vc_VERSIONED_NAMESPACE
type AVX (line 41) | namespace AVX
type Common (line 237) | namespace Common
function checkLibraryAbi (line 254) | void Vc_CDECL checkLibraryAbi(unsigned int compileTimeAbi, unsigned ...
type SSE (line 267) | namespace SSE
type Vc_VERSIONED_NAMESPACE (line 265) | namespace Vc_VERSIONED_NAMESPACE
type AVX (line 41) | namespace AVX
type Common (line 237) | namespace Common
function checkLibraryAbi (line 254) | void Vc_CDECL checkLibraryAbi(unsigned int compileTimeAbi, unsigned ...
type SSE (line 267) | namespace SSE
FILE: 3rdparty/Vc/src/cpuid.cpp
type Vc_VERSIONED_NAMESPACE (line 31) | namespace Vc_VERSIONED_NAMESPACE
function _Vc_cpuid (line 89) | static inline void _Vc_cpuid(int leaf, unsigned int &eax, unsigned int...
function CpuIdAmdAssociativityTable (line 112) | static unsigned int CpuIdAmdAssociativityTable(int bits)
type Vc_VERSIONED_NAMESPACE (line 66) | namespace Vc_VERSIONED_NAMESPACE
function _Vc_cpuid (line 89) | static inline void _Vc_cpuid(int leaf, unsigned int &eax, unsigned int...
function CpuIdAmdAssociativityTable (line 112) | static unsigned int CpuIdAmdAssociativityTable(int bits)
FILE: 3rdparty/Vc/src/sse_sorthelper.cpp
type Vc_VERSIONED_NAMESPACE (line 31) | namespace Vc_VERSIONED_NAMESPACE
type Detail (line 33) | namespace Detail
function Vc_CONST (line 36) | Vc_CONST SSE::short_v sorted<CurrentImplementation::current()>(SSE::...
function Vc_CONST (line 75) | Vc_CONST SSE::ushort_v sorted<CurrentImplementation::current()>(SSE:...
function Vc_CONST (line 113) | Vc_CONST SSE::int_v sorted<CurrentImplementation::current()>(SSE::in...
function Vc_CONST (line 148) | Vc_CONST SSE::uint_v sorted<CurrentImplementation::current()>(SSE::u...
function Vc_CONST (line 169) | Vc_CONST SSE::float_v sorted<CurrentImplementation::current()>(SSE::...
FILE: 3rdparty/Vc/src/support_dummy.cpp
type Vc_VERSIONED_NAMESPACE (line 31) | namespace Vc_VERSIONED_NAMESPACE
function isImplementationSupported (line 33) | bool isImplementationSupported(Implementation impl) { return impl == S...
function bestImplementationSupported (line 35) | Vc::Implementation bestImplementationSupported() { return Vc::ScalarIm...
function extraInstructionsSupported (line 37) | unsigned int extraInstructionsSupported() { return 0; }
FILE: 3rdparty/Vc/src/support_x86.cpp
type Vc_VERSIONED_NAMESPACE (line 42) | namespace Vc_VERSIONED_NAMESPACE
function Vc_TARGET_NO_SIMD (line 45) | Vc_TARGET_NO_SIMD
function Vc_TARGET_NO_SIMD (line 61) | Vc_TARGET_NO_SIMD
function Vc_TARGET_NO_SIMD (line 92) | Vc_TARGET_NO_SIMD
function extraInstructionsSupported (line 113) | Vc_TARGET_NO_SIMD
FILE: 3rdparty/Vc/src/trigonometric.cpp
type Vc_VERSIONED_NAMESPACE (line 36) | namespace Vc_VERSIONED_NAMESPACE
type Common (line 38) | namespace Common
function Vc_ALWAYS_INLINE (line 56) | static Vc_ALWAYS_INLINE Vector<float, Abi> cosSeries(const Vector<fl...
function Vc_ALWAYS_INLINE (line 69) | static Vc_ALWAYS_INLINE Vector<double, Abi> cosSeries(const Vector<d...
function Vc_ALWAYS_INLINE (line 84) | static Vc_ALWAYS_INLINE Vector<float, Abi> sinSeries(const Vector<fl...
function Vc_ALWAYS_INLINE (line 95) | static Vc_ALWAYS_INLINE Vector<double, Abi> sinSeries(const Vector<d...
type folded (line 130) | struct folded {
function Vc_ALWAYS_INLINE (line 135) | static Vc_ALWAYS_INLINE folded<float, Abi> foldInput(const Vector<fl...
function Vc_ALWAYS_INLINE (line 195) | static Vc_ALWAYS_INLINE folded<double, Abi> foldInput(const Vector<d...
FILE: 3rdparty/toluapp/include/tolua++.h
type lua_Object (line 48) | typedef int lua_Object;
type tolua_Error (line 53) | struct tolua_Error {
type tolua_Error (line 58) | typedef struct tolua_Error tolua_Error;
FILE: 3rdparty/toluapp/src/bin/tolua.c
function help (line 25) | static void help(void) {
function version (line 58) | static void version(void) {
function setfield (line 62) | static void setfield(lua_State *L, int table, const char *f, const char ...
function add_extra (line 68) | static void add_extra(lua_State *L, const char *value) {
function error (line 83) | static void error(char *o) {
function main (line 89) | int main(int argc, char *argv[]) {
FILE: 3rdparty/toluapp/src/bin/toluabind.c
function tolua_reg_types (line 18) | static void tolua_reg_types (lua_State* tolua_S)
function TOLUA_API (line 24) | TOLUA_API int tolua_tolua_open (lua_State* tolua_S)
function TOLUA_API (line 8069) | TOLUA_API int luaopen_tolua (lua_State* tolua_S) {
FILE: 3rdparty/toluapp/src/bin/toluabind_default.c
function tolua_reg_types (line 18) | static void tolua_reg_types (lua_State* tolua_S)
function TOLUA_API (line 23) | TOLUA_API int tolua_tolua_open (lua_State* tolua_S)
function TOLUA_API (line 8005) | TOLUA_API int luaopen_tolua (lua_State* tolua_S) {
FILE: 3rdparty/toluapp/src/lib/tolua_event.c
function storeatubox (line 23) | static void storeatubox (lua_State* L, int lo)
function module_index_event (line 67) | static int module_index_event (lua_State* L)
function module_newindex_event (line 107) | static int module_newindex_event (lua_State* L)
function class_index_event (line 145) | static int class_index_event (lua_State* L)
function class_newindex_event (line 254) | static int class_newindex_event (lua_State* L)
function class_call_event (line 312) | static int class_call_event(lua_State* L) {
function do_operator (line 329) | static int do_operator (lua_State* L, const char* op)
function class_add_event (line 354) | static int class_add_event (lua_State* L)
function class_sub_event (line 359) | static int class_sub_event (lua_State* L)
function class_mul_event (line 364) | static int class_mul_event (lua_State* L)
function class_div_event (line 369) | static int class_div_event (lua_State* L)
function class_lt_event (line 374) | static int class_lt_event (lua_State* L)
function class_le_event (line 379) | static int class_le_event (lua_State* L)
function class_eq_event (line 384) | static int class_eq_event (lua_State* L)
function TOLUA_API (line 433) | TOLUA_API int class_gc_event (lua_State* L)
function TOLUA_API (line 482) | TOLUA_API void tolua_moduleevents (lua_State* L)
function TOLUA_API (line 494) | TOLUA_API int tolua_ismodulemetatable (lua_State* L)
function TOLUA_API (line 510) | TOLUA_API void tolua_classevents (lua_State* L)
FILE: 3rdparty/toluapp/src/lib/tolua_is.c
function TOLUA_API (line 23) | TOLUA_API int tolua_fast_isa(lua_State *L, int mt_indexa, int mt_indexb,...
function TOLUA_API (line 51) | TOLUA_API const char *tolua_typename(lua_State *L, int lo)
function TOLUA_API (line 91) | TOLUA_API void tolua_error(lua_State *L, const char *msg, tolua_Error *err)
function lua_isusertable (line 122) | static int lua_isusertable(lua_State *L, int lo, const char *type)
function push_table_instance (line 145) | int push_table_instance(lua_State *L, int lo)
function lua_isusertype (line 175) | static int lua_isusertype(lua_State *L, int lo, const char *type)
function TOLUA_API (line 219) | TOLUA_API int tolua_isnoobj(lua_State *L, int lo, tolua_Error *err)
function TOLUA_API (line 229) | TOLUA_API int tolua_isboolean(lua_State *L, int lo, int def, tolua_Error...
function TOLUA_API (line 241) | TOLUA_API int tolua_isnumber(lua_State *L, int lo, int def, tolua_Error ...
function TOLUA_API (line 253) | TOLUA_API int tolua_isstring(lua_State *L, int lo, int def, tolua_Error ...
function TOLUA_API (line 265) | TOLUA_API int tolua_istable(lua_State *L, int lo, int def, tolua_Error *...
function TOLUA_API (line 277) | TOLUA_API int tolua_isusertable(lua_State *L, int lo, const char *type, ...
function TOLUA_API (line 289) | TOLUA_API int tolua_isuserdata(lua_State *L, int lo, int def, tolua_Erro...
function TOLUA_API (line 301) | TOLUA_API int tolua_isvaluenil(lua_State *L, int lo, tolua_Error *err)
function TOLUA_API (line 315) | TOLUA_API int tolua_isvalue(lua_State *L, int lo, int def, tolua_Error *...
function TOLUA_API (line 325) | TOLUA_API int tolua_isusertype(lua_State *L, int lo, const char *type, i...
function TOLUA_API (line 337) | TOLUA_API int tolua_isvaluearray(lua_State *L, int lo, int dim, int def,...
function TOLUA_API (line 346) | TOLUA_API int tolua_isbooleanarray(lua_State *L, int lo, int dim, int de...
function TOLUA_API (line 371) | TOLUA_API int tolua_isnumberarray(lua_State *L, int lo, int dim, int def...
function TOLUA_API (line 396) | TOLUA_API int tolua_isstringarray(lua_State *L, int lo, int dim, int def...
function TOLUA_API (line 421) | TOLUA_API int tolua_istablearray(lua_State *L, int lo, int dim, int def,...
function TOLUA_API (line 446) | TOLUA_API int tolua_isuserdataarray(lua_State *L, int lo, int dim, int d...
function TOLUA_API (line 471) | TOLUA_API int tolua_isusertypearray(lua_State *L, int lo, const char *ty...
function tolua_isbooleanfield (line 497) | int tolua_isbooleanfield
function tolua_isnumberfield (line 515) | int tolua_isnumberfield
function tolua_isstringfield (line 533) | int tolua_isstringfield
function tolua_istablefield (line 551) | int tolua_istablefield
function tolua_isusertablefield (line 568) | int tolua_isusertablefield
function tolua_isuserdatafield (line 586) | int tolua_isuserdatafield
function tolua_isusertypefield (line 604) | int tolua_isusertypefield
FILE: 3rdparty/toluapp/src/lib/tolua_map.c
function tolua_newmetatable (line 27) | static int tolua_newmetatable(lua_State *L, const char *name)
function mapsuper (line 49) | static void mapsuper(lua_State *L, const char *name, const char *base)
function set_ubox (line 91) | static void set_ubox(lua_State *L)
function mapinheritance (line 133) | static void mapinheritance(lua_State *L, const char *name, const char *b...
function tolua_bnd_type (line 159) | static int tolua_bnd_type(lua_State *L)
function tolua_bnd_takeownership (line 167) | static int tolua_bnd_takeownership(lua_State *L)
function tolua_bnd_releaseownership (line 191) | static int tolua_bnd_releaseownership(lua_State *L)
function tolua_bnd_cast (line 222) | static int tolua_bnd_cast(lua_State *L)
function tolua_bnd_inherit (line 256) | static int tolua_bnd_inherit(lua_State *L)
function tolua_bnd_setpeer (line 269) | static int tolua_bnd_setpeer(lua_State *L)
function tolua_bnd_getpeer (line 294) | static int tolua_bnd_getpeer(lua_State *L)
function TOLUA_API (line 314) | TOLUA_API void tolua_open(lua_State *L)
function TOLUA_API (line 390) | TOLUA_API void *tolua_copy(lua_State *L, void *value, unsigned int size)
function TOLUA_API (line 402) | TOLUA_API int tolua_default_collect(lua_State *tolua_S)
function TOLUA_API (line 411) | TOLUA_API int tolua_register_gc(lua_State *L, int lo)
function TOLUA_API (line 435) | TOLUA_API void tolua_usertype(lua_State *L, const char *type)
function TOLUA_API (line 448) | TOLUA_API void tolua_beginmodule(lua_State *L, const char *name)
function TOLUA_API (line 466) | TOLUA_API void tolua_endmodule(lua_State *L)
function TOLUA_API (line 475) | TOLUA_API void tolua_module(lua_State *L, const char *name, int hasvar)
function TOLUA_API (line 515) | TOLUA_API void tolua_module(lua_State *L, const char *name, int hasvar)
function push_collector (line 548) | static void push_collector(lua_State *L, const char *type, lua_CFunction...
function TOLUA_API (line 577) | TOLUA_API void tolua_cclass(lua_State *L, const char *lname, const char ...
function TOLUA_API (line 634) | TOLUA_API void tolua_function(lua_State *L, const char *name, lua_CFunct...
function TOLUA_API (line 657) | TOLUA_API void tolua_constant(lua_State *L, const char *name, lua_Number...
function TOLUA_API (line 667) | TOLUA_API void tolua_variable(lua_State *L, const char *name, lua_CFunct...
function const_array (line 710) | static int const_array(lua_State *L)
function TOLUA_API (line 719) | TOLUA_API void tolua_array(lua_State *L, const char *name, lua_CFunction...
function TOLUA_API (line 748) | TOLUA_API void tolua_dobuffer(lua_State *L, char *B, unsigned int size, ...
FILE: 3rdparty/toluapp/src/lib/tolua_push.c
function TOLUA_API (line 20) | TOLUA_API void tolua_pushvalue (lua_State* L, int lo)
function TOLUA_API (line 25) | TOLUA_API void tolua_pushboolean (lua_State* L, int value)
function TOLUA_API (line 30) | TOLUA_API void tolua_pushnumber (lua_State* L, lua_Number value)
function TOLUA_API (line 35) | TOLUA_API void tolua_pushstring (lua_State* L, const char* value)
function TOLUA_API (line 43) | TOLUA_API void tolua_pushuserdata (lua_State* L, void* value)
function TOLUA_API (line 51) | TOLUA_API void tolua_pushusertype (lua_State* L, void* value, const char...
function TOLUA_API (line 119) | TOLUA_API void tolua_pushusertype_and_takeownership (lua_State* L, void*...
function TOLUA_API (line 125) | TOLUA_API void tolua_pushfieldvalue (lua_State* L, int lo, int index, in...
function TOLUA_API (line 132) | TOLUA_API void tolua_pushfieldboolean (lua_State* L, int lo, int index, ...
function TOLUA_API (line 140) | TOLUA_API void tolua_pushfieldnumber (lua_State* L, int lo, int index, l...
function TOLUA_API (line 147) | TOLUA_API void tolua_pushfieldstring (lua_State* L, int lo, int index, c...
function TOLUA_API (line 154) | TOLUA_API void tolua_pushfielduserdata (lua_State* L, int lo, int index,...
function TOLUA_API (line 161) | TOLUA_API void tolua_pushfieldusertype (lua_State* L, int lo, int index,...
function TOLUA_API (line 168) | TOLUA_API void tolua_pushfieldusertype_and_takeownership (lua_State* L, ...
FILE: 3rdparty/toluapp/src/lib/tolua_to.c
function TOLUA_API (line 20) | TOLUA_API lua_Number tolua_tonumber(lua_State *L, int narg, lua_Number def)
function TOLUA_API (line 25) | TOLUA_API const char *tolua_tostring(lua_State *L, int narg, const char ...
function TOLUA_API (line 30) | TOLUA_API void *tolua_touserdata(lua_State *L, int narg, void *def)
function TOLUA_API (line 51) | TOLUA_API void *tolua_tousertype(lua_State *L, int narg, void *def)
function TOLUA_API (line 68) | TOLUA_API int tolua_tovalue(lua_State *L, int narg, int def)
function TOLUA_API (line 73) | TOLUA_API int tolua_toboolean(lua_State *L, int narg, int def)
function TOLUA_API (line 78) | TOLUA_API lua_Number tolua_tofieldnumber(lua_State *L, int lo, int index...
function TOLUA_API (line 88) | TOLUA_API const char *tolua_tofieldstring(lua_State *L, int lo, int inde...
function TOLUA_API (line 98) | TOLUA_API void *tolua_tofielduserdata(lua_State *L, int lo, int index, v...
function TOLUA_API (line 108) | TOLUA_API void *tolua_tofieldusertype(lua_State *L, int lo, int index, v...
function TOLUA_API (line 118) | TOLUA_API int tolua_tofieldvalue(lua_State *L, int lo, int index, int def)
function TOLUA_API (line 128) | TOLUA_API int tolua_getfieldboolean(lua_State *L, int lo, int index, int...
FILE: 3rdparty/toluapp/src/tests/tarray.c
function main (line 18) | int main (void)
FILE: 3rdparty/toluapp/src/tests/tarray.h
type Point (line 2) | typedef struct Point Point;
type Point (line 3) | struct Point
type Array (line 19) | typedef struct Array Array;
type Array (line 20) | struct Array
FILE: 3rdparty/toluapp/src/tests/tarraybind.c
function tolua_collect_Point (line 21) | static int tolua_collect_Point (lua_State* tolua_S)
function tolua_reg_types (line 31) | static void tolua_reg_types (lua_State* tolua_S)
function tolua_get_Point_x (line 38) | static int tolua_get_Point_x(lua_State* tolua_S)
function tolua_set_Point_x (line 49) | static int tolua_set_Point_x(lua_State* tolua_S)
function tolua_get_Point_y (line 63) | static int tolua_get_Point_y(lua_State* tolua_S)
function tolua_set_Point_y (line 74) | static int tolua_set_Point_y(lua_State* tolua_S)
function tolua_get_tarray_a (line 88) | static int tolua_get_tarray_a(lua_State* tolua_S)
function tolua_set_tarray_a (line 108) | static int tolua_set_tarray_a(lua_State* tolua_S)
function tolua_get_tarray_p (line 128) | static int tolua_get_tarray_p(lua_State* tolua_S)
function tolua_get_tarray_pp (line 148) | static int tolua_get_tarray_pp(lua_State* tolua_S)
function tolua_set_tarray_pp (line 168) | static int tolua_set_tarray_pp(lua_State* tolua_S)
function tolua_get_tarray_M_ma (line 188) | static int tolua_get_tarray_M_ma(lua_State* tolua_S)
function tolua_set_tarray_M_ma (line 208) | static int tolua_set_tarray_M_ma(lua_State* tolua_S)
function tolua_get_tarray_M_mp (line 228) | static int tolua_get_tarray_M_mp(lua_State* tolua_S)
function tolua_get_tarray_M_mpp (line 248) | static int tolua_get_tarray_M_mpp(lua_State* tolua_S)
function tolua_set_tarray_M_mpp (line 268) | static int tolua_set_tarray_M_mpp(lua_State* tolua_S)
function tolua_get_tarray_Array_a (line 288) | static int tolua_get_tarray_Array_a(lua_State* tolua_S)
function tolua_set_tarray_Array_a (line 312) | static int tolua_set_tarray_Array_a(lua_State* tolua_S)
function tolua_get_tarray_Array_p (line 336) | static int tolua_get_tarray_Array_p(lua_State* tolua_S)
function tolua_set_tarray_Array_p (line 360) | static int tolua_set_tarray_Array_p(lua_State* tolua_S)
function tolua_get_tarray_Array_pp (line 384) | static int tolua_get_tarray_Array_pp(lua_State* tolua_S)
function tolua_set_tarray_Array_pp (line 408) | static int tolua_set_tarray_Array_pp(lua_State* tolua_S)
function tolua_get_array (line 432) | static int tolua_get_array(lua_State* tolua_S)
function tolua_set_array (line 439) | static int tolua_set_array(lua_State* tolua_S)
function tolua_get_parray_ptr (line 451) | static int tolua_get_parray_ptr(lua_State* tolua_S)
function tolua_set_parray_ptr (line 458) | static int tolua_set_parray_ptr(lua_State* tolua_S)
function TOLUA_API (line 470) | TOLUA_API int tolua_tarray_open (lua_State* tolua_S)
FILE: 3rdparty/toluapp/src/tests/tclass.cpp
function main (line 17) | int main ()
FILE: 3rdparty/toluapp/src/tests/tclass.h
function namespace (line 6) | namespace Test {
function outside_func (line 114) | static void outside_func(Test::Tst_Outside* p_out, lua_State* ls) {
FILE: 3rdparty/toluapp/src/tests/tconstant.h
function class (line 17) | class A {
FILE: 3rdparty/toluapp/src/tests/tdirectivebind.c
function main (line 20) | int main (void)
function tolua_reg_types (line 31) | static void tolua_reg_types (lua_State* tolua_S)
function tolua_get_a (line 36) | static int tolua_get_a(lua_State* tolua_S)
function tolua_set_a (line 43) | static int tolua_set_a(lua_State* tolua_S)
function TOLUA_API (line 55) | TOLUA_API int tolua_tdirective_open (lua_State* tolua_S)
FILE: 3rdparty/toluapp/src/tests/tfunction.h
type Order (line 7) | typedef enum {
function class (line 12) | class Point
function setpointer (line 41) | void setpointer (Point* p)
function setref (line 45) | void setref (Point& p)
function setvalue (line 49) | void setvalue (Point p)
function setconst (line 53) | void setconst (const Point* p)
function setname (line 57) | void setname (const char* s)
function get (line 62) | void get (float* x, float* y) const
function get (line 66) | void get (float v[2]) const
function Point (line 70) | Point* getpointer ()
function Point (line 78) | Point getvalue ()
function Point (line 82) | const Point* getconst () const
function Point (line 91) | Point operator+ (const Point& p) const
function Point (line 95) | Point operator- (const Point& p) const
function Point (line 99) | Point operator* (const Point& p) const
function Point (line 103) | Point operator/ (float n) const
function operator (line 107) | bool operator< (const Point& p) const
function operator (line 113) | bool operator<= (const Point& p) const
function operator (line 117) | bool operator== (const Point& p) const
function const (line 122) | float operator[] (int i) const
function Error (line 131) | static Error echo (Error e)
function Point (line 139) | inline Point add (const Point& p1, const Point& p2)
function Point (line 143) | inline Point sub (const Point& p1, const Point& p2)
function Point (line 147) | inline Point mult (const Point& p1, const Point& p2)
function Point (line 151) | inline Point div (const Point& p1, float n)
function getpoint (line 156) | inline void getpoint (const Point* p, float* x, float* y)
function Point (line 165) | inline Point average (int n, Point v[])
function Point (line 173) | inline Point averagepointer (int n, Point* v[])
function copyvector (line 181) | inline void copyvector (int n, const Point v[], Point u[])
function Order (line 187) | inline Order invert (Order o)
function class (line 196) | class ColorPoint : public Point //tolua_export
function ColorPoint (line 214) | static ColorPoint* MakeRed (float x, float y)
FILE: 3rdparty/toluapp/src/tests/tmodule.c
function main (line 11) | int main ()
FILE: 3rdparty/toluapp/src/tests/tmodulebind.c
function tolua_reg_types (line 19) | static void tolua_reg_types (lua_State* tolua_S)
function tolua_get_A_a (line 24) | static int tolua_get_A_a(lua_State* tolua_S)
function tolua_set_A_a (line 31) | static int tolua_set_A_a(lua_State* tolua_S)
function tolua_get_B_b (line 43) | static int tolua_get_B_b(lua_State* tolua_S)
function tolua_set_B_b (line 50) | static int tolua_set_B_b(lua_State* tolua_S)
function tolua_get_C_c (line 62) | static int tolua_get_C_c(lua_State* tolua_S)
function tolua_set_C_c (line 69) | static int tolua_set_C_c(lua_State* tolua_S)
function tolua_get_A_d (line 81) | static int tolua_get_A_d(lua_State* tolua_S)
function tolua_set_A_d (line 88) | static int tolua_set_A_d(lua_State* tolua_S)
function TOLUA_API (line 100) | TOLUA_API int tolua_tmodule_open (lua_State* tolua_S)
FILE: 3rdparty/toluapp/src/tests/tnamespace.h
function namespace (line 1) | namespace A {
FILE: 3rdparty/toluapp/src/tests/tvariable.c
function main (line 27) | int main (void)
FILE: 3rdparty/toluapp/src/tests/tvariable.h
type A (line 1) | typedef struct A A;
type B (line 2) | typedef struct B B;
type U (line 3) | typedef union U U;
type A (line 5) | struct A
type B (line 21) | struct B
FILE: 3rdparty/toluapp/src/tests/tvariablebind.c
function tolua_reg_types (line 19) | static void tolua_reg_types (lua_State* tolua_S)
function tolua_get_A_i (line 27) | static int tolua_get_A_i(lua_State* tolua_S)
function tolua_set_A_i (line 38) | static int tolua_set_A_i(lua_State* tolua_S)
function tolua_get_A_f (line 52) | static int tolua_get_A_f(lua_State* tolua_S)
function tolua_set_A_f (line 63) | static int tolua_set_A_f(lua_State* tolua_S)
function tolua_get_A_d (line 77) | static int tolua_get_A_d(lua_State* tolua_S)
function tolua_set_A_d (line 88) | static int tolua_set_A_d(lua_State* tolua_S)
function tolua_get_A_s (line 102) | static int tolua_get_A_s(lua_State* tolua_S)
function tolua_set_A_s (line 113) | static int tolua_set_A_s(lua_State* tolua_S)
function tolua_get_A_v (line 127) | static int tolua_get_A_v(lua_State* tolua_S)
function tolua_set_A_v (line 138) | static int tolua_set_A_v(lua_State* tolua_S)
function tolua_get_A_n (line 152) | static int tolua_get_A_n(lua_State* tolua_S)
function tolua_set_A_n (line 163) | static int tolua_set_A_n(lua_State* tolua_S)
function tolua_get_B_a (line 177) | static int tolua_get_B_a(lua_State* tolua_S)
function tolua_set_B_a (line 188) | static int tolua_set_B_a(lua_State* tolua_S)
function tolua_get_B_b_ptr (line 202) | static int tolua_get_B_b_ptr(lua_State* tolua_S)
function tolua_set_B_b_ptr (line 213) | static int tolua_set_B_b_ptr(lua_State* tolua_S)
function tolua_get_U_i (line 227) | static int tolua_get_U_i(lua_State* tolua_S)
function tolua_set_U_i (line 238) | static int tolua_set_U_i(lua_State* tolua_S)
function tolua_get_U_f (line 252) | static int tolua_get_U_f(lua_State* tolua_S)
function tolua_set_U_f (line 263) | static int tolua_set_U_f(lua_State* tolua_S)
function tolua_get_i (line 277) | static int tolua_get_i(lua_State* tolua_S)
function tolua_set_i (line 284) | static int tolua_set_i(lua_State* tolua_S)
function tolua_get_f (line 296) | static int tolua_get_f(lua_State* tolua_S)
function tolua_set_f (line 303) | static int tolua_set_f(lua_State* tolua_S)
function tolua_get_d (line 315) | static int tolua_get_d(lua_State* tolua_S)
function tolua_set_d (line 322) | static int tolua_set_d(lua_State* tolua_S)
function tolua_get_s (line 334) | static int tolua_get_s(lua_State* tolua_S)
function tolua_get_v (line 341) | static int tolua_get_v(lua_State* tolua_S)
function tolua_set_v (line 348) | static int tolua_set_v(lua_State* tolua_S)
function tolua_get_n (line 360) | static int tolua_get_n(lua_State* tolua_S)
function tolua_set_n (line 367) | static int tolua_set_n(lua_State* tolua_S)
function tolua_get_a (line 379) | static int tolua_get_a(lua_State* tolua_S)
function tolua_set_a (line 386) | static int tolua_set_a(lua_State* tolua_S)
function tolua_get_b_ptr (line 398) | static int tolua_get_b_ptr(lua_State* tolua_S)
function tolua_set_b_ptr (line 405) | static int tolua_set_b_ptr(lua_State* tolua_S)
function tolua_get_u (line 417) | static int tolua_get_u(lua_State* tolua_S)
function tolua_set_u (line 424) | static int tolua_set_u(lua_State* tolua_S)
function tolua_get_M_mi (line 436) | static int tolua_get_M_mi(lua_State* tolua_S)
function tolua_set_M_mi (line 443) | static int tolua_set_M_mi(lua_State* tolua_S)
function tolua_get_M_mf (line 455) | static int tolua_get_M_mf(lua_State* tolua_S)
function tolua_set_M_mf (line 462) | static int tolua_set_M_mf(lua_State* tolua_S)
function tolua_get_M_md (line 474) | static int tolua_get_M_md(lua_State* tolua_S)
function tolua_set_M_md (line 481) | static int tolua_set_M_md(lua_State* tolua_S)
function tolua_get_M_ms (line 493) | static int tolua_get_M_ms(lua_State* tolua_S)
function tolua_get_M_mv (line 500) | static int tolua_get_M_mv(lua_State* tolua_S)
function tolua_set_M_mv (line 507) | static int tolua_set_M_mv(lua_State* tolua_S)
function tolua_get_M_mn (line 519) | static int tolua_get_M_mn(lua_State* tolua_S)
function tolua_get_M_a (line 526) | static int tolua_get_M_a(lua_State* tolua_S)
function tolua_set_M_a (line 533) | static int tolua_set_M_a(lua_State* tolua_S)
function tolua_get_M_ma (line 545) | static int tolua_get_M_ma(lua_State* tolua_S)
function tolua_set_M_ma (line 552) | static int tolua_set_M_ma(lua_State* tolua_S)
function tolua_get_M_mb_ptr (line 564) | static int tolua_get_M_mb_ptr(lua_State* tolua_S)
function tolua_set_M_mb_ptr (line 571) | static int tolua_set_M_mb_ptr(lua_State* tolua_S)
function TOLUA_API (line 583) | TOLUA_API int tolua_tvariable_open (lua_State* tolua_S)
FILE: bin/check_docs.py
function tidy (line 59) | def tidy(file):
FILE: bin/clang-tidy-diff.py
function main (line 34) | def main():
FILE: bin/run-clang-format.py
class ExitStatus (line 31) | class ExitStatus:
function list_files (line 37) | def list_files(files, recursive=False, extensions=None, exclude=None):
function make_diff (line 69) | def make_diff(file, original, reformatted):
class DiffError (line 79) | class DiffError(Exception):
method __init__ (line 80) | def __init__(self, message, errs=None):
class UnexpectedError (line 85) | class UnexpectedError(Exception):
method __init__ (line 86) | def __init__(self, message, exc=None):
function run_clang_format_diff_wrapper (line 92) | def run_clang_format_diff_wrapper(args, file):
function run_clang_format_diff (line 103) | def run_clang_format_diff(args, file):
function bold_red (line 160) | def bold_red(s):
function colorize (line 164) | def colorize(diff_lines):
function print_diff (line 190) | def print_diff(diff_lines, use_color):
function print_trouble (line 199) | def print_trouble(prog, message, use_colors):
function main (line 206) | def main():
FILE: cmake/scripts/clang-format-check-changed.py
function check_file (line 9) | def check_file(filename, excludes, extensions):
function check_directory (line 28) | def check_directory(directory, excludes, extensions):
function get_git_root (line 45) | def get_git_root(git_bin):
function clean_git_filename (line 53) | def clean_git_filename(line):
function get_changed_files (line 76) | def get_changed_files(git_bin, excludes, file_extensions):
function run_clang_format (line 117) | def run_clang_format(clang_format_bin, changed_files):
function cli (line 139) | def cli():
FILE: doc/render.py
function reverse_format (line 35) | def reverse_format(param_list, format_string):
FILE: extras/git_ranked.py
function get_first_number (line 5) | def get_first_number(s):
function git_log (line 19) | def git_log():
function main (line 64) | def main():
FILE: lua/libcairo-helper.h
function cairo_text_extents_t (line 31) | cairo_text_extents_t *create_cairo_text_extents_t(void) {
function cairo_font_extents_t (line 35) | cairo_font_extents_t *create_cairo_font_extents_t(void) {
function cairo_matrix_t (line 39) | cairo_matrix_t *create_cairo_matrix_t(void) {
function destroy_cairo_text_extents_t (line 43) | void destroy_cairo_text_extents_t(cairo_text_extents_t *pointer) {
function destroy_cairo_font_extents_t (line 47) | void destroy_cairo_font_extents_t(cairo_font_extents_t *pointer) {
function destroy_cairo_matrix_t (line 51) | void destroy_cairo_matrix_t(cairo_matrix_t *pointer) { free(pointer); }
FILE: lua/libcairo_imlib2_helper.h
function cairo_place_image (line 33) | void cairo_place_image(const char *file, cairo_t *cr, int x, int y,
function cairo_draw_image (line 106) | void cairo_draw_image(const char *file, cairo_surface_t *cs, int x, int y,
FILE: lua/libcairo_text_helper.h
type FontData (line 47) | typedef struct _FontData {
type cairo_text_alignment_t (line 61) | typedef enum _cairo_text_alignment {
function FontData (line 68) | FontData *cairo_text_hp_import_font(const char *font, int font_size) {
function FontData (line 125) | FontData *cairo_text_hp_load_font(const char *font, int font_size) {
function cairo_text_hp_destroy_font (line 146) | void cairo_text_hp_destroy_font(FontData *font) {
function cairo_text_hp_delete_fonts (line 158) | void cairo_text_hp_delete_fonts() {
function cairo_text_hp_show (line 172) | void cairo_text_hp_show(cairo_t *cr, int x, int y, const char *text,
function cairo_text_hp_text_size (line 340) | void cairo_text_hp_text_size(const char *text, const char *font, int fon...
FILE: lua/librsvg-helper.h
function RsvgDimensionData (line 32) | RsvgDimensionData *rsvg_dimension_data_create(void) {
function rsvg_dimension_data_destroy (line 36) | void rsvg_dimension_data_destroy(RsvgDimensionData *pointer) {
function rsvg_dimension_data_get (line 40) | void rsvg_dimension_data_get(RsvgDimensionData *dd, int *width, int *hei...
function rsvg_dimension_data_set (line 50) | void rsvg_dimension_data_set(RsvgDimensionData *dd, int width, int height,
function RsvgPositionData (line 60) | RsvgPositionData *rsvgPositionDataCreate(void) {
function rsvgPositionDataGet (line 64) | void rsvgPositionDataGet(RsvgPositionData *pd, int *x, int *y) {
function RsvgHandle (line 71) | RsvgHandle *rsvg_create_handle_from_file(const char *filename) {
function rsvg_destroy_handle (line 89) | int rsvg_destroy_handle(RsvgHandle *handle) {
function RsvgRectangle (line 95) | RsvgRectangle *rsvg_rectangle_create(void) {
function rsvg_rectangle_destroy (line 99) | void rsvg_rectangle_destroy(RsvgRectangle *rect) { free(rect); }
function rsvg_rectangle_set (line 101) | void rsvg_rectangle_set(RsvgRectangle *rect, double x, double y, double ...
function rsvg_rectangle_get (line 111) | void rsvg_rectangle_get(RsvgRectangle *rect, double *x, double *y,
FILE: src/c++wrap.cc
function pipe2_emulate (line 44) | int pipe2_emulate(int pipefd[2], int flags) {
function strerror_r (line 68) | std::string strerror_r(int errnum) {
function pipe2 (line 76) | std::pair<int, int> pipe2(int flags) {
FILE: src/c++wrap.hh
class errno_error (line 40) | class errno_error : public std::runtime_error {
method errno_error (line 44) | explicit errno_error(const std::string &prefix, int err_ = errno)
FILE: src/common.cc
function strfold (line 88) | void strfold(char *start, int count) {
function update_uname (line 110) | int update_uname() {
function get_time (line 134) | double get_time() {
function to_real_path (line 145) | std::filesystem::path to_real_path(const std::string &source) {
function to_real_path (line 165) | std::filesystem::path to_real_path(const std::string &source) {
function open_fifo (line 198) | int open_fifo(const char *file, int *reported) {
function FILE (line 214) | FILE *open_file(const char *file, int *reported) {
function get_cwd (line 230) | std::filesystem::path get_cwd() {
function current_username (line 247) | std::string current_username() {
function user_home (line 259) | std::optional<std::filesystem::path> user_home(const std::string &userna...
function user_home (line 275) | std::optional<std::filesystem::path> user_home() {
function tilde_expand (line 279) | std::string tilde_expand(const std::string &unexpanded) {
function variable_substitute (line 327) | std::string variable_substitute(std::string s) {
function format_seconds (line 369) | void format_seconds(char *buf, unsigned int n, long seconds) {
function format_seconds_short (line 392) | void format_seconds_short(char *buf, unsigned int n, long seconds) {
function update_stuff (line 425) | void update_stuff() {
function round_to_int_temp (line 460) | int round_to_int_temp(float f) { return static_cast<int>(f); }
function round_to_positive_int (line 463) | unsigned int round_to_positive_int(float f) {
function scan_loadavg_arg (line 468) | void scan_loadavg_arg(struct text_object *obj, const char *arg) {
function print_loadavg (line 482) | void print_loadavg(struct text_object *obj, char *p, unsigned int p_max_...
function scan_no_update (line 492) | void scan_no_update(struct text_object *obj, const char *arg) {
function free_no_update (line 499) | void free_no_update(struct text_object *obj) { free(obj->data.s); }
function print_no_update (line 501) | void print_no_update(struct text_object *obj, char *p,
function scan_loadgraph_arg (line 507) | void scan_loadgraph_arg(struct text_object *obj, const char *arg) {
function loadgraphval (line 511) | double loadgraphval(struct text_object *obj) {
function cpu_percentage (line 518) | uint8_t cpu_percentage(struct text_object *obj) {
function cpu_barval (line 529) | double cpu_barval(struct text_object *obj) {
function mem_percentage (line 562) | uint8_t mem_percentage(struct text_object *obj) {
function mem_barval (line 570) | double mem_barval(struct text_object *obj) {
function mem_with_buffers_barval (line 576) | double mem_with_buffers_barval(struct text_object *obj) {
function swap_percentage (line 584) | uint8_t swap_percentage(struct text_object *obj) {
function swap_barval (line 592) | double swap_barval(struct text_object *obj) {
function print_kernel (line 599) | void print_kernel(struct text_object *obj, char *p, unsigned int p_max_s...
function print_machine (line 604) | void print_machine(struct text_object *obj, char *p, unsigned int p_max_...
function print_nodename (line 609) | void print_nodename(struct text_object *obj, char *p, unsigned int p_max...
function print_nodename_short (line 614) | void print_nodename_short(struct text_object *obj, char *p,
function print_sysname (line 626) | void print_sysname(struct text_object *obj, char *p, unsigned int p_max_...
function print_version (line 632) | void print_version(struct text_object *obj, char *p, unsigned int p_max_...
function print_uptime (line 638) | void print_uptime(struct text_object *obj, char *p, unsigned int p_max_s...
function print_uptime_short (line 643) | void print_uptime_short(struct text_object *obj, char *p,
function print_processes (line 649) | void print_processes(struct text_object *obj, char *p,
function print_running_processes (line 655) | void print_running_processes(struct text_object *obj, char *p,
function print_running_threads (line 661) | void print_running_threads(struct text_object *obj, char *p,
function print_threads (line 667) | void print_threads(struct text_object *obj, char *p, unsigned int p_max_...
function print_buffers (line 672) | void print_buffers(struct text_object *obj, char *p, unsigned int p_max_...
function print_cached (line 677) | void print_cached(struct text_object *obj, char *p, unsigned int p_max_s...
function print_free_bufcache (line 682) | void print_free_bufcache(struct text_object *obj, char *p,
function print_free_cached (line 688) | void print_free_cached(struct text_object *obj, char *p,
function print_evaluate (line 694) | void print_evaluate(struct text_object *obj, char *p, unsigned int p_max...
function if_empty_iftest (line 700) | int if_empty_iftest(struct text_object *obj) {
function check_contains (line 710) | static int check_contains(char *f, char *s) {
function if_existing_iftest (line 730) | int if_existing_iftest(struct text_object *obj) {
function if_running_iftest (line 745) | int if_running_iftest(struct text_object *obj) {
function print_acpitemp (line 751) | void print_acpitemp(struct text_object *obj, char *p, unsigned int p_max...
function free_acpitemp (line 755) | void free_acpitemp(struct text_object *obj) { close(obj->data.i); }
function print_freq (line 758) | void print_freq(struct text_object *obj, char *p, unsigned int p_max_siz...
function print_freq_g (line 763) | void print_freq_g(struct text_object *obj, char *p, unsigned int p_max_s...
function print_acpifan (line 776) | void print_acpifan(struct text_object *obj, char *p, unsigned int p_max_...
function print_acpiacadapter (line 781) | void print_acpiacadapter(struct text_object *obj, char *p,
function print_battery (line 787) | void print_battery(struct text_object *obj, char *p, unsigned int p_max_...
function print_battery_time (line 791) | void print_battery_time(struct text_object *obj, char *p,
function battery_power_draw (line 796) | void battery_power_draw(struct text_object *obj, char *p,
function battery_percentage (line 801) | uint8_t battery_percentage(struct text_object *obj) {
function print_battery_short (line 805) | void print_battery_short(struct text_object *obj, char *p,
function print_battery_status (line 810) | void print_battery_status(struct text_object *obj, char *p,
function print_blink (line 831) | void print_blink(struct text_object *obj, char *p, unsigned int p_max_si...
function print_include (line 850) | void print_include(struct text_object *obj, char *p, unsigned int p_max_...
function github_notifications_url (line 865) | std::string github_notifications_url() { return kGithubNotificationsUrl; }
function github_authorization_header (line 867) | std::string github_authorization_header(const std::string &token) {
function read_github_data_cb (line 875) | static size_t read_github_data_cb(char *data, size_t size, size_t nmemb,
function print_github (line 918) | void print_github(struct text_object *obj, char *p, unsigned int p_max_s...
function print_stock (line 974) | void print_stock(struct text_object *obj, char *p, unsigned int p_max_si...
function free_stock (line 982) | void free_stock(struct text_object *obj) { free(obj->data.s); }
function print_to_bytes (line 985) | void print_to_bytes(struct text_object *obj, char *p, unsigned int p_max...
function print_updates (line 1010) | void print_updates(struct text_object *obj, char *p, unsigned int p_max_...
function updatenr_iftest (line 1015) | int updatenr_iftest(struct text_object *obj) {
FILE: src/common.h
type text_object (line 41) | struct text_object
type text_object (line 44) | struct text_object
type text_object (line 56) | struct text_object
type text_object (line 57) | struct text_object
type process (line 60) | struct process
type text_object (line 107) | struct text_object
type text_object (line 110) | struct text_object
type text_object (line 111) | struct text_object
type text_object (line 112) | struct text_object
type text_object (line 114) | struct text_object
type text_object (line 115) | struct text_object
type text_object (line 117) | struct text_object
type text_object (line 118) | struct text_object
type text_object (line 121) | struct text_object
type text_object (line 122) | struct text_object
type text_object (line 124) | struct text_object
type text_object (line 125) | struct text_object
type text_object (line 126) | struct text_object
type text_object (line 127) | struct text_object
type text_object (line 128) | struct text_object
type text_object (line 129) | struct text_object
type text_object (line 130) | struct text_object
type text_object (line 131) | struct text_object
type text_object (line 132) | struct text_object
type text_object (line 133) | struct text_object
type text_object (line 134) | struct text_object
type text_object (line 135) | struct text_object
type text_object (line 136) | struct text_object
type text_object (line 137) | struct text_object
type text_object (line 138) | struct text_object
type text_object (line 139) | struct text_object
type text_object (line 140) | struct text_object
type text_object (line 141) | struct text_object
type text_object (line 142) | struct text_object
type text_object (line 143) | struct text_object
type text_object (line 144) | struct text_object
type text_object (line 146) | struct text_object
type text_object (line 147) | struct text_object
type text_object (line 148) | struct text_object
type text_object (line 149) | struct text_object
type text_object (line 150) | struct text_object
type text_object (line 153) | struct text_object
type text_object (line 156) | struct text_object
type text_object (line 157) | struct text_object
type text_object (line 159) | struct text_object
type text_object (line 160) | struct text_object
type text_object (line 161) | struct text_object
type text_object (line 162) | struct text_object
type text_object (line 164) | struct text_object
type text_object (line 165) | struct text_object
type text_object (line 166) | struct text_object
type text_object (line 167) | struct text_object
type text_object (line 169) | struct text_object
type text_object (line 171) | struct text_object
type text_object (line 172) | struct text_object
type text_object (line 173) | struct text_object
type text_object (line 176) | struct text_object
type text_object (line 177) | struct text_object
type text_object (line 180) | struct text_object
type text_object (line 181) | struct text_object
type text_object (line 184) | struct text_object
type text_object (line 185) | struct text_object
type text_object (line 186) | struct text_object
type text_object (line 187) | struct text_object
type text_object (line 188) | struct text_object
type text_object (line 189) | struct text_object
type text_object (line 190) | struct text_object
type text_object (line 191) | struct text_object
type text_object (line 194) | struct text_object
type text_object (line 196) | struct text_object
type text_object (line 197) | struct text_object
type text_object (line 199) | struct text_object
type text_object (line 200) | struct text_object
type text_object (line 203) | struct text_object
type text_object (line 204) | struct text_object
type text_object (line 205) | struct text_object
FILE: src/conky-imlib2.cc
type image_list_s (line 41) | struct image_list_s {
type image_list_s (line 48) | struct image_list_s
type image_list_s (line 51) | struct image_list_s
type image_list_s (line 48) | struct image_list_s
function cimlib_cleanup (line 112) | void cimlib_cleanup() {
function cimlib_add_image (line 122) | void cimlib_add_image(const char *args) {
function cimlib_draw_image (line 187) | static void cimlib_draw_image(struct image_list_s *cur, int *clip_x,
function cimlib_draw_all (line 236) | static void cimlib_draw_all(int *clip_x, int *clip_y, int *clip_x2,
function cimlib_render (line 245) | void cimlib_render(int x, int y, int width, int height, uint32_t flush_i...
function print_image_callback (line 301) | void print_image_callback(struct text_object *obj, char *, unsigned int) {
FILE: src/conky-imlib2.h
type text_object (line 47) | struct text_object
function class (line 49) | class imlib_cache_size_setting
FILE: src/conky.cc
type spacer_state (line 188) | enum spacer_state { NO_SPACER = 0, LEFT_SPACER, RIGHT_SPACER }
function active_update_interval (line 230) | double active_update_interval() {
type information (line 280) | struct information
type gradient_state (line 320) | enum gradient_state { RGB_GRADIENT = 0, HSV_GRADIENT, HCL_GRADIENT }
function isutf8 (line 357) | static bool isutf8(const char *envvar) {
function set_updatereset (line 403) | void set_updatereset(int i) { updatereset = i; }
function get_updatereset (line 405) | int get_updatereset() { return updatereset; }
function get_total_updates (line 407) | int get_total_updates() { return total_updates; }
function calc_text_width (line 409) | int calc_text_width(const char *s) {
function for_each_line (line 438) | static inline void for_each_line(char *b, int f(char *, int)) {
function convert_escapes (line 455) | static void convert_escapes(char *buf) {
function spaced_print (line 477) | int spaced_print(char *buf, int size, const char *format, int width, ...) {
function percent_print (line 509) | int percent_print(char *buf, int size, unsigned value) {
function human_readable (line 518) | void human_readable(long long num, char *buf, int size) {
type text_object (line 579) | struct text_object
function set_current_text_color (line 583) | void set_current_text_color(Colour colour) { current_text_color = colour; }
function Colour (line 585) | Colour get_current_text_color() { return current_text_color; }
function extract_variable_text (line 587) | static void extract_variable_text(const char *p) {
function parse_conky_vars (line 596) | void parse_conky_vars(struct text_object *root, const char *txt, char *p,
function generate_text_internal (line 620) | void generate_text_internal(char *p, int p_max_size, struct text_object ...
function evaluate (line 675) | void evaluate(const char *text, char *p, int p_max_size) {
function generate_text (line 692) | static void generate_text() {
function get_string_width (line 763) | int get_string_width(const char *s) { return *s != 0 ? calc_text_width(s...
function get_border_total (line 766) | int get_border_total() {
function remove_first_char (line 772) | void remove_first_char(char *s) { memmove(s, s + 1, strlen(s)); }
function get_string_width_special (line 774) | static int get_string_width_special(char *s, int special_index) {
function update_text_area (line 854) | void update_text_area() {
function text_size_updater (line 933) | static int text_size_updater(char *s, int special_index) {
function set_foreground_color (line 997) | static inline void set_foreground_color(Colour c) {
function draw_graph_bars (line 1001) | static inline void draw_graph_bars(special_node *current, std::unique_pt...
function draw_string (line 1035) | static void draw_string(const char *s) {
function formatSizeWithUnits (line 1108) | static std::string formatSizeWithUnits(double size, int prec = 1) {
function draw_each_line_inner (line 1137) | int draw_each_line_inner(char *s, int special_index, int last_special_ap...
function draw_line (line 1558) | static int draw_line(char *s, int special_index) {
function draw_text (line 1567) | static void draw_text() {
function draw_stuff (line 1603) | void draw_stuff() {
function update_text (line 1666) | void update_text() {
function split (line 1685) | void split(const std::string &s, char delim, Out result) {
function split (line 1690) | std::vector<std::string> split(const std::string &s, char delim) {
function is_on_battery (line 1696) | bool is_on_battery() { // checks if at least one battery specified in
function get_system_details (line 1710) | void get_system_details() {
type timespec (line 1880) | struct timespec
type timeval (line 1933) | struct timeval
type inotify_event (line 1946) | struct inotify_event
type inotify_event (line 1946) | struct inotify_event
function reload_config (line 1986) | static void reload_config() {
function free_specials (line 2003) | void free_specials(special_node *¤t) {
function clean_up (line 2014) | void clean_up(void) {
function set_default_configurations (line 2057) | static void set_default_configurations() {
function catch (line 2112) | catch (lua::syntax_error &e) {
function reset_optind (line 2146) | inline void reset_optind() {
function set_current_config (line 2155) | void set_current_config() {
type option (line 2210) | struct option
function setup_inotify (line 2235) | void setup_inotify() {
function initialisation (line 2246) | void initialisation(int argc, char **argv) {
function signal_handler (line 2443) | static void signal_handler(int sig) {
FILE: src/conky.h
type text_object (line 77) | struct text_object
type usr_info (line 114) | struct usr_info {
type monitor_info (line 123) | struct monitor_info {
type desktop_info (line 128) | struct desktop_info {
type x11_info (line 135) | struct x11_info {
type conftree (line 142) | struct conftree {
function display_session (line 166) | enum class display_session : std::size_t { unknown, x11, wayland };
function wm_is (line 385) | inline bool wm_is(conky::info::window_manager single) {
type text_object (line 394) | struct text_object
type text_object (line 396) | struct text_object
type text_object (line 398) | struct text_object
type option (line 459) | struct option
FILE: src/content/algebra.cc
function find_match_op (line 42) | int find_match_op(const char *expr) {
function get_match_type (line 65) | int get_match_type(const char *expr) {
function lcompare (line 108) | int lcompare(long a, enum match_type mtype, long b) {
function dcompare (line 112) | int dcompare(double a, enum match_type mtype, double b) {
function scompare (line 117) | int scompare(const char *a, enum match_type mtype, const char *b) {
function get_arg_type (line 122) | enum arg_type get_arg_type(const char *arg) {
function arg_to_double (line 163) | double arg_to_double(const char *arg) {
function arg_to_long (line 171) | long arg_to_long(const char *arg) {
function compare (line 180) | int compare(const char *expr) {
function check_if_match (line 242) | int check_if_match(struct text_object *obj) {
FILE: src/content/algebra.h
type match_type (line 32) | enum match_type {
type arg_type (line 41) | enum arg_type {
type text_object (line 49) | struct text_object
FILE: src/content/colour-names-stub.hh
type rgb (line 13) | struct rgb {
class color_name_hash (line 20) | class color_name_hash {
type rgb (line 22) | struct rgb
type rgb (line 25) | struct rgb
FILE: src/content/colours.cc
function Colour (line 37) | Colour Colour::from_argb32(uint32_t argb) {
function no_colour (line 58) | std::optional<Colour> inline no_colour() { return std::nullopt; }
function parse_error (line 60) | std::optional<Colour> parse_error(const std::string &color_str,
function parse_error (line 73) | std::optional<Colour> parse_error(const std::string &color_str,
function parse_color_name (line 80) | std::optional<Colour> parse_color_name(const std::string &name) {
function parse_hex_color (line 89) | std::optional<Colour> parse_hex_color(const std::string &color) {
function Colour (line 137) | Colour parse_color(const std::string &color) {
FILE: src/content/colours.hh
type Colour (line 46) | struct Colour {
method Colour (line 53) | Colour() = default;
method Colour (line 54) | Colour(uint8_t r, uint8_t g, uint8_t b, uint8_t a = UINT8_MAX)
method Colour (line 57) | Colour(const Colour &) = default;
method Colour (line 58) | Colour(Colour &&) = default;
method to_argb32 (line 76) | uint32_t to_argb32(void) const {
class Hash (line 85) | class Hash {
FILE: src/content/combine.cc
type combine_data (line 36) | struct combine_data {
function parse_combine_arg (line 42) | void parse_combine_arg(struct text_object *obj, const char *arg) {
function print_combine (line 98) | void print_combine(struct text_object *obj, char *p, unsigned int p_max_...
function free_combine (line 193) | void free_combine(struct text_object *obj) {
FILE: src/content/combine.h
type text_object (line 32) | struct text_object
type text_object (line 33) | struct text_object
type text_object (line 34) | struct text_object
FILE: src/content/gradient.cc
type conky (line 34) | namespace conky {
function Colour (line 52) | Colour gradient_factory::convert_to_rgb(long *const array) {
function get_value (line 135) | long get_value(long *const rgb) {
function get_minimum (line 140) | long get_minimum(long *const rgb) {
function get_luma (line 202) | long get_luma(long *const rgb) {
function get_minimum_from_luma (line 209) | long get_minimum_from_luma(long luma, long r, long g, long b) {
FILE: src/content/gradient.hh
type conky (line 36) | namespace conky {
class gradient_factory (line 37) | class gradient_factory {
method fix_diff (line 64) | virtual void fix_diff(long *) {}
class rgb_gradient_factory (line 75) | class rgb_gradient_factory : public gradient_factory {
class hsv_gradient_factory (line 83) | class hsv_gradient_factory : public gradient_factory {
class hcl_gradient_factory (line 92) | class hcl_gradient_factory : public gradient_factory {
FILE: src/content/scroll.cc
function scroll_character_length (line 42) | inline int scroll_character_length(char c) {
function scroll_check_skip_byte (line 65) | inline bool scroll_check_skip_byte(char c) {
type scroll_data (line 78) | struct scroll_data {
function scroll_count_characters_to_right (line 92) | static unsigned int scroll_count_characters_to_right(
function scroll_scroll_left (line 105) | static void scroll_scroll_left(struct scroll_data *sd,
function scroll_scroll_right (line 120) | static void scroll_scroll_right(struct scroll_data *sd,
function parse_scroll_arg (line 132) | void parse_scroll_arg(struct text_object *obj, const char *arg,
function print_scroll (line 206) | void print_scroll(struct text_object *obj, char *p, unsigned int p_max_s...
function free_scroll (line 332) | void free_scroll(struct text_object *obj) {
FILE: src/content/scroll.h
type text_object (line 32) | struct text_object
type text_object (line 33) | struct text_object
type text_object (line 34) | struct text_object
FILE: src/content/specials.cc
type special_node (line 49) | struct special_node
type bar (line 94) | struct bar {
type gauge (line 100) | struct gauge {
type graph (line 106) | struct graph {
type stippled_hr (line 119) | struct stippled_hr {
type tab (line 123) | struct tab {
type text_object (line 132) | struct text_object
type gauge (line 134) | struct gauge
type gauge (line 136) | struct gauge
type gauge (line 136) | struct gauge
type gauge (line 137) | struct gauge
type text_object (line 166) | struct text_object
type bar (line 167) | struct bar
type bar (line 169) | struct bar
type bar (line 169) | struct bar
type bar (line 170) | struct bar
function scan_font (line 197) | void scan_font(struct text_object *obj, const char *args) {
function apply_graph_colours (line 203) | void apply_graph_colours(struct graph *g, const char *first_colour_name,
function scan_command (line 217) | std::pair<char *, size_t> scan_command(const char *s) {
function scan_graph (line 264) | bool scan_graph(struct text_object *obj, const char *argstr, double defs...
type special_node (line 423) | struct special_node
type special_node (line 438) | struct special_node
function new_gauge_in_shell (line 455) | void new_gauge_in_shell(struct text_object *obj, char *p,
function new_gauge_in_gui (line 465) | void new_gauge_in_gui(struct text_object *obj, char *buf, double usage) {
function new_gauge (line 482) | void new_gauge(struct text_object *obj, char *p, unsigned int p_max_size,
function new_font (line 507) | void new_font(struct text_object *obj, char *p, unsigned int p_max_size) {
function graph_append (line 532) | static void graph_append(struct special_node *graph, double f, char show...
function new_graph_in_shell (line 577) | void new_graph_in_shell(struct special_node *s, char *buf, int buf_max_s...
function store_graph (line 620) | void store_graph(int graph_id, struct special_node *s) {
function new_graph (line 637) | void new_graph(struct text_object *obj, char *buf, int buf_max_size,
function new_hr (line 716) | void new_hr(struct text_object *obj, char *p, unsigned int p_max_size) {
function scan_stippled_hr (line 724) | void scan_stippled_hr(struct text_object *obj, const char *arg) {
function new_stippled_hr (line 742) | void new_stippled_hr(struct text_object *obj, char *p,
function new_fg (line 758) | void new_fg(struct text_object *obj, char *p, unsigned int p_max_size) {
function new_bg (line 775) | void new_bg(struct text_object *obj, char *p, unsigned int p_max_size) {
function new_bar_in_shell (line 784) | static void new_bar_in_shell(struct text_object *obj, char *buffer,
function new_bar_in_gui (line 808) | static void new_bar_in_gui(struct text_object *obj, char *buf, double us...
function new_bar (line 826) | void new_bar(struct text_object *obj, char *p, unsigned int p_max_size,
function new_outline (line 850) | void new_outline(struct text_object *obj, char *p, unsigned int p_max_si...
function new_offset (line 855) | void new_offset(struct text_object *obj, char *p, unsigned int p_max_siz...
function new_voffset (line 860) | void new_voffset(struct text_object *obj, char *p, unsigned int p_max_si...
function new_save_coordinates (line 865) | void new_save_coordinates(struct text_object *obj, char *p,
function new_alignr (line 871) | void new_alignr(struct text_object *obj, char *p, unsigned int p_max_siz...
function new_alignc (line 877) | void new_alignc(struct text_object *obj, char *p, unsigned int p_max_siz...
function new_goto (line 882) | void new_goto(struct text_object *obj, char *p, unsigned int p_max_size) {
function scan_tab (line 887) | void scan_tab(struct text_object *obj, const char *arg) {
function new_tab (line 905) | void new_tab(struct text_object *obj, char *p, unsigned int p_max_size) {
function clear_stored_graphs (line 916) | void clear_stored_graphs() {
FILE: src/content/specials.h
type class (line 46) | enum class
type special_node (line 69) | struct special_node {
type special_node (line 94) | struct special_node
type text_object (line 99) | struct text_object
type text_object (line 102) | struct text_object
type text_object (line 103) | struct text_object
type text_object (line 105) | struct text_object
type text_object (line 107) | struct text_object
type text_object (line 108) | struct text_object
type text_object (line 109) | struct text_object
type text_object (line 112) | struct text_object
type text_object (line 113) | struct text_object
type text_object (line 114) | struct text_object
type text_object (line 115) | struct text_object
type text_object (line 117) | struct text_object
type text_object (line 118) | struct text_object
type text_object (line 119) | struct text_object
type text_object (line 120) | struct text_object
type text_object (line 121) | struct text_object
type text_object (line 122) | struct text_object
type text_object (line 123) | struct text_object
type text_object (line 124) | struct text_object
type text_object (line 125) | struct text_object
type text_object (line 126) | struct text_object
type text_object (line 127) | struct text_object
type text_object (line 128) | struct text_object
type special_node (line 132) | struct special_node
type text_node_t (line 132) | enum text_node_t
FILE: src/content/temphelper.cc
function fahrenheit_to_celsius (line 39) | static double fahrenheit_to_celsius(double n) { return ((n - 32) * 5 / 9...
function celsius_to_fahrenheit (line 41) | static double celsius_to_fahrenheit(double n) { return ((n * 9 / 5) + 32...
function convert_temp_output (line 43) | static double convert_temp_output(double n, enum TEMP_UNIT input_unit) {
function temp_print (line 56) | int temp_print(char *p, size_t p_max_size, double n, enum TEMP_UNIT inpu...
FILE: src/content/temphelper.h
type TEMP_UNIT (line 29) | enum TEMP_UNIT { TEMP_CELSIUS, TEMP_FAHRENHEIT }
type TEMP_UNIT (line 31) | enum TEMP_UNIT
FILE: src/content/template.cc
function text_contains_templates (line 244) | int text_contains_templates(const char *text) {
FILE: src/content/text_object.cc
function gen_free_opaque (line 36) | void gen_free_opaque(struct text_object *obj) {
function gen_false_iftest (line 40) | int gen_false_iftest(struct text_object *) { return 0; }
function gen_print_nothing (line 42) | void gen_print_nothing(struct text_object *, char *, unsigned int) {
function gen_print_obj_data_s (line 46) | void gen_print_obj_data_s(struct text_object *obj, char *p,
function append_object (line 66) | int append_object(struct text_object *root, struct text_object *obj) {
type ifblock_type (line 98) | enum ifblock_type { IFBLOCK_IF = 1, IFBLOCK_ELSE, IFBLOCK_ENDIF }
type ifblock_stack_obj (line 103) | struct ifblock_stack_obj {
type ifblock_type (line 104) | enum ifblock_type
type text_object (line 105) | struct text_object
type ifblock_stack_obj (line 106) | struct ifblock_stack_obj
function push_ifblock (line 118) | static int push_ifblock(struct ifblock_stack_obj **ifblock_stack_top,
function obj_be_ifblock_if (line 161) | int obj_be_ifblock_if(void **opaque, struct text_object *obj) {
function obj_be_ifblock_else (line 165) | int obj_be_ifblock_else(void **opaque, struct text_object *obj) {
function obj_be_ifblock_endif (line 169) | int obj_be_ifblock_endif(void **opaque, struct text_object *obj) {
function ifblock_stack_empty (line 177) | int ifblock_stack_empty(void **opaque) {
function obj_be_plain_text (line 181) | void obj_be_plain_text(struct text_object *obj, const char *text) {
FILE: src/content/text_object.h
function draw_mode_t (line 39) | enum class draw_mode_t : uint32_t {
type conky (line 97) | typedef conky::callback_handle<legacy_cb> legacy_cb_handle;
type conky (line 98) | typedef conky::callback_handle<exec_cb> exec_cb_handle;
type text_object (line 111) | struct text_object {
type text_object (line 138) | struct text_object
type text_object (line 138) | struct text_object
type text_object (line 146) | struct text_object
type text_object (line 147) | struct text_object
type text_object (line 148) | struct text_object
type text_object (line 152) | struct text_object
FILE: src/core.cc
type text_object (line 153) | struct text_object
type text_object (line 154) | struct text_object
type text_object (line 155) | struct text_object
type text_object (line 159) | struct text_object
type text_object (line 160) | struct text_object
function stock_parse_arg (line 171) | void stock_parse_arg(struct text_object *obj, const char *arg) {
function legacy_cb_handle (line 367) | legacy_cb_handle *create_cb_handle(int (*fn)()) {
type text_object (line 375) | struct text_object
type text_object (line 379) | struct text_object
type text_object (line 1101) | struct text_object
type text_object (line 1105) | struct text_object
type text_object (line 1274) | struct text_object
type text_object (line 1878) | struct text_object
type text_object (line 1882) | struct text_object
function END (line 1897) | END OBJ(combine, nullptr) try {
function remove_comment (line 2068) | static size_t remove_comment(char *string, char *last) {
function remove_comments (line 2077) | size_t remove_comments(char *string) {
function extract_variable_text_internal (line 2092) | int extract_variable_text_internal(struct text_object *retval,
function extract_object_args_to_sub (line 2234) | void extract_object_args_to_sub(struct text_object *obj, const char *arg...
function free_text_objects (line 2242) | void free_text_objects(struct text_object *root) {
FILE: src/core.h
type text_object (line 35) | struct text_object
type text_object (line 41) | struct text_object
type text_object (line 44) | struct text_object
FILE: src/data/audio/audacious.cc
type aud_status (line 59) | enum aud_status { AS_NOT_RUNNING, AS_PAUSED, AS_PLAYING, AS_STOPPED }
type aud_result (line 63) | struct aud_result {
method aud_result (line 76) | aud_result()
class audacious_cb (line 88) | class audacious_cb : public conky::callback<aud_result> {
method audacious_cb (line 101) | audacious_cb(uint32_t period) : Base(period, false, Tuple()) {
function aud_result (line 188) | aud_result get_res() {
method aud_result (line 76) | aud_result()
function print_audacious_status (line 195) | void print_audacious_status(struct text_object *, char *p,
function print_audacious_title (line 201) | void print_audacious_title(struct text_object *obj, char *p,
function print_audacious_filename (line 207) | void print_audacious_filename(struct text_object *obj, char *p,
function audacious_barval (line 213) | double audacious_barval(struct text_object *) {
function print_audacious_length (line 218) | void print_audacious_length(struct text_object *, char *p,
function print_audacious_length_seconds (line 225) | void print_audacious_length_seconds(struct text_object *, char *p,
function print_audacious_position (line 230) | void print_audacious_position(struct text_object *, char *p,
function print_audacious_position_seconds (line 237) | void print_audacious_position_seconds(struct text_object *, char *p,
function print_audacious_bitrate (line 242) | void print_audacious_bitrate(struct text_object *, char *p,
function print_audacious_frequency (line 247) | void print_audacious_frequency(struct text_object *, char *p,
function print_audacious_channels (line 252) | void print_audacious_channels(struct text_object *, char *p,
function print_audacious_playlist_length (line 257) | void print_audacious_playlist_length(struct text_object *, char *p,
function print_audacious_playlist_position (line 262) | void print_audacious_playlist_position(struct text_object *, char *p,
function print_audacious_main_volume (line 267) | void print_audacious_main_volume(struct text_object *, char *p,
FILE: src/data/audio/audacious.h
type text_object (line 27) | struct text_object
type text_object (line 28) | struct text_object
type text_object (line 29) | struct text_object
type text_object (line 30) | struct text_object
type text_object (line 31) | struct text_object
type text_object (line 32) | struct text_object
type text_object (line 34) | struct text_object
type text_object (line 35) | struct text_object
type text_object (line 36) | struct text_object
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 40) | struct text_object
type text_object (line 42) | struct text_object
type text_object (line 43) | struct text_object
FILE: src/data/audio/cmus.cc
type cmus_result (line 37) | struct cmus_result {
class cmus_cb (line 55) | class cmus_cb : public conky::callback<cmus_result> {
method cmus_cb (line 62) | explicit cmus_cb(uint32_t period) : Base(period, false, Tuple()) {}
function cmus_percent (line 167) | uint8_t cmus_percent(struct text_object *obj) {
function cmus_progress (line 176) | double cmus_progress(struct text_object *obj) {
function print_cmus_totaltime (line 185) | void print_cmus_totaltime(struct text_object *obj, char *p,
function print_cmus_timeleft (line 196) | void print_cmus_timeleft(struct text_object *obj, char *p,
function print_cmus_curtime (line 206) | void print_cmus_curtime(struct text_object *obj, char *p,
FILE: src/data/audio/cmus.h
type text_object (line 26) | struct text_object
type text_object (line 27) | struct text_object
type text_object (line 28) | struct text_object
type text_object (line 29) | struct text_object
type text_object (line 30) | struct text_object
type text_object (line 31) | struct text_object
type text_object (line 32) | struct text_object
type text_object (line 33) | struct text_object
type text_object (line 34) | struct text_object
type text_object (line 35) | struct text_object
type text_object (line 36) | struct text_object
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 39) | struct text_object
type text_object (line 40) | struct text_object
type text_object (line 41) | struct text_object
type text_object (line 42) | struct text_object
FILE: src/data/audio/libmpdclient.cc
function winsock_dll_error (line 97) | static int winsock_dll_error(mpd_Connection *connection) {
function do_connect_fail (line 110) | static int do_connect_fail(mpd_Connection *connection,
function do_connect_fail (line 119) | static int do_connect_fail(mpd_Connection *connection,
function uds_connect (line 129) | static int uds_connect(mpd_Connection *connection, const char *host,
function mpd_connect (line 162) | static int mpd_connect(mpd_Connection *connection, const char *host, int...
function mpd_connect (line 231) | static int mpd_connect(mpd_Connection *connection, const char *host, int...
function mpd_ReturnElement (line 325) | static mpd_ReturnElement *mpd_newReturnElement(const char *name,
function mpd_freeReturnElement (line 336) | static void mpd_freeReturnElement(mpd_ReturnElement *re) {
function mpd_setConnectionTimeout (line 342) | void mpd_setConnectionTimeout(mpd_Connection *connection, float timeout) {
function mpd_parseWelcome (line 348) | static int mpd_parseWelcome(mpd_Connection *connection, const char *host,
function mpd_Connection (line 380) | mpd_Connection *mpd_newConnection(const char *host, int port, float time...
function mpd_clearError (line 456) | void mpd_clearError(mpd_Connection *connection) {
function mpd_closeConnection (line 461) | void mpd_closeConnection(mpd_Connection *connection) {
function mpd_executeCommand (line 471) | static void mpd_executeCommand(mpd_Connection *connection,
function mpd_getNextReturnElement (line 524) | static void mpd_getNextReturnElement(mpd_Connection *connection) {
function mpd_finishCommand (line 663) | void mpd_finishCommand(mpd_Connection *connection) {
function mpd_finishListOkCommand (line 670) | static void mpd_finishListOkCommand(mpd_Connection *connection) {
function mpd_nextListOkCommand (line 677) | int mpd_nextListOkCommand(mpd_Connection *connection) {
function mpd_sendStatusCommand (line 686) | void mpd_sendStatusCommand(mpd_Connection *connection) {
function mpd_Status (line 690) | mpd_Status *mpd_getStatus(mpd_Connection *connection) {
function mpd_freeStatus (line 808) | void mpd_freeStatus(mpd_Status *status) {
function mpd_sendStatsCommand (line 813) | void mpd_sendStatsCommand(mpd_Connection *connection) {
function mpd_Stats (line 817) | mpd_Stats *mpd_getStats(mpd_Connection *connection) {
function mpd_freeStats (line 881) | void mpd_freeStats(mpd_Stats *stats) { free(stats); }
function mpd_SearchStats (line 883) | mpd_SearchStats *mpd_getSearchStats(mpd_Connection *connection) {
function mpd_freeSearchStats (line 926) | void mpd_freeSearchStats(mpd_SearchStats *stats) { free(stats); }
function mpd_initSong (line 928) | static void mpd_initSong(mpd_Song *song) {
function mpd_finishSong (line 949) | static void mpd_finishSong(mpd_Song *song) {
function mpd_Song (line 964) | mpd_Song *mpd_newSong() {
function mpd_freeSong (line 972) | void mpd_freeSong(mpd_Song *song) {
function mpd_Song (line 977) | mpd_Song *mpd_songDup(mpd_Song *song) {
function mpd_initDirectory (line 1023) | static void mpd_initDirectory(mpd_Directory *directory) {
function mpd_finishDirectory (line 1027) | static void mpd_finishDirectory(mpd_Directory *directory) {
function mpd_Directory (line 1031) | mpd_Directory *mpd_newDirectory() {
function mpd_freeDirectory (line 1039) | void mpd_freeDirectory(mpd_Directory *directory) {
function mpd_Directory (line 1045) | mpd_Directory *mpd_directoryDup(mpd_Directory *directory) {
function mpd_initPlaylistFile (line 1055) | static void mpd_initPlaylistFile(mpd_PlaylistFile *playlist) {
function mpd_finishPlaylistFile (line 1059) | static void mpd_finishPlaylistFile(mpd_PlaylistFile *playlist) {
function mpd_PlaylistFile (line 1063) | mpd_PlaylistFile *mpd_newPlaylistFile() {
function mpd_freePlaylistFile (line 1072) | void mpd_freePlaylistFile(mpd_PlaylistFile *playlist) {
function mpd_PlaylistFile (line 1077) | mpd_PlaylistFile *mpd_playlistFileDup(mpd_PlaylistFile *playlist) {
function mpd_initInfoEntity (line 1087) | static void mpd_initInfoEntity(mpd_InfoEntity *entity) {
function mpd_finishInfoEntity (line 1091) | static void mpd_finishInfoEntity(mpd_InfoEntity *entity) {
function mpd_InfoEntity (line 1103) | mpd_InfoEntity *mpd_newInfoEntity() {
function mpd_freeInfoEntity (line 1111) | void mpd_freeInfoEntity(mpd_InfoEntity *entity) {
function mpd_sendInfoCommand (line 1116) | static void mpd_sendInfoCommand(mpd_Connection *connection, char *comman...
function mpd_InfoEntity (line 1120) | mpd_InfoEntity *mpd_getNextInfoEntity(mpd_Connection *connection) {
function mpd_sendPlaylistInfoCommand (line 1285) | void mpd_sendPlaylistInfoCommand(mpd_Connection *connection, int songPos) {
function mpd_sendPlaylistIdCommand (line 1294) | void mpd_sendPlaylistIdCommand(mpd_Connection *connection, int id) {
function mpd_sendPlChangesCommand (line 1303) | void mpd_sendPlChangesCommand(mpd_Connection *connection, long long play...
function mpd_sendPlChangesPosIdCommand (line 1312) | void mpd_sendPlChangesPosIdCommand(mpd_Connection *connection,
function mpd_sendListallCommand (line 1322) | void mpd_sendListallCommand(mpd_Connection *connection, const char *dir) {
function mpd_sendListallInfoCommand (line 1333) | void mpd_sendListallInfoCommand(mpd_Connection *connection, const char *...
function mpd_sendLsInfoCommand (line 1344) | void mpd_sendLsInfoCommand(mpd_Connection *connection, const char *dir) {
function mpd_sendCurrentSongCommand (line 1355) | void mpd_sendCurrentSongCommand(mpd_Connection *connection) {
function mpd_sendSearchCommand (line 1359) | void mpd_sendSearchCommand(mpd_Connection *connection, int table,
function mpd_sendFindCommand (line 1366) | void mpd_sendFindCommand(mpd_Connection *connection, int table,
function mpd_sendListCommand (line 1373) | void mpd_sendListCommand(mpd_Connection *connection, int table,
function mpd_sendAddCommand (line 1405) | void mpd_sendAddCommand(mpd_Connection *connection, const char *file) {
function mpd_sendAddIdCommand (line 1416) | int mpd_sendAddIdCommand(mpd_Connection *connection, const char *file) {
function mpd_sendDeleteCommand (line 1436) | void mpd_sendDeleteCommand(mpd_Connection *connection, int songPos) {
function mpd_sendDeleteIdCommand (line 1445) | void mpd_sendDeleteIdCommand(mpd_Connection *connection, int id) {
function mpd_sendSaveCommand (line 1454) | void mpd_sendSaveCommand(mpd_Connection *connection, const char *name) {
function mpd_sendLoadCommand (line 1465) | void mpd_sendLoadCommand(mpd_Connection *connection, const char *name) {
function mpd_sendRmCommand (line 1476) | void mpd_sendRmCommand(mpd_Connection *connection, const char *name) {
function mpd_sendRenameCommand (line 1487) | void mpd_sendRenameCommand(mpd_Connection *connection, const char *from,
function mpd_sendShuffleCommand (line 1501) | void mpd_sendShuffleCommand(mpd_Connection *connection) {
function mpd_sendClearCommand (line 1505) | void mpd_sendClearCommand(mpd_Connection *connection) {
function mpd_sendPlayCommand (line 1509) | void mpd_sendPlayCommand(mpd_Connection *connection, int songPos) {
function mpd_sendPlayIdCommand (line 1518) | void mpd_sendPlayIdCommand(mpd_Connection *connection, int id) {
function mpd_sendStopCommand (line 1527) | void mpd_sendStopCommand(mpd_Connection *connection) {
function mpd_sendPauseCommand (line 1531) | void mpd_sendPauseCommand(mpd_Connection *connection, int pauseMode) {
function mpd_sendNextCommand (line 1540) | void mpd_sendNextCommand(mpd_Connection *connection) {
function mpd_sendMoveCommand (line 1544) | void mpd_sendMoveCommand(mpd_Connection *connection, int from, int to) {
function mpd_sendMoveIdCommand (line 1553) | void mpd_sendMoveIdCommand(mpd_Connection *connection, int id, int to) {
function mpd_sendSwapCommand (line 1562) | void mpd_sendSwapCommand(mpd_Connection *connection, int song1, int song...
function mpd_sendSwapIdCommand (line 1571) | void mpd_sendSwapIdCommand(mpd_Connection *connection, int id1, int id2) {
function mpd_sendSeekCommand (line 1580) | void mpd_sendSeekCommand(mpd_Connection *connection, int song, int seek_...
function mpd_sendSeekIdCommand (line 1589) | void mpd_sendSeekIdCommand(mpd_Connection *connection, int id, int seek_...
function mpd_sendUpdateCommand (line 1598) | void mpd_sendUpdateCommand(mpd_Connection *connection, char *path) {
function mpd_getUpdateId (line 1609) | int mpd_getUpdateId(mpd_Connection *connection) {
function mpd_sendPrevCommand (line 1622) | void mpd_sendPrevCommand(mpd_Connection *connection) {
function mpd_sendRepeatCommand (line 1626) | void mpd_sendRepeatCommand(mpd_Connection *connection, int repeatMode) {
function mpd_sendRandomCommand (line 1635) | void mpd_sendRandomCommand(mpd_Connection *connection, int randomMode) {
function mpd_sendSetvolCommand (line 1644) | void mpd_sendSetvolCommand(mpd_Connection *connection, int volumeChange) {
function mpd_sendVolumeCommand (line 1653) | void mpd_sendVolumeCommand(mpd_Connection *connection, int volumeChange) {
function mpd_sendCrossfadeCommand (line 1662) | void mpd_sendCrossfadeCommand(mpd_Connection *connection, int seconds) {
function mpd_sendPasswordCommand (line 1671) | void mpd_sendPasswordCommand(mpd_Connection *connection, const char *pas...
function mpd_sendCommandListBegin (line 1682) | void mpd_sendCommandListBegin(mpd_Connection *connection) {
function mpd_sendCommandListOkBegin (line 1693) | void mpd_sendCommandListOkBegin(mpd_Connection *connection) {
function mpd_sendCommandListEnd (line 1705) | void mpd_sendCommandListEnd(mpd_Connection *connection) {
function mpd_sendOutputsCommand (line 1716) | void mpd_sendOutputsCommand(mpd_Connection *connection) {
function mpd_OutputEntity (line 1720) | mpd_OutputEntity *mpd_getNextOutput(mpd_Connection *connection) {
function mpd_sendEnableOutputCommand (line 1761) | void mpd_sendEnableOutputCommand(mpd_Connection *connection, int outputI...
function mpd_sendDisableOutputCommand (line 1770) | void mpd_sendDisableOutputCommand(mpd_Connection *connection, int output...
function mpd_freeOutputElement (line 1779) | void mpd_freeOutputElement(mpd_OutputEntity *output) {
function mpd_sendNotCommandsCommand (line 1785) | void mpd_sendNotCommandsCommand(mpd_Connection *connection) {
function mpd_sendCommandsCommand (line 1790) | void mpd_sendCommandsCommand(mpd_Connection *connection) {
function mpd_sendUrlHandlersCommand (line 1799) | void mpd_sendUrlHandlersCommand(mpd_Connection *connection) {
function mpd_sendTagTypesCommand (line 1807) | void mpd_sendTagTypesCommand(mpd_Connection *connection) {
function mpd_startSearch (line 1815) | void mpd_startSearch(mpd_Connection *connection, int exact) {
function mpd_startStatsSearch (line 1830) | void mpd_startStatsSearch(mpd_Connection *connection) {
function mpd_startPlaylistSearch (line 1841) | void mpd_startPlaylistSearch(mpd_Connection *connection, int exact) {
function mpd_startFieldSearch (line 1857) | void mpd_startFieldSearch(mpd_Connection *connection, int type) {
function mpd_addConstraintSearch (line 1884) | void mpd_addConstraintSearch(mpd_Connection *connection, int type,
function mpd_commitSearch (line 1924) | void mpd_commitSearch(mpd_Connection *connection) {
function mpd_sendListPlaylistInfoCommand (line 1948) | void mpd_sendListPlaylistInfoCommand(mpd_Connection *connection, char *p...
function mpd_sendListPlaylistCommand (line 1964) | void mpd_sendListPlaylistCommand(mpd_Connection *connection, char *path) {
function mpd_sendPlaylistClearCommand (line 1975) | void mpd_sendPlaylistClearCommand(mpd_Connection *connection, char *path) {
function mpd_sendPlaylistAddCommand (line 1986) | void mpd_sendPlaylistAddCommand(mpd_Connection *connection, char *playlist,
function mpd_sendPlaylistMoveCommand (line 2001) | void mpd_sendPlaylistMoveCommand(mpd_Connection *connection, char *playl...
function mpd_sendPlaylistDeleteCommand (line 2015) | void mpd_sendPlaylistDeleteCommand(mpd_Connection *connection, char *pla...
FILE: src/data/audio/libmpdclient.h
type mpd_TagItems (line 75) | typedef enum mpd_TagItems {
type mpd_ReturnElement (line 96) | typedef struct _mpd_ReturnElement {
type mpd_Connection (line 104) | typedef struct _mpd_Connection {
type mpd_Status (line 157) | typedef struct mpd_Status {
type mpd_Stats (line 207) | typedef struct _mpd_Stats {
type mpd_SearchStats (line 217) | typedef struct _mpd_SearchStats {
type mpd_Song (line 240) | typedef struct _mpd_Song {
type mpd_Directory (line 302) | typedef struct _mpd_Directory {
type mpd_PlaylistFile (line 324) | typedef struct _mpd_PlaylistFile {
type mpd_InfoEntity (line 352) | typedef struct mpd_InfoEntity {
type mpd_OutputEntity (line 518) | typedef struct _mpd_OutputEntity {
FILE: src/data/audio/mixer.cc
function mixer_init (line 59) | int mixer_init(const char *name) {
function mixer_get (line 80) | static int mixer_get(int i) {
function mixer_get_avg (line 94) | static int mixer_get_avg(int i) {
function mixer_get_left (line 100) | static int mixer_get_left(int i) { return mixer_get(i) >> 8; }
function mixer_get_right (line 102) | static int mixer_get_right(int i) { return mixer_get(i) & 0xFF; }
function mixer_is_mute (line 103) | int mixer_is_mute(int i) { return !mixer_get(i); }
function parse_mixer_arg (line 107) | void parse_mixer_arg(struct text_object *obj, const char *arg) {
function mixer_percentage (line 111) | uint8_t mixer_percentage(struct text_object *obj) {
function mixerl_percentage (line 115) | uint8_t mixerl_percentage(struct text_object *obj) {
function mixerr_percentage (line 119) | uint8_t mixerr_percentage(struct text_object *obj) {
function check_mixer_muted (line 123) | int check_mixer_muted(struct text_object *obj) {
function scan_mixer_bar (line 128) | void scan_mixer_bar(struct text_object *obj, const char *arg) {
function mixer_barval (line 141) | double mixer_barval(struct text_object *obj) {
function mixerl_barval (line 145) | double mixerl_barval(struct text_object *obj) {
function mixerr_barval (line 149) | double mixerr_barval(struct text_object *obj) {
FILE: src/data/audio/mixer.h
type text_object (line 34) | struct text_object
type text_object (line 35) | struct text_object
type text_object (line 36) | struct text_object
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 40) | struct text_object
type text_object (line 41) | struct text_object
type text_object (line 42) | struct text_object
type text_object (line 43) | struct text_object
FILE: src/data/audio/moc.cc
type moc_result (line 36) | struct moc_result {
class moc_cb (line 53) | class moc_cb : public conky::callback<moc_result> {
method moc_cb (line 60) | explicit moc_cb(uint32_t period) : Base(period, false, Tuple()) {}
function moc_barval (line 166) | double moc_barval(struct text_object * obj) {
function moc_percentage (line 186) | uint8_t moc_percentage(struct text_object *obj){
FILE: src/data/audio/moc.h
type text_object (line 26) | struct text_object
type text_object (line 27) | struct text_object
type text_object (line 30) | struct text_object
type text_object (line 31) | struct text_object
type text_object (line 32) | struct text_object
type text_object (line 33) | struct text_object
type text_object (line 34) | struct text_object
type text_object (line 35) | struct text_object
type text_object (line 36) | struct text_object
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 39) | struct text_object
type text_object (line 40) | struct text_object
type text_object (line 41) | struct text_object
type text_object (line 42) | struct text_object
type text_object (line 43) | struct text_object
FILE: src/data/audio/mpd.cc
class mpd_host_setting (line 43) | class mpd_host_setting : public conky::simple_config_setting<std::string> {
method mpd_host_setting (line 50) | mpd_host_setting() : Base("mpd_host", "localhost", false) {}
class mpd_password_setting (line 77) | class mpd_password_setting : public conky::simple_config_setting<std::st...
method mpd_password_setting (line 84) | mpd_password_setting() : Base("mpd_password", std::string(), false) {}
type mpd_result (line 115) | struct mpd_result {
class mpd_cb (line 136) | class mpd_cb : public conky::callback<mpd_result> {
method mpd_cb (line 145) | explicit mpd_cb(uint32_t period)
function mpd_result (line 304) | mpd_result get_mpd() {
function format_media_player_time (line 311) | static inline void format_media_player_time(char *buf, const int size,
function print_mpd_elapsed (line 336) | void print_mpd_elapsed(struct text_object *obj, char *p,
function print_mpd_length (line 342) | void print_mpd_length(struct text_object *obj, char *p,
function mpd_percentage (line 348) | uint8_t mpd_percentage(struct text_object *obj) {
function mpd_barval (line 353) | double mpd_barval(struct text_object *obj) {
function print_mpd_smart (line 358) | void print_mpd_smart(struct text_object *obj, char *p,
function check_mpd_playing (line 382) | int check_mpd_playing(struct text_object *obj) {
FILE: src/data/audio/mpd.h
type text_object (line 31) | struct text_object
type text_object (line 32) | struct text_object
type text_object (line 33) | struct text_object
type text_object (line 34) | struct text_object
type text_object (line 35) | struct text_object
type text_object (line 36) | struct text_object
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 39) | struct text_object
type text_object (line 40) | struct text_object
type text_object (line 41) | struct text_object
type text_object (line 42) | struct text_object
type text_object (line 43) | struct text_object
type text_object (line 44) | struct text_object
type text_object (line 45) | struct text_object
type text_object (line 46) | struct text_object
type text_object (line 47) | struct text_object
type text_object (line 48) | struct text_object
type text_object (line 49) | struct text_object
type text_object (line 50) | struct text_object
FILE: src/data/audio/pulseaudio.cc
type pulseaudio_default_results (line 41) | struct pulseaudio_default_results
type pulseaudio_default_results (line 43) | struct pulseaudio_default_results
function pa_sink_info_callback (line 60) | void pa_sink_info_callback(pa_context *c, const pa_sink_info *i, int eol,
function pa_source_info_callback (line 84) | void pa_source_info_callback(pa_context *c, const pa_source_info *i, int...
function pa_server_info_callback (line 97) | void pa_server_info_callback(pa_context *c, const pa_server_info *i,
function pa_server_sink_info_callback (line 109) | void pa_server_sink_info_callback(pa_context *c, const pa_server_info *i,
function pa_card_info_callback (line 127) | void pa_card_info_callback(pa_context *c, const pa_card_info *card, int ...
function context_state_cb (line 142) | void context_state_cb(pa_context *c, void *userdata) {
function subscribe_cb (line 172) | void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_...
function init_pulseaudio (line 222) | void init_pulseaudio(struct text_object *obj) {
function free_pulseaudio (line 314) | void free_pulseaudio(struct text_object *obj) {
function get_pulseaudio (line 339) | struct pulseaudio_default_results get_pulseaudio(struct text_object *obj) {
function puau_vol (line 346) | uint8_t puau_vol(struct text_object *obj) {
function puau_muted (line 350) | int puau_muted(struct text_object *obj) {
function puau_source_running (line 354) | int puau_source_running(struct text_object *obj) {
function puau_source_muted (line 358) | int puau_source_muted(struct text_object *obj) {
function print_puau_sink_description (line 362) | void print_puau_sink_description(struct text_object *obj, char *p,
function print_puau_sink_active_port_name (line 367) | void print_puau_sink_active_port_name(struct text_object *obj, char *p,
function print_puau_sink_active_port_description (line 373) | void print_puau_sink_active_port_description(struct text_object *obj, ch...
function print_puau_card_active_profile (line 379) | void print_puau_card_active_profile(struct text_object *obj, char *p,
function print_puau_card_name (line 385) | void print_puau_card_name(struct text_object *obj, char *p,
function puau_volumebarval (line 390) | double puau_volumebarval(struct text_object *obj) {
FILE: src/data/audio/pulseaudio.h
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 39) | struct text_object
type text_object (line 40) | struct text_object
type text_object (line 42) | struct text_object
type text_object (line 44) | struct text_object
type text_object (line 46) | struct text_object
type text_object (line 48) | struct text_object
type text_object (line 50) | struct text_object
type text_object (line 51) | struct text_object
type text_object (line 52) | struct text_object
type text_object (line 53) | struct text_object
type pulseaudio_default_results (line 55) | struct pulseaudio_default_results {
type pulseaudio_state (line 77) | enum pulseaudio_state {
function class (line 83) | class pulseaudio_c {
FILE: src/data/audio/xmms2.cc
function xmms_alloc (line 37) | static void xmms_alloc(struct information *ptr) {
function free_xmms2 (line 84) | void free_xmms2(struct text_object *obj) {
function connection_lost (line 98) | void connection_lost(void *p) {
function handle_curent_id (line 111) | int handle_curent_id(xmmsv_t *value, void *p) {
function handle_playtime (line 196) | int handle_playtime(xmmsv_t *value, void *p) {
function handle_playback_state_change (line 215) | int handle_playback_state_change(xmmsv_t *value, void *p) {
function handle_playlist_loaded (line 249) | int handle_playlist_loaded(xmmsv_t *value, void *p) {
function handle_medialib_changed (line 269) | int handle_medialib_changed(xmmsv_t *value, void *p) {
function update_xmms2 (line 287) | int update_xmms2(void) {
function print_xmms2_tracknr (line 352) | void print_xmms2_tracknr(struct text_object *obj, char *p,
function print_xmms2_elapsed (line 360) | void print_xmms2_elapsed(struct text_object *obj, char *p,
function print_xmms2_duration (line 367) | void print_xmms2_duration(struct text_object *obj, char *p,
function xmms2_barval (line 374) | double xmms2_barval(struct text_object *obj) {
function print_xmms2_smart (line 380) | void print_xmms2_smart(struct text_object *obj, char *p,
function if_xmms2_connected (line 418) | int if_xmms2_connected(struct text_object *obj) {
FILE: src/data/audio/xmms2.h
type xmms2_s (line 34) | struct xmms2_s {
type text_object (line 59) | struct text_object
type text_object (line 60) | struct text_object
type text_object (line 61) | struct text_object
type text_object (line 62) | struct text_object
type text_object (line 63) | struct text_object
type text_object (line 64) | struct text_object
type text_object (line 65) | struct text_object
type text_object (line 66) | struct text_object
type text_object (line 67) | struct text_object
type text_object (line 68) | struct text_object
type text_object (line 69) | struct text_object
type text_object (line 70) | struct text_object
type text_object (line 71) | struct text_object
type text_object (line 72) | struct text_object
type text_object (line 73) | struct text_object
type text_object (line 74) | struct text_object
type text_object (line 75) | struct text_object
type text_object (line 76) | struct text_object
type text_object (line 77) | struct text_object
type text_object (line 78) | struct text_object
type text_object (line 80) | struct text_object
FILE: src/data/data-source.cc
type conky (line 31) | namespace conky {
function data_source_base (line 51) | data_source_base &get_data_source(lua::state *l) {
function data_source_asnumber (line 64) | int data_source_asnumber(lua::state *l) {
function data_source_astext (line 70) | int data_source_astext(lua::state *l) {
type priv (line 88) | namespace priv {
function do_register_data_source (line 89) | void do_register_data_source(const std::string &name,
function export_data_sources (line 132) | void export_data_sources(lua::state &l) {
FILE: src/data/data-source.hh
type conky (line 32) | namespace conky {
class data_source_base (line 45) | class data_source_base {
method data_source_base (line 49) | explicit data_source_base(const std::string &name_) : name(name_) {}
class simple_numeric_source (line 63) | class simple_numeric_source : public data_source_base {
method simple_numeric_source (line 70) | simple_numeric_source(lua::state *, const std::string &name_,
method get_number (line 74) | virtual double get_number() const { return *source; }
type priv (line 81) | namespace priv {
class disabled_data_source (line 87) | class disabled_data_source : public simple_numeric_source<float> {
class register_data_source (line 101) | class register_data_source {
method factory (line 103) | static int factory(lua::state *l, const std::string &name,
method register_data_source (line 116) | explicit register_data_source(const std::string &name, Args &&...arg...
class register_disabled_data_source (line 128) | class register_disabled_data_source
FILE: src/data/entropy.cc
type _entropy (line 55) | struct _entropy {
method _entropy (line 56) | _entropy() = default;
function update_entropy (line 63) | int update_entropy() {
function print_entropy_avail (line 69) | void print_entropy_avail(struct text_object *obj, char *p,
function entropy_percentage (line 75) | uint8_t entropy_percentage(struct text_object *obj) {
function print_entropy_poolsize (line 81) | void print_entropy_poolsize(struct text_object *obj, char *p,
function entropy_barval (line 87) | double entropy_barval(struct text_object *obj) {
function print_password (line 93) | void print_password(struct text_object *obj, char *p, unsigned int p_max...
FILE: src/data/entropy.h
type text_object (line 35) | struct text_object
type text_object (line 36) | struct text_object
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 39) | struct text_object
FILE: src/data/exec.cc
type execi_data (line 45) | struct execi_data {
method execi_data (line 48) | execi_data() = default;
function FILE (line 85) | static FILE *pid_popen(const char *command, const char *mode, pid_t *chi...
function remove_deleted_chars (line 171) | static void remove_deleted_chars(char *string, unsigned int p_max_size) {
function get_barnum (line 197) | static inline double get_barnum(const char *buf) {
function fill_p (line 225) | void fill_p(const char *buffer, struct text_object *obj, char *p,
function scan_exec_arg (line 246) | void scan_exec_arg(struct text_object *obj, const char *arg,
function register_exec (line 303) | void register_exec(struct text_object *obj) {
function register_execi (line 320) | void register_execi(struct text_object *obj) {
function print_exec (line 340) | void print_exec(struct text_object *obj, char *p, unsigned int p_max_siz...
function execbarval (line 352) | double execbarval(struct text_object *obj) {
function free_exec (line 364) | void free_exec(struct text_object *obj) {
function free_execi (line 375) | void free_execi(struct text_object *obj) {
FILE: src/data/exec.h
type text_object (line 75) | struct text_object
type text_object (line 76) | struct text_object
type text_object (line 77) | struct text_object
type text_object (line 78) | struct text_object
type text_object (line 79) | struct text_object
type text_object (line 80) | struct text_object
type text_object (line 81) | struct text_object
FILE: src/data/fs.cc
type fs_stat (line 73) | struct fs_stat
type fs_stat (line 74) | struct fs_stat
type fs_stat (line 76) | struct fs_stat
function update_fs_stats (line 80) | int update_fs_stats() {
function clear_fs_stats (line 93) | void clear_fs_stats() {
type fs_stat (line 100) | struct fs_stat
type fs_stat (line 101) | struct fs_stat
type fs_stat (line 137) | struct fs_stat
type statvfs (line 139) | struct statvfs
type statfs_struct (line 147) | struct statfs_struct
function get_fs_type (line 169) | void get_fs_type(const char *path, char *result) {
function init_fs_bar (line 231) | void init_fs_bar(struct text_object *obj, const char *arg) {
function get_fs_perc (line 242) | static double get_fs_perc(struct text_object *obj, bool get_free) {
function fs_barval (line 258) | double fs_barval(struct text_object *obj) { return get_fs_perc(obj, fals...
function fs_free_barval (line 260) | double fs_free_barval(struct text_object *obj) {
function init_fs (line 264) | void init_fs(struct text_object *obj, const char *arg) {
function fs_free_percentage (line 268) | uint8_t fs_free_percentage(struct text_object *obj) {
function fs_used_percentage (line 272) | uint8_t fs_used_percentage(struct text_object *obj) {
function print_fs_type (line 287) | void print_fs_type(struct text_object *obj, char *p, unsigned int p_max_...
FILE: src/data/fs.h
type fs_stat (line 36) | struct fs_stat {
type text_object (line 47) | struct text_object
type text_object (line 49) | struct text_object
type text_object (line 50) | struct text_object
type text_object (line 51) | struct text_object
type text_object (line 53) | struct text_object
type text_object (line 54) | struct text_object
type text_object (line 55) | struct text_object
type text_object (line 56) | struct text_object
type text_object (line 57) | struct text_object
type text_object (line 58) | struct text_object
type text_object (line 59) | struct text_object
type fs_stat (line 62) | struct fs_stat
FILE: src/data/hardware/apcupsd.cc
type _apcupsd_items (line 35) | enum _apcupsd_items {
type apcupsd_s (line 52) | struct apcupsd_s {
function net_recv_ex (line 64) | static int net_recv_ex(int sock, void *buf, int size, struct timeval *tv) {
function net_recv (line 100) | static int net_recv(int sock, void *buf, int size) {
function get_line (line 118) | static int get_line(int sock, char line[], short linesize) {
function fill_items (line 155) | static int fill_items(int sock, PAPCUPSD_S apc) {
function update_apcupsd (line 179) | int update_apcupsd() {
function apcupsd_scan_arg (line 249) | int apcupsd_scan_arg(const char *arg) {
function apcupsd_loadbarval (line 259) | double apcupsd_loadbarval(struct text_object *obj) {
FILE: src/data/hardware/apcupsd.h
type text_object (line 32) | struct text_object
type text_object (line 34) | struct text_object
type text_object (line 35) | struct text_object
type text_object (line 36) | struct text_object
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 39) | struct text_object
type text_object (line 40) | struct text_object
type text_object (line 41) | struct text_object
type text_object (line 42) | struct text_object
type text_object (line 43) | struct text_object
type text_object (line 44) | struct text_object
FILE: src/data/hardware/bsdapm.cc
function apm_getinfo (line 70) | static bool apm_getinfo(int fd, apm_info *aip) {
function print_apm_adapter (line 74) | void print_apm_adapter(struct text_object *obj, char *p,
function print_apm_battery_life (line 113) | void print_apm_battery_life(struct text_object *obj, char *p,
function print_apm_battery_time (line 148) | void print_apm_battery_time(struct text_object *obj, char *p,
FILE: src/data/hardware/bsdapm.h
type text_object (line 32) | struct text_object
type text_object (line 33) | struct text_object
type text_object (line 34) | struct text_object
FILE: src/data/hardware/cpu.cc
function has_tsc_reg (line 58) | uint8_t has_tsc_reg(void) {
function uintmax_t (line 78) | uintmax_t rdtsc(void) {
function get_cpu_clock_speed (line 114) | void get_cpu_clock_speed(char *str1, unsigned int p_max_size) {
function print_freq2 (line 128) | void print_freq2(struct text_object *obj, char *p, unsigned int p_max_si...
FILE: src/data/hardware/cpu.h
type text_object (line 37) | struct text_object
FILE: src/data/hardware/diskio.cc
type diskio_stat (line 44) | struct diskio_stat
function clear_diskio_stats (line 46) | void clear_diskio_stats() {
type diskio_stat (line 56) | struct diskio_stat
type stat (line 57) | struct stat
type diskio_stat (line 61) | struct diskio_stat
function parse_diskio_arg (line 130) | void parse_diskio_arg(struct text_object *obj, const char *arg) {
function print_diskio_dir (line 139) | static void print_diskio_dir(struct text_object *obj, int dir, char *p,
function print_diskio (line 159) | void print_diskio(struct text_object *obj, char *p, unsigned int p_max_s...
function print_diskio_read (line 163) | void print_diskio_read(struct text_object *obj, char *p,
function print_diskio_write (line 168) | void print_diskio_write(struct text_object *obj, char *p,
function parse_diskiograph_arg (line 174) | void parse_diskiograph_arg(struct text_object *obj, const char *arg) {
function diskiographval (line 182) | double diskiographval(struct text_object *obj) {
function diskiographval_read (line 188) | double diskiographval_read(struct text_object *obj) {
function diskiographval_write (line 194) | double diskiographval_write(struct text_object *obj) {
function update_diskio_values (line 201) | void update_diskio_values(struct diskio_stat *ds, unsigned int reads,
FILE: src/data/hardware/diskio.h
type diskio_stat (line 49) | struct diskio_stat
type diskio_stat (line 62) | struct diskio_stat
type diskio_stat (line 64) | struct diskio_stat
type diskio_stat (line 67) | struct diskio_stat
type text_object (line 69) | struct text_object
type text_object (line 70) | struct text_object
type text_object (line 71) | struct text_object
type text_object (line 72) | struct text_object
type text_object (line 74) | struct text_object
type text_object (line 75) | struct text_object
type text_object (line 76) | struct text_object
type text_object (line 77) | struct text_object
FILE: src/data/hardware/hddtemp.cc
class hdd_info (line 50) | class hdd_info {
method hdd_info (line 52) | hdd_info() : next(0) {}
method reset (line 57) | void reset() {
function __free_hddtemp_info (line 67) | static void __free_hddtemp_info(hdd_info *hdi) {
function free_hddtemp_info (line 73) | static void free_hddtemp_info(void) {
function add_hddtemp_info (line 80) | static void add_hddtemp_info(char *dev, short temp, char unit) {
type addrinfo (line 97) | struct addrinfo
function read_hdd_val (line 145) | static int read_hdd_val(const char *line, char **dev, short *val, char *...
function update_hddtemp (line 186) | int update_hddtemp(void) {
function free_hddtemp (line 210) | void free_hddtemp(struct text_object *obj) {
function get_hddtemp_info (line 215) | static int get_hddtemp_info(const char *dev, short *val, char *unit) {
function print_hddtemp (line 230) | void print_hddtemp(struct text_object *obj, char *p, unsigned int p_max_...
FILE: src/data/hardware/hddtemp.h
type text_object (line 30) | struct text_object
type text_object (line 31) | struct text_object
FILE: src/data/hardware/i8k.cc
type _i8k (line 39) | struct _i8k {
function update_i8k (line 56) | int update_i8k(void) {
function print_i8k_fan_status (line 89) | static void print_i8k_fan_status(char *p, int p_max_size, const char *st...
function print_i8k_left_fan_status (line 98) | void print_i8k_left_fan_status(struct text_object *obj, char *p,
function print_i8k_cpu_temp (line 104) | void print_i8k_cpu_temp(struct text_object *obj, char *p,
function print_i8k_right_fan_status (line 114) | void print_i8k_right_fan_status(struct text_object *obj, char *p,
function print_i8k_ac_status (line 120) | void print_i8k_ac_status(struct text_object *obj, char *p,
FILE: src/data/hardware/i8k.h
type text_object (line 35) | struct text_object
type text_object (line 36) | struct text_object
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 39) | struct text_object
type text_object (line 40) | struct text_object
type text_object (line 41) | struct text_object
type text_object (line 42) | struct text_object
type text_object (line 43) | struct text_object
type text_object (line 44) | struct text_object
FILE: src/data/hardware/ibm.cc
function get_ibm_acpi_fan (line 75) | void get_ibm_acpi_fan(struct text_object *obj, char *p,
function get_ibm_acpi_temps (line 127) | int get_ibm_acpi_temps(void) {
function get_ibm_acpi_volume (line 167) | void get_ibm_acpi_volume(struct text_object *obj, char *p,
function get_ibm_acpi_brightness (line 217) | void get_ibm_acpi_brightness(struct text_object *obj, char *p,
function get_ibm_acpi_thinklight (line 257) | void get_ibm_acpi_thinklight(struct text_object *obj, char *p,
function parse_ibm_temps_arg (line 288) | void parse_ibm_temps_arg(struct text_object *obj, const char *arg) {
function print_ibm_temps (line 298) | void print_ibm_temps(struct text_object *obj, char *p,
FILE: src/data/hardware/ibm.h
type text_object (line 28) | struct text_object
type text_object (line 30) | struct text_object
type text_object (line 31) | struct text_object
type text_object (line 32) | struct text_object
type text_object (line 34) | struct text_object
type text_object (line 35) | struct text_object
FILE: src/data/hardware/intel_backlight.cc
type backlight (line 34) | struct backlight {
function open_backlight (line 41) | void open_backlight(struct backlight *bl) {
function read_backlight (line 52) | void read_backlight(struct backlight *bl) {
function get_backlight_percent (line 76) | unsigned get_backlight_percent(struct backlight *bl) {
function close_backlight (line 85) | void close_backlight(struct backlight *bl) {
function init_intel_backlight (line 90) | void init_intel_backlight(struct text_object *obj) {
function free_intel_backlight (line 96) | void free_intel_backlight(struct text_object *obj) {
function print_intel_backlight (line 102) | void print_intel_backlight(struct text_object *obj, char *p,
FILE: src/data/hardware/intel_backlight.h
type text_object (line 34) | struct text_object
type text_object (line 35) | struct text_object
type text_object (line 36) | struct text_object
FILE: src/data/hardware/nvidia.cc
type _ARG_ID (line 147) | enum _ARG_ID {
type _TARGET_ID (line 214) | enum _TARGET_ID {
type _ATTR_ID (line 258) | enum _ATTR_ID {
type _QUERY_ID (line 287) | enum _QUERY_ID {
type _SEARCH_ID (line 295) | enum _SEARCH_ID {
class nvidia_s (line 324) | class nvidia_s {
method nvidia_s (line 326) | nvidia_s()
type nvidia_c_value (line 349) | struct nvidia_c_value {
type nvidia_c_string (line 355) | struct nvidia_c_string {
function close_nvdisplay (line 375) | void close_nvdisplay(Display *dp) { XCloseDisplay(dp); }
class nvidia_display_setting (line 379) | class nvidia_display_setting
method nvidia_display_setting (line 390) | nvidia_display_setting() : Base("nvidia_display", std::string(), false...
function unique_display_t (line 404) | unique_display_t nvidia_display_setting::get_nvdisplay() {
function set_nvidia_query (line 426) | int set_nvidia_query(struct text_object *obj, const char *arg,
function get_nvidia_target_count (line 699) | static inline int get_nvidia_target_count(Display *dpy, TARGET_ID tid) {
function cache_nvidia_value (line 720) | static int cache_nvidia_value(TARGET_ID tid, ATTR_ID aid, Display *dpy,
function get_nvidia_value (line 760) | static int get_nvidia_value(TARGET_ID tid, ATTR_ID aid, int gid,
function cache_nvidia_string_value_update (line 811) | void cache_nvidia_string_value_update(nvidia_c_string *ac_string, char *...
function cache_nvidia_string_value_noupdate (line 843) | void cache_nvidia_string_value_noupdate(nvidia_c_string *ac_string, char...
function cache_nvidia_string_value (line 867) | static int cache_nvidia_string_value(TARGET_ID tid, ATTR_ID aid, char *t...
function get_nvidia_string_value (line 884) | static int get_nvidia_string_value(TARGET_ID tid, ATTR_ID aid, char *token,
function validate_target_id (line 937) | bool validate_target_id(Display *dpy, int target_id, ATTR_ID attribute) {
function print_nvidia_value (line 956) | void print_nvidia_value(struct text_object *obj, char *p,
function get_nvidia_barval (line 1063) | double get_nvidia_barval(struct text_object *obj) {
function free_nvidia (line 1187) | void free_nvidia(struct text_object *obj) {
FILE: src/data/hardware/nvidia.h
type text_object (line 35) | struct text_object
type text_object (line 36) | struct text_object
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
FILE: src/data/hardware/smapi.cc
function smapi_read_int (line 35) | static int smapi_read_int(const char *path) {
function smapi_bat_installed_internal (line 45) | static int smapi_bat_installed_internal(int idx) {
function smapi_get_bat_int (line 82) | static int smapi_get_bat_int(int idx, const char *fname) {
function print_smapi (line 113) | void print_smapi(struct text_object *obj, char *p, unsigned int p_max_si...
function smapi_bat_percentage (line 123) | uint8_t smapi_bat_percentage(struct text_object *obj) {
function print_smapi_bat_temp (line 135) | void print_smapi_bat_temp(struct text_object *obj, char *p,
function print_smapi_bat_power (line 148) | void print_smapi_bat_power(struct text_object *obj, char *p,
function smapi_bat_barval (line 161) | double smapi_bat_barval(struct text_object *obj) {
function smapi_bat_installed (line 167) | int smapi_bat_installed(struct text_object *obj) {
FILE: src/data/hardware/smapi.h
type text_object (line 27) | struct text_object
type text_object (line 28) | struct text_object
type text_object (line 29) | struct text_object
type text_object (line 30) | struct text_object
type text_object (line 31) | struct text_object
type text_object (line 32) | struct text_object
FILE: src/data/hardware/sony.cc
function get_sony_fanspeed (line 46) | void get_sony_fanspeed(struct text_object *obj, char *p_client_buffer,
FILE: src/data/hardware/sony.h
type text_object (line 34) | struct text_object
FILE: src/data/ical.cc
type ical_event (line 29) | struct ical_event {
type obj_ical (line 35) | struct obj_ical {
type ical_event (line 36) | struct ical_event
type ical_event (line 46) | struct ical_event
type ical_event (line 46) | struct ical_event
type ical_event (line 48) | struct ical_event
type ical_event (line 72) | struct ical_event
type ical_event (line 72) | struct ical_event
type ical_event (line 73) | struct ical_event
function parse_ical_args (line 101) | void parse_ical_args(struct text_object *obj, const char *arg,
function print_ical (line 160) | void print_ical(struct text_object *obj, char *p, unsigned int p_max_siz...
function free_ical (line 181) | void free_ical(struct text_object *obj) {
FILE: src/data/ical.h
type text_object (line 28) | struct text_object
type text_object (line 29) | struct text_object
type text_object (line 30) | struct text_object
FILE: src/data/iconv_tools.cc
function register_iconv (line 45) | int register_iconv(iconv_t *new_iconv) {
function free_iconv (line 55) | void free_iconv(struct text_object *obj) {
function iconv_convert (line 72) | void iconv_convert(size_t *a, char *buff_in, char *p, size_t p_max_size) {
function init_iconv_start (line 107) | void init_iconv_start(struct text_object *obj, void *free_at_crash,
function init_iconv_stop (line 132) | void init_iconv_stop(void) { iconv_converting = 0; }
function print_iconv_start (line 134) | void print_iconv_start(struct text_object *obj, char *p,
function print_iconv_stop (line 143) | void print_iconv_stop(struct text_object *obj, char *p,
FILE: src/data/iconv_tools.h
type text_object (line 33) | struct text_object
type text_object (line 35) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 39) | struct text_object
FILE: src/data/misc.cc
function read_file (line 43) | static inline void read_file(const char *data, char *buf, const int size) {
function file_buffer_size (line 63) | static inline unsigned int file_buffer_size(const char *data,
function print_cat (line 72) | void print_cat(struct text_object *obj, char *p, unsigned int p_max_size) {
function print_catp (line 76) | void print_catp(struct text_object *obj, char *p, unsigned int p_max_siz...
function print_startcase (line 88) | void print_startcase(struct text_object *obj, char *p,
function print_lowercase (line 102) | void print_lowercase(struct text_object *obj, char *p,
function print_uppercase (line 110) | void print_uppercase(struct text_object *obj, char *p,
function strip_trailing_whitespace (line 118) | void strip_trailing_whitespace(struct text_object *obj, char *p,
function apply_base_multiplier (line 132) | long long int apply_base_multiplier(const char *s, long long int num) {
FILE: src/data/misc.h
type text_object (line 36) | struct text_object
type text_object (line 37) | struct text_object
type text_object (line 38) | struct text_object
type text_object (line 39) | struct text_object
type text_object (line 40) | struct text_object
type text_object (line 41) | struct text_object
FILE: src/data/mysql.cc
function mysql_finish (line 47) | void mysql_finish(MYSQL *conn, MYSQL_RES *res) {
function print_mysql (line 53) | void print_mysql(struct text_object *obj, char *p, unsigned int p_max_si...
FILE: src/data/mysql.h
type text_object (line 28) | struct text_object
FILE: src/data/network/ccurl_thread.cc
type priv (line 45) | namespace priv {
type headers_ (line 113) | struct headers_ {
type curl_slist (line 114) | struct curl_slist
method headers_ (line 116) | headers_() : h(nullptr) {}
class simple_curl_cb (line 161) | class simple_curl_cb : public curl_callback<std::string> {
method process_data (line 165) | virtual void process_data() {
method simple_curl_cb (line 171) | simple_curl_cb(uint32_t period, const std::string &uri)
type curl_data (line 180) | struct curl_data {
function ccurl_process_info (line 186) | void ccurl_process_info(char *p, int p_max_size, const std::string &uri,
function curl_parse_arg (line 194) | void curl_parse_arg(struct text_object *obj, const char *arg) {
function curl_print (line 223) | void curl_print(struct text_object *obj, char *p, unsigned int p_max_siz...
function curl_obj_free (line 233) | void curl_obj_free(struct text_object *obj) {
FILE: src/data/network/ccurl_thread.h
function namespace (line 33) | namespace priv {
type conky (line 66) | typedef conky::callback<Result, std::string, Keys...> Base1;
type priv (line 67) | typedef priv::curl_internal Base2;
type text_object (line 86) | struct text_object
type text_object (line 87) | struct text_object
type text_object (line 88) | struct text_object
FILE: src/data/network/irc.cc
type ll_text (line 33) | struct ll_text {
type ll_text (line 35) | struct ll_text
type obj_irc (line 38) | struct obj_irc {
type ctx (line 44) | struct ctx {
type ll_text (line 47) | struct ll_text
function ev_connected (line 50) | void ev_connected(irc_session_t *session, const char *, const char *,
function addmessage (line 58) | void addmessage(struct ctx *ctxptr, char *nick, const char *text) {
function ev_talkinchan (line 95) | void ev_talkinchan(irc_session_t *session, const char *, const char *ori...
function ev_num (line 104) | void ev_num(irc_session_t *session, unsigned int event, const char *,
type obj_irc (line 129) | struct obj_irc
type obj_irc (line 129) | struct obj_irc
type ctx (line 130) | struct ctx
type ll_text (line 47) | struct ll_text
type ctx (line 130) | struct ctx
type ll_text (line 47) | struct ll_text
type ctx (line 130) | struct ctx
type ll_text (line 47) | struct ll_text
function parse_irc_args (line 183) | void parse_irc_args(struct text_object *obj, const char *arg) {
function print_irc (line 193) | void print_irc(struct text_object *obj, char *p, unsigned int p_max_size) {
function free_irc (line 215) | void free_irc(struct text_object *obj) {
FILE: src/data/network/irc.h
type text_object (line 28) | struct text_object
type text_object (line 29) | struct text_object
type text_object (line 30) | struct text_object
FILE: src/data/network/libtcp-portmon.cc
type tcp_connection_t (line 47) | struct tcp_connection_t {
type in6_addr (line 49) | struct in6_addr
type in6_addr (line 50) | struct in6_addr
type tcp_connection_hash (line 56) | struct tcp_connection_hash {
type port_range_hash (line 94) | struct port_range_hash {
type _tcp_port_monitor_t (line 108) | struct _tcp_port_monitor_t {
method _tcp_port_monitor_t (line 115) | _tcp_port_monitor_t(int max_connections)
method _tcp_port_monitor_t (line 120) | _tcp_port_monitor_t(const _tcp_port_monitor_t &other)
method rebuild_peek_table (line 128) | void rebuild_peek_table() {
type _tcp_port_monitor_collection_t (line 152) | struct _tcp_port_monitor_collection_t {
function age_tcp_port_monitor (line 164) | void age_tcp_port_monitor(monitor_hash_t::value_type &monitor, void *p_v...
function rebuild_tcp_port_monitor_peek_table (line 185) | void rebuild_tcp_port_monitor_peek_table(monitor_hash_t::value_type &mon...
function show_connection_to_tcp_port_monitor (line 194) | void show_connection_to_tcp_port_monitor(monitor_hash_t::value_type &mon...
function for_each_tcp_port_monitor_in_collection (line 241) | void for_each_tcp_port_monitor_in_collection(
type sockaddr_in (line 258) | struct sockaddr_in
type sockaddr_in6 (line 259) | struct sockaddr_in6
type sockaddr (line 260) | struct sockaddr
function is_4on6 (line 264) | bool is_4on6(const struct in6_addr *addr) {
function print_host (line 270) | void print_host(char *p_buffer, size_t buffer_size, const struct in6_add...
function string_to_addr (line 293) | void string_to_addr(struct in6_addr *addr, const char *p_buffer) {
function process_file (line 309) | void process_file(tcp_port_monitor_collection_t *p_collection,
function peek_tcp_port_monitor (line 366) | int peek_tcp_port_monitor(const tcp_port_monitor_t *p_monitor, int item,
function tcp_port_monitor_collection_t (line 454) | tcp_port_monitor_collection_t *create_tcp_port_monitor_collection(void) {
function destroy_tcp_port_monitor_collection (line 460) | void destroy_tcp_port_monitor_collection(
function update_tcp_port_monitor_collection (line 466) | void update_tcp_port_monitor_collection(
function insert_new_tcp_port_monitor_into_collection (line 484) | int insert_new_tcp_port_monitor_into_collection(
function tcp_port_monitor_t (line 497) | tcp_port_monitor_t *find_tcp_port_monitor(
FILE: src/data/network/libtcp-portmon.h
type tcp_port_monitor_peekables (line 48) | enum tcp_port_monitor_peekables {
type tcp_port_monitor_t (line 66) | typedef struct _tcp_port_monitor_t tcp_port_monitor_t;
type tcp_port_monitor_collection_t (line 74) | typedef struct _tcp_port_monitor_collection_t tcp_port_monitor_collectio...
type tcp_port_monitor_args_t (line 83) | typedef struct _tcp_port_monitor_args_t {
FILE: src/data/network/mail.cc
type local_mail_s (line 62) | struct local_mail_s {
class mail_fail (line 82) | class mail_fail : public std::runtime_error {
method mail_fail (line 84) | explicit mail_fail(const std::string &what_arg) : runtime_error(what_a...
type mail_result (line 101) | struct mail_result {
method mail_result (line 106) | mail_result() = default;
class mail_cb (line 109) | class mail_cb
method resolve_host (line 122) | void resolve_host() {
method connect (line 137) | int connect() {
method merge (line 149) | void merge(callback_base &&other) override {
method mail_cb (line 159) | mail_cb(uint32_t period, const Tuple &tuple, uint16_t retries_)
type mail_param_ex (line 170) | struct mail_param_ex : public mail_cb::Tuple {
method mail_param_ex (line 174) | mail_param_ex() = default;
class imap_cb (line 177) | class imap_cb : public mail_cb {
method imap_cb (line 187) | imap_cb(uint32_t period, const Tuple &tuple, uint16_t retries_)
class pop3_cb (line 191) | class pop3_cb : public mail_cb {
method pop3_cb (line 198) | pop3_cb(uint32_t period, const Tuple &tuple, uint16_t retries_)
type mail_param_ex (line 202) | struct mail_param_ex
method mail_param_ex (line 174) | mail_param_ex() = default;
function update_mail_count (line 205) | static void update_mail_count(struct local_mail_s *mail) {
function parse_local_mail_args (line 406) | void parse_local_mail_args(struct text_object *obj, const char *arg) {
function free_local_mails (line 453) | void free_local_mails(struct text_object *obj) {
type mail_type (line 465) | enum mail_type { POP3_TYPE, IMAP_TYPE }
function parse_mail_args (line 468) | std::unique_ptr<mail_param_ex> parse_mail_args(mail_type type,
function parse_imap_mail_args (line 561) | void parse_imap_mail_args(struct text_object *obj, const char *arg) {
function parse_pop3_mail_args (line 582) | void parse_pop3_mail_args(struct text_object *obj, const char *arg) {
class mail_setting (line 604) | class mail_setting : public conky::simple_config_setting<std::string> {
method lua_setter (line 610) | void lua_setter(lua::state &l, bool init) override {
method cleanup (line 625) | void cleanup(lua::state &l) override {
method mail_setting (line 635) | mail_setting(const std::string &name, mail_type type_)
function free_mail_obj (line 643) | void free_mail_obj(struct text_object *obj) {
function command (line 653) | static void command(int sockfd, const std::string &cmd, char *response,
type timeval (line 725) | struct timeval
function print_imap_unseen (line 892) | void print_imap_unseen(struct text_object *obj, char *p,
function print_imap_messages (line 903) | void print_imap_messages(struct text_object *obj, char *p,
function print_pop3_unseen (line 965) | void print_pop3_unseen(struct text_object *obj, char *p,
function print_pop3_used (line 976) | void print_pop3_used(struct text_object *obj, char *p,
FILE: src/data/network/mail.h
type text_object (line 30) | struct text_object
type text_object (line 53) | struct text_object
type text_object (line 54) | struct text_object
type text_object (line 55) | struct text_object
type text_object (line 56) | struct text_object
type text_object (line 57) | struct text_object
type text_object (line 58) | struct text_object
type text_object (line 59) | struct text_object
function namespace (line 61) | namespace priv {
FILE: src/data/network/mboxscan.cc
type ring_list (line 44) | struct ring_list {
type ring_list (line 47) | struct ring_list
type ring_list (line 48) | struct ring_list
function mbox_scan (line 63) | static void mbox_scan(char *args, char *output, size_t max_len) {
type mboxscan_data (line 363) | struct mboxscan_data {
function parse_mboxscan_arg (line 368) | void parse_mboxscan_arg(struct text_object *obj, const char *arg) {
function print_mboxscan (line 382) | void print_mboxscan(struct text_object *obj, char *p, unsigned int p_max...
function free_mboxscan (line 391) | void free_mboxscan(struct text_object *obj) {
FILE: src/data/network/mboxscan.h
type text_object (line 33) | struct text_object
type text_object (line 34) | struct text_object
type text_object (line 35) | struct text_object
FILE: src/data/network/net_stat.cc
type if_up_strictness_ (line 62) | enum if_up_strictness_ { IFUP_UP, IFUP_LINK, IFUP_ADDR }
type net_stat (line 74) | struct net_stat
type net_stat (line 75) | struct net_stat
type net_stat (line 85) | struct net_stat
function parse_net_stat_arg (line 119) | void parse_net_stat_arg(struct text_object *obj, const char *arg,
function parse_net_stat_bar_arg (line 193) | void parse_net_stat_bar_arg(struct text_object *obj, const char *arg,
function print_downspeed (line 206) | void print_downspeed(struct text_object *obj, char *p,
function print_downspeedf (line 215) | void print_downspeedf(struct text_object *obj, char *p,
function print_upspeed (line 224) | void print_upspeed(struct text_object *obj, char *p, unsigned int p_max_...
function print_upspeedf (line 232) | void print_upspeedf(struct text_object *obj, char *p, unsigned int p_max...
function print_totaldown (line 240) | void print_totaldown(struct text_object *obj, char *p,
function print_totalup (line 249) | void print_totalup(struct text_object *obj, char *p, unsigned int p_max_...
function print_addr (line 257) | void print_addr(struct text_object *obj, char *p, unsigned int p_max_siz...
function print_addrs (line 273) | void print_addrs(struct text_object *obj, char *p, unsigned int p_max_si...
function print_v6addrs (line 287) | void print_v6addrs(struct text_object *obj, char *p, unsigned int p_max_...
function parse_net_stat_graph_arg (line 333) | void parse_net_stat_graph_arg(struct text_object *obj, const char *arg,
function downspeedgraphval (line 362) | double downspeedgraphval(struct text_object *obj) {
function upspeedgraphval (line 368) | double upspeedgraphval(struct text_object *obj) {
function print_wireless_essid (line 376) | void print_wireless_essid(struct text_object *obj, char *p,
function print_wireless_mode (line 392) | void print_wireless_mode(struct text_object *obj, char *p,
function print_wireless_channel (line 400) | void print_wireless_channel(struct
Condensed preview — 673 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,897K chars).
[
{
"path": ".clang-format",
"chars": 4000,
"preview": "---\nLanguage: Cpp\n# BasedOnStyle: Google\nAccessModifierOffset: -1\nAlignAfterOpenBracket: Align\nAlignConsecutiveA"
},
{
"path": ".clang-tidy",
"chars": 2207,
"preview": "---\nChecks: 'clang-diagnostic-*,clang-analyzer-*,google-*'\nWarningsAsErrors: ''\nHeaderFilterRegex: ''\nAnalyzeTe"
},
{
"path": ".dockerignore",
"chars": 385,
"preview": "Dockerfile\n.dockerignore\n\n# Ignore SCM/CI related stuff\n.github/\n.git/\n.gitlab-ci.yml\n\n**/.DS_Store\n**/*~\n**/.*.swp\nDoxy"
},
{
"path": ".editorconfig",
"chars": 99,
"preview": "root = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\nindent_style = space\nindent_size = 2\n"
},
{
"path": ".envrc",
"chars": 10,
"preview": "use flake\n"
},
{
"path": ".git-blame-ignore-revs",
"chars": 2438,
"preview": "# Run this command to always ignore formatting commits in `git blame`\n# git config blame.ignoreRevsFile .git-blame-ignor"
},
{
"path": ".github/FUNDING.yml",
"chars": 67,
"preview": "# These are supported funding model platforms\n\ngithub: brndnmtthws\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 3064,
"preview": "name: 🐞 Bug Report\ndescription: 'File a bug report: crashes, unexpected behaviour, and other errors go here.'\ntitle: '[B"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 415,
"preview": "blank_issues_enabled: true\ncontact_links:\n - name: 🙏 General questions & help\n url: https://github.com/brndnmtthws/c"
},
{
"path": ".github/dependabot.yml",
"chars": 524,
"preview": "# Set update schedule for GitHub Actions\n\nversion: 2\nupdates:\n # Maintain dependencies for actions\n - package-ecosyste"
},
{
"path": ".github/instructions/cmake-review.instructions.md",
"chars": 1199,
"preview": "---\napplyTo: 'CMakeLists.txt,cmake/**/*.cmake,tests/CMakeLists.txt,src/CMakeLists.txt,lua/CMakeLists.txt,data/CMakeLists"
},
{
"path": ".github/instructions/cpp-review.instructions.md",
"chars": 1436,
"preview": "---\napplyTo: 'src/**/*.cc,src/**/*.hh,src/**/*.hpp,src/**/*.h,src/**/*.cpp,tests/**/*.cc,tests/**/*.hh,tests/**/*.hpp,te"
},
{
"path": ".github/instructions/workflow-review.instructions.md",
"chars": 941,
"preview": "---\napplyTo: '.github/workflows/**/*.yml,.github/workflows/**/*.yaml,.github/scripts/**/*.sh,.github/scripts/**/*.bash,D"
},
{
"path": ".github/labeler.yml",
"chars": 5528,
"preview": "documentation:\n - changed-files:\n - any-glob-to-any-file:\n - doc/**/*\n - data/conky*.conf\n\nextra"
},
{
"path": ".github/pull_request_template.md",
"chars": 487,
"preview": "# Checklist\n- [ ] I have described the changes\n- [ ] I have linked to any relevant GitHub issues, if applicable\n- [ ] Do"
},
{
"path": ".github/release.yml",
"chars": 481,
"preview": "changelog:\n categories:\n - title: 🏕 Features\n labels:\n - feature\n - title: 🧪 Improvements\n label"
},
{
"path": ".github/scripts/docker-build.bash",
"chars": 1399,
"preview": "#!/usr/bin/env bash\nset -e\n\nDH_USERNAME=\"${DOCKERHUB_USERNAME:-conky}\"\nDOCKERHUB_IMAGE_ID=$DH_USERNAME/$IMAGE_NAME\n\n# Ch"
},
{
"path": ".github/scripts/setup-sccache.sh",
"chars": 2102,
"preview": "#!/bin/sh\n\nexport SCCACHE_VERSION=\"${SCCACHE_VERSION:=0.9.1}\"\n\nexport sccache_arch=\"x86_64\"\nif [ \"$RUNNER_ARCH\" = \"X86\" "
},
{
"path": ".github/workflows/build-and-test-linux.yaml",
"chars": 4964,
"preview": "name: Build and test on Linux\non:\n push:\n branches:\n - main\n paths-ignore:\n - web/**\n - doc/**\n p"
},
{
"path": ".github/workflows/build-and-test-macos.yaml",
"chars": 2136,
"preview": "name: Build and test on macOS\non:\n push:\n branches:\n - main\n paths-ignore:\n - web/**\n - doc/**\n p"
},
{
"path": ".github/workflows/codeql.yml",
"chars": 3131,
"preview": "name: 'CodeQL'\n\non:\n schedule:\n - cron: '20 2 * * 0'\n\njobs:\n analyze:\n name: Analyze\n runs-on: ubuntu-latest\n"
},
{
"path": ".github/workflows/docker.yaml",
"chars": 1236,
"preview": "name: Docker\n\non:\n push:\n branches:\n - main\n paths-ignore:\n - web/**\n - doc/**\n # Publish `v1.2"
},
{
"path": ".github/workflows/labeler.yml",
"chars": 387,
"preview": "name: 'Pull Request Labeler'\non:\n - pull_request_target\n\njobs:\n triage:\n permissions:\n contents: read\n pu"
},
{
"path": ".github/workflows/nix.yaml",
"chars": 925,
"preview": "name: 'Nix build'\non:\n push:\n branches:\n - main\n paths-ignore:\n - web/**\n - doc/**\n pull_request:"
},
{
"path": ".github/workflows/publish-appimage.yml",
"chars": 6133,
"preview": "name: Build AppImage\non:\n push:\n branches:\n - main\n tags:\n - v*\n paths-ignore:\n - web/**\n "
},
{
"path": ".github/workflows/stale.yml",
"chars": 1032,
"preview": "name: \"Close stale issues and PRs\"\non:\n schedule:\n - cron: \"30 1 * * *\"\n\njobs:\n stale:\n permissions:\n conte"
},
{
"path": ".github/workflows/web.yml",
"chars": 839,
"preview": "name: Web CI\n\non:\n push:\n branches: [main]\n paths:\n - web/**\n - doc/**\n pull_request:\n branches: [m"
},
{
"path": ".gitignore",
"chars": 592,
"preview": ".DS_Store\n*~\n.*.swp\nDoxyfile\npatches/\ndoc/conky.1\nREADME\nbuild*/\ndoc/*.html\n\nMakefile\nCMakeCache.txt\nCMakeFiles\ncmake_in"
},
{
"path": ".prettierrc.cjs",
"chars": 108,
"preview": "module.exports = {\n printWidth: 80,\n semi: false,\n singleQuote: true,\n tabWidth: 2,\n useTabs: false,\n}\n"
},
{
"path": ".vscode/extensions.json",
"chars": 133,
"preview": "{\n \"recommendations\": [\n \"kamadorueda.alejandra\",\n \"ms-vscode.cmake-tools\",\n \"mkhl.direnv\",\n \"xaver.clang-f"
},
{
"path": "3rdparty/CMakeLists.txt",
"chars": 67,
"preview": "# Vc version 1.4.4\nadd_subdirectory(Vc)\n\nadd_subdirectory(toluapp)\n"
},
{
"path": "3rdparty/Vc/.clang-format",
"chars": 6310,
"preview": "BasedOnStyle: Google\n\n# The extra indent or outdent of access modifiers, e.g. public:.\nAccessModifierOffset: -4\n\n# "
},
{
"path": "3rdparty/Vc/.gitignore",
"chars": 106,
"preview": "doc/html\ndoc/latex\ndoc/man\nvc-benchmarks\n*.swp\n*~\n.makeApidox.stamp\n.makeApidox.stamp.new\nbuild-*\n.vs\nout\n"
},
{
"path": "3rdparty/Vc/CMakeLists.txt",
"chars": 10953,
"preview": "# cmake_minimum_required(VERSION 3.0)\n\ncmake_policy(SET CMP0028 NEW) # Double colon in target name means ALIAS or IMPORT"
},
{
"path": "3rdparty/Vc/LICENSE",
"chars": 1509,
"preview": "Copyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in source and binary forms, with or without"
},
{
"path": "3rdparty/Vc/README.md",
"chars": 7150,
"preview": "**Vc is now in maintenance mode and no longer actively developed.\nHowever, we continue to review pull requests with bugf"
},
{
"path": "3rdparty/Vc/Vc/Allocator",
"chars": 12060,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/IO",
"chars": 8292,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/Memory",
"chars": 1839,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/SimdArray",
"chars": 1696,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/Utils",
"chars": 1841,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/Vc",
"chars": 1845,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/algorithm",
"chars": 31,
"preview": "#include \"common/algorithms.h\"\n"
},
{
"path": "3rdparty/Vc/Vc/array",
"chars": 10804,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/avx/casts.h",
"chars": 17338,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/const.h",
"chars": 7928,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/const_data.h",
"chars": 3565,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2012-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/debug.h",
"chars": 4158,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2011-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/deinterleave.tcc",
"chars": 12465,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/detail.h",
"chars": 118180,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/avx/helperimpl.h",
"chars": 5550,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2011-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/intrinsics.h",
"chars": 34627,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/limits.h",
"chars": 5639,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/macros.h",
"chars": 1671,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/mask.h",
"chars": 9619,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/mask.tcc",
"chars": 13337,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2011-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/math.h",
"chars": 13056,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/shuffle.h",
"chars": 19397,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2011-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/simd_cast.h",
"chars": 136787,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/simd_cast_caller.tcc",
"chars": 2210,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/types.h",
"chars": 4441,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/vector.h",
"chars": 23836,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/vector.tcc",
"chars": 41362,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2011-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/avx/vectorhelper.h",
"chars": 15733,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/algorithms.h",
"chars": 6134,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/aliasingentryhelper.h",
"chars": 7230,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/alignedbase.h",
"chars": 5155,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/common/bitscanintrinsics.h",
"chars": 2561,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2011-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/const.h",
"chars": 3685,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/data.h",
"chars": 1880,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/deinterleave.h",
"chars": 3761,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/detail.h",
"chars": 5472,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2018 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/common/elementreference.h",
"chars": 6908,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2016 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/common/exponential.h",
"chars": 3908,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2012-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/fix_clang_emmintrin.h",
"chars": 3146,
"preview": "/*{{{\n Copyright (C) 2013-2015 Matthias Kretz <kretz@kde.org>\n\n Permission to use, copy, modify, and distribute th"
},
{
"path": "3rdparty/Vc/Vc/common/gatherimplementation.h",
"chars": 10574,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/gatherinterface.h",
"chars": 10755,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/gatherinterface_deprecated.h",
"chars": 16784,
"preview": " /// \\name Deprecated Members\n ///@{\n\n /**\n * \\deprecated Use Vc::array or Vc::vector subscripting instead."
},
{
"path": "3rdparty/Vc/Vc/common/generalinterface.h",
"chars": 2969,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/iif.h",
"chars": 3913,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2012-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/indexsequence.h",
"chars": 3250,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/interleave.h",
"chars": 2586,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/interleavedmemory.h",
"chars": 12987,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2012-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/iterators.h",
"chars": 9933,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/loadinterface.h",
"chars": 4308,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/loadstoreflags.h",
"chars": 10066,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/logarithm.h",
"chars": 11163,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/macros.h",
"chars": 13206,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/makeContainer.h",
"chars": 6828,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/make_unique.h",
"chars": 2181,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/malloc.h",
"chars": 5680,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/mask.h",
"chars": 15387,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/common/maskbool.h",
"chars": 4047,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/math.h",
"chars": 5769,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/memory.h",
"chars": 22392,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/memorybase.h",
"chars": 33910,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/memoryfwd.h",
"chars": 1988,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2011-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/operators.h",
"chars": 14637,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2012-2016 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/permutation.h",
"chars": 1855,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/common/scatterimplementation.h",
"chars": 8919,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/scatterinterface.h",
"chars": 6664,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/scatterinterface_deprecated.h",
"chars": 8115,
"preview": " /// \\name Deprecated Members\n ///@{\n\n /**\n * \\deprecated Use Vc::array or Vc::vector subscripting instead."
},
{
"path": "3rdparty/Vc/Vc/common/set.h",
"chars": 4411,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/simd_cast.h",
"chars": 2829,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/simd_cast_caller.tcc",
"chars": 3543,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/simdarray.h",
"chars": 129802,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/simdarrayfwd.h",
"chars": 7904,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/simdarrayhelper.h",
"chars": 22969,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/simdize.h",
"chars": 81879,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/simdmaskarray.h",
"chars": 26116,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/span.h",
"chars": 22577,
"preview": "// -*- C++ -*-\n//===------------------------------ span ---------------------------------===//\n//\n// "
},
{
"path": "3rdparty/Vc/Vc/common/storage.h",
"chars": 19251,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/storeinterface.h",
"chars": 3909,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/common/subscript.h",
"chars": 24188,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/support.h",
"chars": 256,
"preview": "#ifndef VC_DEPRECATED_COMMON_SUPPORT_H_\n#define VC_DEPRECATED_COMMON_SUPPORT_H_\n#ifdef __GNUC__\n#warning \"the <Vc/common"
},
{
"path": "3rdparty/Vc/Vc/common/transpose.h",
"chars": 2146,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/common/trigonometric.h",
"chars": 8471,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/types.h",
"chars": 12690,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2012-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/utility.h",
"chars": 3415,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/vector/casts.h",
"chars": 3359,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/vector.h",
"chars": 30002,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/common/vectorabi.h",
"chars": 3111,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/common/vectortraits.h",
"chars": 1826,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/common/vectortuple.h",
"chars": 5424,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2012-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/where.h",
"chars": 15958,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/writemaskedvector.h",
"chars": 4434,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/common/x86_prefetches.h",
"chars": 6138,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/cpuid.h",
"chars": 15493,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/fwddecl.h",
"chars": 5069,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2018 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/global.h",
"chars": 18025,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/iterators",
"chars": 1870,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/limits",
"chars": 3117,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/scalar/detail.h",
"chars": 7635,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2016 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/scalar/helperimpl.h",
"chars": 2364,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/scalar/limits.h",
"chars": 1650,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/scalar/macros.h",
"chars": 1680,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/scalar/mask.h",
"chars": 7554,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/scalar/math.h",
"chars": 10167,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/scalar/operators.h",
"chars": 4772,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/scalar/simd_cast.h",
"chars": 3537,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/scalar/simd_cast_caller.tcc",
"chars": 2024,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/scalar/type_traits.h",
"chars": 2095,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/scalar/types.h",
"chars": 3170,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/scalar/vector.h",
"chars": 14634,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/scalar/vector.tcc",
"chars": 7866,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2011-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/simdize",
"chars": 85,
"preview": "#include \"vector.h\"\n#include \"Allocator\"\n#include \"common/simdize.h\"\n\n// vim: ft=cpp\n"
},
{
"path": "3rdparty/Vc/Vc/span",
"chars": 41,
"preview": "#include \"common/span.h\"\n\n// vim: ft=cpp\n"
},
{
"path": "3rdparty/Vc/Vc/sse/casts.h",
"chars": 9152,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/const.h",
"chars": 6422,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/const_data.h",
"chars": 3542,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2012-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/debug.h",
"chars": 3732,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2011-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/deinterleave.tcc",
"chars": 6772,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/detail.h",
"chars": 72911,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/sse/helperimpl.h",
"chars": 3270,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/intrinsics.h",
"chars": 28048,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/limits.h",
"chars": 6342,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/macros.h",
"chars": 1758,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/mask.h",
"chars": 11088,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/mask.tcc",
"chars": 11128,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/math.h",
"chars": 7374,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/prefetches.tcc",
"chars": 2595,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/shuffle.h",
"chars": 10647,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2011-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/simd_cast.h",
"chars": 38889,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/simd_cast_caller.tcc",
"chars": 1994,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/type_traits.h",
"chars": 2124,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/types.h",
"chars": 3154,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/vector.h",
"chars": 23835,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/vector.tcc",
"chars": 36809,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/vectorhelper.h",
"chars": 37097,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/sse/vectorhelper.tcc",
"chars": 0,
"preview": ""
},
{
"path": "3rdparty/Vc/Vc/support.h",
"chars": 5173,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/traits/decay.h",
"chars": 1832,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/traits/entry_type_of.h",
"chars": 2411,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/traits/has_addition_operator.h",
"chars": 2094,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/traits/has_contiguous_storage.h",
"chars": 3925,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2016 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/traits/has_equality_operator.h",
"chars": 2140,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/traits/has_multiply_operator.h",
"chars": 2094,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/traits/has_no_allocated_data.h",
"chars": 3373,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/traits/has_subscript_operator.h",
"chars": 2114,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/traits/is_functor_argument_immutable.h",
"chars": 3974,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2014-2016 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/traits/is_implicit_cast_allowed.h",
"chars": 2508,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/traits/is_index_sequence.h",
"chars": 2125,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/traits/is_output_iterator.h",
"chars": 2836,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and use in "
},
{
"path": "3rdparty/Vc/Vc/traits/type_traits.h",
"chars": 8269,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/type_traits",
"chars": 2325,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2013-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/vector",
"chars": 2122,
"preview": "/*{{{\n Copyright © 2013 Matthias Kretz <kretz@kde.org>\n\n Permission to use, copy, modify, and distribute this soft"
},
{
"path": "3rdparty/Vc/Vc/vector.h",
"chars": 9142,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2009-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/Vc/version.h",
"chars": 4502,
"preview": "/* This file is part of the Vc library. {{{\nCopyright © 2010-2015 Matthias Kretz <kretz@kde.org>\n\nRedistribution and us"
},
{
"path": "3rdparty/Vc/cmake/AddCompilerFlag.cmake",
"chars": 5200,
"preview": "# - Add a given compiler flag to flags variables.\n# AddCompilerFlag(<flag> [<var>])\n# or\n# AddCompilerFlag(<flag> [C_FLA"
},
{
"path": "3rdparty/Vc/cmake/AddTargetProperty.cmake",
"chars": 2056,
"preview": "#=============================================================================\n# Copyright 2010-2015 Matthias Kretz <kre"
},
{
"path": "3rdparty/Vc/cmake/CheckCCompilerFlag.cmake",
"chars": 3832,
"preview": "# - Check whether the C compiler supports a given flag.\n# CHECK_C_COMPILER_FLAG(<flag> <var>)\n# <flag> - the compiler f"
},
{
"path": "3rdparty/Vc/cmake/CheckCXXCompilerFlag.cmake",
"chars": 3849,
"preview": "# - Check whether the CXX compiler supports a given flag.\n# CHECK_CXX_COMPILER_FLAG(<flag> <var>)\n# <flag> - the compil"
},
{
"path": "3rdparty/Vc/cmake/FindVc.cmake",
"chars": 2773,
"preview": "# Locate the Vc template library. Vc can be found at https://github.com/VcDevel/Vc\n#\n# This file is meant to be copied i"
},
{
"path": "3rdparty/Vc/cmake/OptimizeForArchitecture.cmake",
"chars": 30845,
"preview": "# Determine the host CPU feature set and determine the best set of compiler\n# flags to enable all supported SIMD relevan"
},
{
"path": "3rdparty/Vc/cmake/UserWarning.cmake",
"chars": 238,
"preview": "macro(UserWarning _msg)\n if(\"$ENV{DASHBOARD_TEST_FROM_CTEST}\" STREQUAL \"\")\n # developer (non-dashboard) build\n "
},
{
"path": "3rdparty/Vc/cmake/VcConfig.cmake.in",
"chars": 1393,
"preview": "@PACKAGE_INIT@\n\n### General variables for project discovery/inspection\nset_and_check(@PROJECT_NAME@_INSTALL_DIR @PACKAGE"
},
{
"path": "3rdparty/Vc/cmake/VcMacros.cmake",
"chars": 26385,
"preview": "# Macros for use with the Vc library. Vc can be found at http://code.compeng.uni-frankfurt.de/projects/vc\n#\n# The follow"
},
{
"path": "3rdparty/Vc/cmake/toolchain-arm-linux-gnueabi-gcc.cmake",
"chars": 61,
"preview": "SET(CMAKE_SYSTEM_NAME Linux)\nSET(CMAKE_SYSTEM_PROCESSOR arm)\n"
},
{
"path": "3rdparty/Vc/cmake/toolchain-arm-linux.cmake",
"chars": 61,
"preview": "SET(CMAKE_SYSTEM_NAME Linux)\nSET(CMAKE_SYSTEM_PROCESSOR arm)\n"
},
{
"path": "3rdparty/Vc/print_target_architecture.cmake",
"chars": 528,
"preview": "get_filename_component(_currentDir \"${CMAKE_CURRENT_LIST_FILE}\" PATH)\ninclude(\"${_currentDir}/cmake/OptimizeForArchitect"
}
]
// ... and 473 more files (download for full content)
About this extraction
This page contains the full source code of the brndnmtthws/conky GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 673 files (6.3 MB), approximately 1.7M tokens, and a symbol index with 5611 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.