Compare commits
200
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8618c0b01f | ||
|
|
21d2520b31 | ||
|
|
560c44ae9b | ||
|
|
cff407eb54 | ||
|
|
10ba052ea1 | ||
|
|
7f9f098c70 | ||
|
|
7556d171cb | ||
|
|
6662a8c41c | ||
|
|
3a6beb76fc | ||
|
|
f6bddec0ec | ||
|
|
f7923ebd75 | ||
|
|
9669dc1e71 | ||
|
|
ecaf25ead6 | ||
|
|
9d26104d2f | ||
|
|
8cc4aaf6ea | ||
|
|
719591a247 | ||
|
|
00137a2b7f | ||
|
|
a812a49b0c | ||
|
|
dedbc2eb27 | ||
|
|
c8dcb193ff | ||
|
|
d3b9e46cd9 | ||
|
|
cbf8e3412f | ||
|
|
0dcb83403c | ||
|
|
f799bd4946 | ||
|
|
2422e09b7f | ||
|
|
e68da85bbd | ||
|
|
b39a8d33dd | ||
|
|
2a996ed9a0 | ||
|
|
28b67bc91d | ||
|
|
270c8698dc | ||
|
|
2ab4e2bab9 | ||
|
|
a0856a6de5 | ||
|
|
bc911923d0 | ||
|
|
be8023063a | ||
|
|
8c2b55a324 | ||
|
|
ceb900589e | ||
|
|
ceb274478d | ||
|
|
99cc3d9636 | ||
|
|
67b803bd29 | ||
|
|
11110b6a6f | ||
|
|
ebed9b0e56 | ||
|
|
cf0ad287d8 | ||
|
|
3932bb1fb8 | ||
|
|
d33a5357dd | ||
|
|
732c389520 | ||
|
|
097833beee | ||
|
|
e8480d4a43 | ||
|
|
f93b063763 | ||
|
|
f25e8aa32d | ||
|
|
eeb5b13797 | ||
|
|
1558b7215d | ||
|
|
e6e0ecbcf5 | ||
|
|
fa6dd6c9e1 | ||
|
|
00bf7ebda6 | ||
|
|
136f3b5eff | ||
|
|
042ccb55da | ||
|
|
f64019b87f | ||
|
|
7602571be8 | ||
|
|
52ae646f26 | ||
|
|
9274758d5d | ||
|
|
75e6edaf44 | ||
|
|
6041f997a9 | ||
|
|
4d13131321 | ||
|
|
1162a52c1d | ||
|
|
0070431265 | ||
|
|
5bbbb73362 | ||
|
|
2d9ad2b746 | ||
|
|
1d7f466e4f | ||
|
|
7bee830c6f | ||
|
|
cca66470be | ||
|
|
a177c6daf5 | ||
|
|
77d798d6f3 | ||
|
|
afc9e8212c | ||
|
|
d8b19b70fb | ||
|
|
08058158d0 | ||
|
|
db28aa80d1 | ||
|
|
7f241e8bdb | ||
|
|
ff598e3866 | ||
|
|
a1fccbf6eb | ||
|
|
b0d4db6d61 | ||
|
|
1e870e9a25 | ||
|
|
63007170df | ||
|
|
538d76d858 | ||
|
|
7b14bfaf70 | ||
|
|
7a4b2347fb | ||
|
|
216ec83f84 | ||
|
|
44a8104890 | ||
|
|
7edafe91f2 | ||
|
|
c0a0e4335a | ||
|
|
ce1d5c579d | ||
|
|
21f2625d9e | ||
|
|
078feca004 | ||
|
|
52058d9947 | ||
|
|
2e2390d00e | ||
|
|
c808fa8732 | ||
|
|
fdbb79b677 | ||
|
|
9ab724ae47 | ||
|
|
b5e0387f1e | ||
|
|
9b86f0e824 | ||
|
|
6641c17b93 | ||
|
|
1c300e0240 | ||
|
|
6c5ac66a59 | ||
|
|
61b97e4931 | ||
|
|
cc17dbe2ea | ||
|
|
bb40bcfe45 | ||
|
|
634e09ddfc | ||
|
|
0e4a620768 | ||
|
|
c38117ab8b | ||
|
|
4cf852770e | ||
|
|
ceb30020b5 | ||
|
|
7257de9f11 | ||
|
|
d2a1ac464d | ||
|
|
9281c237a7 | ||
|
|
9d556599ab | ||
|
|
73f3be72e1 | ||
|
|
dca9e2627c | ||
|
|
c34b17418d | ||
|
|
8264b8cae3 | ||
|
|
38581f9571 | ||
|
|
d177a7d733 | ||
|
|
49050e1089 | ||
|
|
48c4bddc1b | ||
|
|
ed1d4b7d33 | ||
|
|
c5d94fbd08 | ||
|
|
0d8e992bdf | ||
|
|
2cfce03f6e | ||
|
|
7f861964ea | ||
|
|
122b384d60 | ||
|
|
eb142cfb4e | ||
|
|
f7262c805f | ||
|
|
f572e5ee05 | ||
|
|
827b8431ca | ||
|
|
712d80cc8a | ||
|
|
580ed9f3d6 | ||
|
|
e81315c131 | ||
|
|
cd731a3798 | ||
|
|
ee7dcc2d83 | ||
|
|
42cb917490 | ||
|
|
b72d3531c0 | ||
|
|
1bb16deb3b | ||
|
|
7a5d1f7d2b | ||
|
|
04bda70b3c | ||
|
|
5a18d0973e | ||
|
|
0498d68f5b | ||
|
|
517dde06e4 | ||
|
|
ce22e5917a | ||
|
|
fc0e652ae0 | ||
|
|
583046c291 | ||
|
|
e621a835fd | ||
|
|
b631f3ddf7 | ||
|
|
e5ff90084e | ||
|
|
74a61e0402 | ||
|
|
bd09cc4feb | ||
|
|
941e5dbcaa | ||
|
|
6b692ff0e9 | ||
|
|
dc24bae943 | ||
|
|
a856788e75 | ||
|
|
7f53c3d4b2 | ||
|
|
0587d54172 | ||
|
|
942eb219eb | ||
|
|
ef68893957 | ||
|
|
51ebee7cfd | ||
|
|
f75593392b | ||
|
|
733ef0ea04 | ||
|
|
5a97c88a69 | ||
|
|
70969b1bc3 | ||
|
|
e89dc0ab0a | ||
|
|
084bc3dc43 | ||
|
|
809f201583 | ||
|
|
b50ab76af5 | ||
|
|
8a43a95b5c | ||
|
|
1c7bc2fc90 | ||
|
|
bda7375e63 | ||
|
|
cce41dd964 | ||
|
|
3e9df0b074 | ||
|
|
21f25a0b00 | ||
|
|
6a3561cb87 | ||
|
|
cc289e8b1e | ||
|
|
5f91f48844 | ||
|
|
2f21848de8 | ||
|
|
b35d4657d5 | ||
|
|
4b58bb679c | ||
|
|
c6adbab340 | ||
|
|
b8d0f88336 | ||
|
|
68c9782e33 | ||
|
|
6a2c59f3e5 | ||
|
|
6b54d5f07b | ||
|
|
cd144a979f | ||
|
|
293ddffb46 | ||
|
|
af3e7861b6 | ||
|
|
8e3ca182b9 | ||
|
|
70febae55b | ||
|
|
086c19f25e | ||
|
|
1e8791da35 | ||
|
|
bb78c04b34 | ||
|
|
3aebe91e36 | ||
|
|
5cc39824e0 | ||
|
|
841a87469b | ||
|
|
1cc61a93a2 | ||
|
|
529b534939 |
@@ -0,0 +1,78 @@
|
||||
Language: Cpp
|
||||
|
||||
AccessModifierOffset: -4
|
||||
AlignAfterOpenBracket: AlwaysBreak
|
||||
AlignConsecutiveAssignments: false
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignConsecutiveMacros: false
|
||||
AlignEscapedNewlines: Right
|
||||
AlignOperands: false
|
||||
AlignTrailingComments: true
|
||||
AllowAllArgumentsOnNextLine: true
|
||||
AllowAllConstructorInitializersOnNextLine: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: Empty
|
||||
AllowShortIfStatementsOnASingleLine: Never
|
||||
AllowShortLambdasOnASingleLine: All
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: true
|
||||
AlwaysBreakTemplateDeclarations: Yes
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: Allman
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializers: BeforeComma
|
||||
BreakInheritanceList: BeforeComma
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 100
|
||||
CompactNamespaces: true
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: false
|
||||
FixNamespaceComments: true
|
||||
IncludeBlocks: Preserve
|
||||
IndentCaseLabels: false
|
||||
IndentPPDirectives: AfterHash
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
MaxEmptyLinesToKeep: 2
|
||||
NamespaceIndentation: None
|
||||
PenaltyBreakAssignment: 50
|
||||
PenaltyBreakBeforeFirstCallParameter: 0
|
||||
PenaltyBreakComment: 100
|
||||
PenaltyBreakFirstLessLess: 200
|
||||
PenaltyBreakString: 100
|
||||
PenaltyBreakTemplateDeclaration: 0
|
||||
PenaltyExcessCharacter: 10
|
||||
PenaltyReturnTypeOnItsOwnLine: 1000
|
||||
PointerAlignment: Left
|
||||
ReflowComments: true
|
||||
SortIncludes: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterLogicalNot: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeCpp11BracedList: true
|
||||
SpaceBeforeCtorInitializerColon: false
|
||||
SpaceBeforeInheritanceColon: false
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeRangeBasedForLoopColon: false
|
||||
SpaceInEmptyBlock: false
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 4
|
||||
SpacesInAngles: false
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInContainerLiterals: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: c++17
|
||||
TabWidth: 4
|
||||
UseTab: Always
|
||||
@@ -0,0 +1,12 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: sourcetrail
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||
+6
-2
@@ -1,4 +1,5 @@
|
||||
/build/
|
||||
build-*
|
||||
/distr/
|
||||
/deps/
|
||||
|
||||
@@ -14,6 +15,8 @@
|
||||
/bin/test/data/TestSettings.xml
|
||||
/bin/test/data/CommandlineTestSuite/settings.xml
|
||||
/bin/test/data/ConfigManagerTestSuite/temp.xml
|
||||
/bin/test/data/UtilityMavenTestSuite/effective-pom.xml
|
||||
/bin/test/data/SourceGroupTestSuite/java_maven/input/sourcetrail_dependencies
|
||||
|
||||
/java_indexer/target/
|
||||
|
||||
@@ -39,7 +42,6 @@
|
||||
|
||||
/ide_plugins/vs/vs2015/SourcetrailPlugin/TestResults
|
||||
|
||||
*.coatidb
|
||||
*.srctrldb
|
||||
*.srctrlbm
|
||||
*.suo
|
||||
@@ -55,7 +57,8 @@
|
||||
.ycm_extra_conf.py
|
||||
.ycm_extra_conf.pyc
|
||||
|
||||
sourcetrail.srctrlprj
|
||||
Sourcetrail.srctrlprj
|
||||
Sourcetrail_dev.srctrlprj
|
||||
|
||||
Makefile
|
||||
CMakeLists.txt.user*
|
||||
@@ -65,5 +68,6 @@ CMakeLists.txt.user*
|
||||
/deployment/windows/wixSetup/build
|
||||
/deployment/windows/wixSetup/CustomActions/UninstallRemoveLogFolder/bin
|
||||
/deployment/windows/wixSetup/CustomActions/UninstallRemoveLogFolder/obj
|
||||
/deployment/windows/wixSetup/CustomActions/.vs
|
||||
/deployment/windows/wixSetup/Setup/build/Setup/Release
|
||||
/deployment/windows/wixSetup/Setup/build/Setup/x64
|
||||
|
||||
-127
@@ -1,127 +0,0 @@
|
||||
variables:
|
||||
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
|
||||
IMAGE_64: coatisoftware/centos6_64_qt_llvm:qt5101-llvm800
|
||||
IMAGE_32: coatisoftware/centos6_32_qt_llvm:qt5101-llvm800
|
||||
|
||||
## Templates ##
|
||||
|
||||
.build_template: &build_def
|
||||
stage: build
|
||||
before_script:
|
||||
# CCache Config/jobs
|
||||
- mkdir -p ccache
|
||||
- export CCACHE_BASEDIR=${PWD}
|
||||
- export CCACHE_DIR=${PWD}/ccache
|
||||
script:
|
||||
- ./script/buildonly.sh all
|
||||
- ./script/buildonly.sh package
|
||||
# - ./script/build.sh release test
|
||||
artifacts:
|
||||
name: "$CI_JOB_NAME"
|
||||
paths:
|
||||
- Sourcetrail*.tar.gz
|
||||
expire_in: 3 days
|
||||
|
||||
.deploy_template: &deploy_def
|
||||
image: alpine
|
||||
stage: deploy
|
||||
before_script:
|
||||
- apk add --no-cache lftp git
|
||||
script:
|
||||
- VERS=$(git describe --long | sed 's/-/./' | sed 's/-.*//')
|
||||
- TARGET_DIR=releases-$CI_ENVIRONMENT_NAME/$TYPE/$VERS
|
||||
- echo $TARGET_DIR/$CI_ENVIRONMENT_NAME/$TYPE/
|
||||
- lftp -u $FTP_USER,$FTP_PW -p $FTP_PORT $FTP_ADDR -e "mkdir $TARGET_DIR; mput -O $TARGET_DIR Sourcetrail*; bye"
|
||||
only:
|
||||
- master
|
||||
- tags
|
||||
- /^release.*$/
|
||||
|
||||
|
||||
## Build Stage ##
|
||||
|
||||
build:Linux64:
|
||||
image: $IMAGE_64
|
||||
when: manual
|
||||
cache:
|
||||
key: cache_linux_64
|
||||
paths:
|
||||
- ccache/
|
||||
- java_indexer/.m2/repository
|
||||
<<: *build_def
|
||||
|
||||
build:Linux32:
|
||||
image: $IMAGE_32
|
||||
when: manual
|
||||
cache:
|
||||
key: cache_linux_32
|
||||
paths:
|
||||
- ccache/
|
||||
- java_indexer/.m2/repository
|
||||
<<: *build_def
|
||||
|
||||
LicenseGenerator:
|
||||
image: $IMAGE_64
|
||||
stage: build
|
||||
when: manual
|
||||
script:
|
||||
- ./script/setup.sh
|
||||
- ./script/buildonly.sh release keygen
|
||||
- mv build/Release/license_generator/Sourcetrail_license_generator .
|
||||
artifacts:
|
||||
name: "$CI_JOB_NAME"
|
||||
paths:
|
||||
- Sourcetrail_license_generator
|
||||
expire_in: 3 days
|
||||
|
||||
## Deploy ##
|
||||
|
||||
deploy:Linux_staging_beta:
|
||||
when: manual
|
||||
environment:
|
||||
name: staging
|
||||
variables:
|
||||
TYPE: beta
|
||||
<<: *deploy_def
|
||||
|
||||
deploy:Linux_staging_full:
|
||||
when: manual
|
||||
environment:
|
||||
name: staging
|
||||
variables:
|
||||
TYPE: full
|
||||
<<: *deploy_def
|
||||
|
||||
deploy:Linux_production_beta:
|
||||
when: manual
|
||||
environment:
|
||||
name: production
|
||||
variables:
|
||||
TYPE: beta
|
||||
<<: *deploy_def
|
||||
|
||||
deploy:Linux_production_full:
|
||||
when: manual
|
||||
environment:
|
||||
name: production
|
||||
variables:
|
||||
TYPE: full
|
||||
<<: *deploy_def
|
||||
|
||||
deploy:Linux_tag_staging:
|
||||
environment:
|
||||
name: staging
|
||||
variables:
|
||||
TYPE: beta
|
||||
<<: *deploy_def
|
||||
only:
|
||||
- tags
|
||||
|
||||
## could be interesting for daily/weekly/monthly builds
|
||||
# https://docs.gitlab.com/ce/user/project/pipelines/schedules.html
|
||||
#
|
||||
#job:on-schedule:
|
||||
#only:
|
||||
# - schedules
|
||||
#
|
||||
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
language: bash
|
||||
|
||||
os:
|
||||
- linux
|
||||
- windows
|
||||
|
||||
services: docker
|
||||
|
||||
install:
|
||||
- echo "$TRAVIS_OS_NAME"
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ]; then docker build -t coatisoftware/local deployment/dockerfiles/windows/travis_ci; fi
|
||||
|
||||
script:
|
||||
- COMMIT_HASH=$(git rev-parse HEAD)
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ]; then docker run --name builder coatisoftware/local ${COMMIT_HASH}; fi
|
||||
|
||||
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
Authors
|
||||
=======
|
||||
|
||||
Andreas Stallinger
|
||||
Eberhard Gräther (@egraether) <egraether@coati.io>
|
||||
Malte Langkabel (@mlangkabel) <mlangkabel@coati.io>
|
||||
Manuel Dobusch
|
||||
Viktoria Pfausler
|
||||
|
||||
Note: (@user) means a github user name.
|
||||
+278
-208
@@ -1,11 +1,90 @@
|
||||
### Changelog
|
||||
|
||||
#### 2019.4.102
|
||||
released 2019-12-20
|
||||
|
||||
* C/C++: Update selectable C and C++ language standards and cross-compilation flags ([#835](https://github.com/CoatiSoftware/Sourcetrail/issues/835))
|
||||
* Java: Allow to specify custom Maven settings.xml file in project settings ([#794](https://github.com/CoatiSoftware/Sourcetrail/issues/794))
|
||||
* Python: Accept python.exe located in the root directory of the environment ([#771](https://github.com/CoatiSoftware/Sourcetrail/issues/771))
|
||||
* Java: Extend language support to Java 12 ([#752](https://github.com/CoatiSoftware/Sourcetrail/issues/752))
|
||||
* Graph: Show active symbol definition in code when clicking on active node ([#836](https://github.com/CoatiSoftware/Sourcetrail/issues/836))
|
||||
* C++: Fix recording template parameter as local symbol instead of qualifier ([#824](https://github.com/CoatiSoftware/Sourcetrail/issues/826))
|
||||
* Python: Always perform deep index as default and added '--shallow' command line option ([#823](https://github.com/CoatiSoftware/Sourcetrail/issues/823))
|
||||
* Code: Drag and drop selected source code from code view into other applications ([#707](https://github.com/CoatiSoftware/Sourcetrail/issues/707))
|
||||
* Python: Allow using "unsafe" Python environment if explicitly specified by user ([#697](https://github.com/CoatiSoftware/Sourcetrail/issues/697), [#747](https://github.com/CoatiSoftware/Sourcetrail/issues/747))
|
||||
* C/C++: Updated to LLVM/Clang 9.0.0 ([#799](https://github.com/CoatiSoftware/Sourcetrail/issues/799))
|
||||
* Fix crash on application exit ([#789](https://github.com/CoatiSoftware/Sourcetrail/issues/789))
|
||||
* Code: Fixed view cleared in single file mode when ui refresh is triggered ([#772](https://github.com/CoatiSoftware/Sourcetrail/issues/772))
|
||||
|
||||
#### 2019.4.61
|
||||
released 2019-11-18
|
||||
|
||||
* Added GitHub and Patreon buttons to start window
|
||||
* Added GNU General Public License
|
||||
* Removed End User License Agreement and accept dialog from UI and Windows installer
|
||||
* Removed Sonargraph based project setup
|
||||
* Code: Add all source locations indexed for a file when displaying errors
|
||||
* C/C++: Use gnu C and C++ standards as default in source groups on Linux platforms
|
||||
* Python: add fast 'shallow indexing' mode (issue [#725](https://github.com/CoatiSoftware/Sourcetrail/issues/725))
|
||||
* Fixed nested layout broken after relayout for maximum access node width
|
||||
* Removed license key check
|
||||
* Python: Improved performance of python post processing (by about factor 2)
|
||||
* Improved performance of clearing data from re-indexed files to be instant
|
||||
* Fixed making canonical filepaths when working directory contains symlink on Windows (issue [#733](https://github.com/CoatiSoftware/Sourcetrail/issues/733))
|
||||
* C/C++: Update indexed headers list when editing the compilation database text box (issue [#724](https://github.com/CoatiSoftware/Sourcetrail/issues/724))
|
||||
* Skip pre-indexing steps of disabled source groups (issue [#737](https://github.com/CoatiSoftware/Sourcetrail/issues/737))
|
||||
* Fixed refresh cleared files of disabled source groups
|
||||
* C++: Merged nodes for all possible expansions of a template parameter pack
|
||||
* C++: Replaced template member specialization edge by template specialization edge
|
||||
* C++: Record template default args as type usage
|
||||
* C++: Record template parameter as local symbol
|
||||
* Java: Use caching to speed up gradle and maven based projects
|
||||
* Windows: Fixed styles missing in portable packages
|
||||
* Add menu entry to close the current project (issue [#722](https://github.com/CoatiSoftware/Sourcetrail/issues/722))
|
||||
|
||||
#### 2019.3.46
|
||||
released 2019-08-27
|
||||
|
||||
* Fixed errors were sometimes not clickable
|
||||
* Windows: sign installer and executables with Authenticode certificate (issue [#704](https://github.com/CoatiSoftware/Sourcetrail/issues/704))
|
||||
* Show proper error messages and progress when indexing with CLI (issue [#718](https://github.com/CoatiSoftware/Sourcetrail/issues/718))
|
||||
* C/C++: only use precompiled headers for compilation database commands that specify the "-include-pch" flag (issue [#719](https://github.com/CoatiSoftware/Sourcetrail/issues/719))
|
||||
* Python: Updated to SourcetrailPythonIndexer v1.db24.p2
|
||||
* Graph: Fixed bezier edges stayed highlighted after getting unhovered
|
||||
* Windows: Use modern Windows style for default ui elements on Windows 10
|
||||
* Change mouse cursor to pointer on graph and code view contents (issue [#715](https://github.com/CoatiSoftware/Sourcetrail/issues/311))
|
||||
* Java: Remove JVM maximum memory setting because it causes issues (issue [#694](https://github.com/CoatiSoftware/Sourcetrail/issues/311))
|
||||
* Show overview instead of empty error screen after all indexing errors are gone
|
||||
* C/C++: Allow indexing multiple indexer commands with different options for one source file in Compilation Database source group (issue [#717](https://github.com/CoatiSoftware/Sourcetrail/issues/311))
|
||||
* Graph: Added custom trail dialog to show trail graph with specific origin and/or target, using node/edge filters (issue [#249](https://github.com/CoatiSoftware/Sourcetrail/issues/249))
|
||||
* C/C++: Fixed removing duplicate compiler header directory not working (issue [#710](https://github.com/CoatiSoftware/Sourcetrail/issues/710))
|
||||
* Java: Fixed maven source groups broken when default console output contains colors (issue [#705](https://github.com/CoatiSoftware/Sourcetrail/issues/705))
|
||||
* Code: Added option to preferences to show relative file directory in code view title (issue [#556](https://github.com/CoatiSoftware/Sourcetrail/issues/556))
|
||||
* C++: Fixed lambdas created additional type nodes
|
||||
* C/C++: Initialize all clang targets to reduce errors for cross-target compilation
|
||||
* C/C++: Added Precompiled Header Support to Empty and Compilation Database Source Groups (issue [#311](https://github.com/CoatiSoftware/Sourcetrail/issues/311))
|
||||
* Search: Turn search element editable when pressing DELETE with cursor in front
|
||||
* Graph: increased the tolerated movement distance during click to still count as click action
|
||||
|
||||
#### 2019.2.39
|
||||
released 2019-05-28
|
||||
|
||||
* Python: Added example for Python environment to Source Group help text (issue [#696](https://github.com/CoatiSoftware/Sourcetrail/issues/696))
|
||||
* Python: Improved post processing speed and show progress dialog
|
||||
* Python: Added validity check for Python environment when entered in Source Group
|
||||
* Code: Improved performance of location hovering in snippet mode
|
||||
* Graph: Fixed undo after single edge activation within aggregation caused missing edges
|
||||
* Don't set project state outdated if only Source Group name changed (issue [#700](https://github.com/CoatiSoftware/Sourcetrail/issues/700))
|
||||
* C/C++: Don't store path to compiler headers in preferences, instead always add it before indexing
|
||||
* Python: write output of indexer processes to log file
|
||||
* Fixed crashes on application close (issue [#698](https://github.com/CoatiSoftware/Sourcetrail/issues/698))
|
||||
|
||||
#### 2019.2.25
|
||||
released 2019-05-22
|
||||
|
||||
* Enable console and file logging by default
|
||||
* Python: Sort indexer commands by file size
|
||||
* Linux: Add path to OpenSSL config in Sourcetrail.sh script (issue #659)
|
||||
* Linux: Add path to OpenSSL config in Sourcetrail.sh script (issue [#659](https://github.com/CoatiSoftware/Sourcetrail/issues/659))
|
||||
* Search: Refocus already focused search box on 'find symbol' shortcut to select content
|
||||
* Renamed 'main' function in tutorial to 'start_tour', due to multiple main fix
|
||||
* Python: Fixed macOS app bundle not using correct Python default environment
|
||||
@@ -15,26 +94,26 @@ released 2019-05-22
|
||||
* Python: Added sample project "tictactoe_py"
|
||||
* Code: Fixed symbol definition shown instead of most recent reference when using back action
|
||||
* Python: Added post processing to add ambiguous edges for unsolved symbols with matching name
|
||||
* Fixed old test license format not loaded (issue #691)
|
||||
* C/C++: Added intermediate fix to handle multiple definitions of main() in C/C++ (issue #233)
|
||||
* Graph: Added "Show Definition in IDE" action to context menu (issue #687)
|
||||
* Fixed old test license format not loaded (issue [#691](https://github.com/CoatiSoftware/Sourcetrail/issues/691))
|
||||
* C/C++: Added intermediate fix to handle multiple definitions of main() in C/C++ (issue [#233](https://github.com/CoatiSoftware/Sourcetrail/issues/233))
|
||||
* Graph: Added "Show Definition in IDE" action to context menu (issue [#687](https://github.com/CoatiSoftware/Sourcetrail/issues/687))
|
||||
* Increased contrasts in color scheme 'bright'
|
||||
* Automatically delete log files older than a month (issue #676)
|
||||
* Automatically delete log files older than a month (issue [#676](https://github.com/CoatiSoftware/Sourcetrail/issues/676))
|
||||
* Code: renamed 'relations' to 'references' in overview stats
|
||||
* Fixed bug that caused the UI to be blocked after aborting indexing on "partial clearing not possible" warning
|
||||
* Start automatic update checks on second day of use
|
||||
* Graph: Show multi-level inheritance edge in graph legend (issue #688)
|
||||
* Graph: Show multi-level inheritance edge in graph legend (issue [#688](https://github.com/CoatiSoftware/Sourcetrail/issues/688))
|
||||
* C/C++: Updated to LLVM/Clang 8.0.1
|
||||
* Graph: Use multicolumn layout for nodes with many children if none of the children has edges
|
||||
* Python: Added Python 2 & 3 support based on SourcetrailPythonIndexer (https://github.com/CoatiSoftware/SourcetrailPythonIndexer) (issue #51)
|
||||
* Python: Added Python 2 & 3 support based on [SourcetrailPythonIndexer](https://github.com/CoatiSoftware/SourcetrailPythonIndexer) (issue [#51](https://github.com/CoatiSoftware/Sourcetrail/issues/51))
|
||||
* Python: Added source group type "Empty Python" to project setup
|
||||
* Search: Edit last search element on backspace instead of deleting (issue #681)
|
||||
* Search: Edit last search element on backspace instead of deleting (issue [#681](https://github.com/CoatiSoftware/Sourcetrail/issues/681))
|
||||
* EULA: added support for lifelong licenses
|
||||
* Improved text search performance (issue #680)
|
||||
* Improved text search performance (issue [#680](https://github.com/CoatiSoftware/Sourcetrail/issues/680))
|
||||
* Windows: Fixed bug that caused texts within tooltips sometimes to be cut off
|
||||
* Fixed crash when closing license window at first start
|
||||
* Automatically replace invalid characters in project name during project setup with "_" (issue #671)
|
||||
* Windows: Added syntax highlighting rules to portable package (issue #672)
|
||||
* Automatically replace invalid characters in project name during project setup with "_" (issue [#671](https://github.com/CoatiSoftware/Sourcetrail/issues/671))
|
||||
* Windows: Added syntax highlighting rules to portable package (issue [#672](https://github.com/CoatiSoftware/Sourcetrail/issues/672))
|
||||
|
||||
#### 2019.1.11
|
||||
released 2019-02-05
|
||||
@@ -44,7 +123,7 @@ released 2019-02-05
|
||||
* Fixed error count in status bar not restored after discarding interrupted index
|
||||
* Graph: Fixed layout for inheritance chains
|
||||
* Added syntax highlighting rules for Python
|
||||
* Rerun cxx global header path detection if skipped due to error in previous release (issue #664)
|
||||
* Rerun cxx global header path detection if skipped due to error in previous release (issue [#664](https://github.com/CoatiSoftware/Sourcetrail/issues/664))
|
||||
* Fixed status error may not show up if custom command fails on Windows
|
||||
* Graph: Fixed right click activates edge on Windows but should not
|
||||
* C/C++: Always add compiler header path to global include paths and warn user about possible problems
|
||||
@@ -56,13 +135,13 @@ released 2019-02-05
|
||||
* Project Setup: Double-click in project setup list boxes adds new line
|
||||
* Graph: Only bundle as "importing files" when "import" edge is present
|
||||
* Graph: Prevent flickering of edges when going back after multiple edge activations
|
||||
* Fixed relative paths not working in Code::Blocks project files (issue #663)
|
||||
* Graph: Remove virtual nodes in depth-graph edges when moving nodes (issue #639)
|
||||
* Added exception handling for HTTP request exceptions in update checker (issue #659)
|
||||
* Clear screen-search matches when the active symbol in the view changes (issue #660)
|
||||
* Wrap lines in status and error table (issue #658)
|
||||
* Graph: Elide name of active node if it has more than 100 characters (issue #652)
|
||||
* Added link to changelog to help menu (issue #653)
|
||||
* Fixed relative paths not working in Code::Blocks project files (issue [#663](https://github.com/CoatiSoftware/Sourcetrail/issues/663))
|
||||
* Graph: Remove virtual nodes in depth-graph edges when moving nodes (issue [#639](https://github.com/CoatiSoftware/Sourcetrail/issues/639))
|
||||
* Added exception handling for HTTP request exceptions in update checker (issue [#659](https://github.com/CoatiSoftware/Sourcetrail/issues/659))
|
||||
* Clear screen-search matches when the active symbol in the view changes (issue [#660](https://github.com/CoatiSoftware/Sourcetrail/issues/660))
|
||||
* Wrap lines in status and error table (issue [#658](https://github.com/CoatiSoftware/Sourcetrail/issues/658))
|
||||
* Graph: Elide name of active node if it has more than 100 characters (issue [#652](https://github.com/CoatiSoftware/Sourcetrail/issues/652))
|
||||
* Added link to changelog to help menu (issue [#653](https://github.com/CoatiSoftware/Sourcetrail/issues/653))
|
||||
|
||||
#### 2018.4.45
|
||||
released 2018-12-18
|
||||
@@ -75,28 +154,27 @@ released 2018-12-18
|
||||
* C/C++: Still log the first 20.000 characters of the Clang invocation if verbose indexer logging is disabled
|
||||
* Added Source Group Custom Command to use with SourcetrailDB binaries
|
||||
* Fixed indexed source files not updated when clicking "show files" after other changes in project setup
|
||||
* Linux: Fixed issue in sourcetrail.sh script (issue #638)
|
||||
* Inspect errors during indexing (issue #235)
|
||||
* C/C++: Fixed header path selection in Source Group setup also preselects non exsiting paths (issue #640)
|
||||
* Linux: Fixed issue in sourcetrail.sh script (issue [#638](https://github.com/CoatiSoftware/Sourcetrail/issues/638))
|
||||
* Inspect errors during indexing (issue [#235](https://github.com/CoatiSoftware/Sourcetrail/issues/235))
|
||||
* C/C++: Fixed header path selection in Source Group setup also preselects non exsiting paths (issue [#640](https://github.com/CoatiSoftware/Sourcetrail/issues/640))
|
||||
* Graph: Fixed graph node centering shows right end when node has greater width than view
|
||||
* Code: Fixed multiple multiline comments within one line not correctly highlighted
|
||||
* Code: Changed snippet style, removing per file frame and minimize/snippet buttons
|
||||
* C/C++: Fixed shrinking shared memory below initial size (issue #636)
|
||||
* Fixed indexers still waiting until less storages are queued, although indexing was already interrupted (issue #634)
|
||||
* C/C++: Fixed shrinking shared memory below initial size (issue [#636](https://github.com/CoatiSoftware/Sourcetrail/issues/636))
|
||||
* Fixed indexers still waiting until less storages are queued, although indexing was already interrupted (issue [#634](https://github.com/CoatiSoftware/Sourcetrail/issues/634))
|
||||
* Fixed interrupting indexing while dialog hidden
|
||||
* Graph: Fixed nodes and edges stay highlighted after hovering in code
|
||||
* C/C++: Reduced shared memory consumption during indexing when indexers are faster than db insertion
|
||||
|
||||
|
||||
#### 2018.4.8
|
||||
released 2018-11-05
|
||||
released 2018-11-13
|
||||
|
||||
* Fixed search activates wrong symbol if multiple potential matches share the same "long" symbol name
|
||||
* C++: Fixed infinite iteration when solving parent name of C++ template arguments with multiple parent contexts
|
||||
* C++: Only log Clang tool invocation info when enabling "verbose indexer logging"
|
||||
* Running shrink on shared memory that is used to transfer data between processes during indexing from time to time
|
||||
* Added tabs UI to top of main window (issue #215)
|
||||
* Linux: Fixed no write permission to ~/.config/sourcetrail after installation (issue #625, #626)
|
||||
* Added tabs UI to top of main window (issue [#215](https://github.com/CoatiSoftware/Sourcetrail/issues/215))
|
||||
* Linux: Fixed no write permission to ~/.config/sourcetrail after installation (issue [#625](https://github.com/CoatiSoftware/Sourcetrail/issues/625), [#626](https://github.com/CoatiSoftware/Sourcetrail/issues/626))
|
||||
* C++: Added type usage edges from parent context for types that occur as template arguments
|
||||
* C++: Skip recording of implicit local symbols
|
||||
* Java: Show explicit error message if no Java path provided in preferences
|
||||
@@ -114,7 +192,7 @@ released 2018-11-05
|
||||
* Code: Fixed crash on code view scope expansion
|
||||
* Rewrote indexer data recording API to rely on IDs instead of strings for faster indexer performance
|
||||
* Removed unnecessary SQLite indexes for smaller database size
|
||||
* JAVA: display multi-line maven error messages (issue #622)
|
||||
* JAVA: display multi-line maven error messages (issue [#622](https://github.com/CoatiSoftware/Sourcetrail/issues/622))
|
||||
* Improved indexer storing performance by splitting insertion into multiples of pre-compiled SQLite batch insert statements
|
||||
* Reduced copies during indexer data recording
|
||||
* Improved cache lookups in indexer data recording
|
||||
@@ -122,27 +200,26 @@ released 2018-11-05
|
||||
* C/C++: Reduced waiting time when interrupting indexer processes
|
||||
* C/C++: Improved name handling and caching performance
|
||||
* Fixed edge cases in determining files to update/clear when re-indexing
|
||||
* C/C++: record and display indexer configuration issues (issue #618)
|
||||
* C/C++: record and display indexer configuration issues (issue [#618](https://github.com/CoatiSoftware/Sourcetrail/issues/618))
|
||||
* Windows: Log success of Visual Studio path detector instead of printing to console
|
||||
* Generate and pass index file commands to indexers one by one to reduce memory consumption
|
||||
* C/C++: Query files from compilation database one by one to reduce memory consumption
|
||||
* Java: changed type_argument edges to originate in the generic type or method
|
||||
* Optimized storage in-memory caches to reduce memory use during indexing
|
||||
|
||||
|
||||
#### 2018.3.55
|
||||
released 2018-08-31
|
||||
|
||||
* C/C++: Fixed crash on logging Clang invocation info with flags that throw errors (issue #617)
|
||||
* Plugin: Move window to the front when sending symbol via plugin (issue #605)
|
||||
* C/C++: Fixed crash on logging Clang invocation info with flags that throw errors (issue [#617](https://github.com/CoatiSoftware/Sourcetrail/issues/617))
|
||||
* Plugin: Move window to the front when sending symbol via plugin (issue [#605](https://github.com/CoatiSoftware/Sourcetrail/issues/605))
|
||||
* Java: Fixed crash on Windows if JVM tries to allocate too much memory
|
||||
* Java: Fixed loading dialogs shown in main window instead of project setup dialog for setup with gradle
|
||||
* Graph: Display bundle node count as pill instead of circle
|
||||
* Fixed crash that had a chance to occur when showing source files of cdb/cbp/sonargraph project during setup
|
||||
* Fixed source extensions not converted to lowercase (issue #614)
|
||||
* C/C++: fixed line of errors wrong when appearing after #line directives (issue #610)
|
||||
* Graph: Clear graph contents on overview (issue #609)
|
||||
* Windows: Fixed policy for finding Windows user data folder (issue #612)
|
||||
* Fixed source extensions not converted to lowercase (issue [#614](https://github.com/CoatiSoftware/Sourcetrail/issues/614))
|
||||
* C/C++: fixed line of errors wrong when appearing after #line directives (issue [#610](https://github.com/CoatiSoftware/Sourcetrail/issues/610))
|
||||
* Graph: Clear graph contents on overview (issue [#609](https://github.com/CoatiSoftware/Sourcetrail/issues/609))
|
||||
* Windows: Fixed policy for finding Windows user data folder (issue [#612](https://github.com/CoatiSoftware/Sourcetrail/issues/612))
|
||||
* C/C++: Fixed recording of multiple cxx anonymous namespaces within the same file
|
||||
* C/C++: Fixed files within indexed directories always refreshed in empty C/C++ source groups
|
||||
* Code: Don't show list of overriden methods when clicking overriding method
|
||||
@@ -159,9 +236,8 @@ released 2018-08-31
|
||||
* Indexer: Don't shuffle file order for indexing
|
||||
* Indexer: Improved storing performance by optimizing insertion statements and indices
|
||||
|
||||
|
||||
#### 2018.3.13
|
||||
released 2018-08-07
|
||||
released 2018-08-06
|
||||
|
||||
* Code: Fixed text search locations sometimes disappearing when expanding scope of code snippets
|
||||
* Graph: Added Expand/Collapse Node actions to graph context menu
|
||||
@@ -175,35 +251,35 @@ released 2018-08-07
|
||||
* Prefill system specific paths in application settings only once
|
||||
* Added check if entered project name is a valid file name
|
||||
* Windows: Fixed names of available header path detectors
|
||||
* Graph: Show graph legend via 'legend' command or '?' button in the lower right corner (issue #308, #540)
|
||||
* Graph: Show graph legend via 'legend' command or '?' button in the lower right corner (issue [#308](https://github.com/CoatiSoftware/Sourcetrail/issues/308), [#540](https://github.com/CoatiSoftware/Sourcetrail/issues/540))
|
||||
* C/C++: Ship clang compiler headers also for Windows
|
||||
* Code: Added on-demand local reference navigation to code view navigation bar (issue #453, #538)
|
||||
* Code: Added on-demand local reference navigation to code view navigation bar (issue [#453](https://github.com/CoatiSoftware/Sourcetrail/issues/453), [#538](https://github.com/CoatiSoftware/Sourcetrail/issues/538))
|
||||
* Improved button texts for "reindexing required" dialog
|
||||
* Code: Scroll code horizontally to active source location if out of view
|
||||
* Graph: Added show definition context menu action/shortcut to show definition of any node in the code (issue #83)
|
||||
* Graph: Added show definition context menu action/shortcut to show definition of any node in the code (issue [#83](https://github.com/CoatiSoftware/Sourcetrail/issues/83))
|
||||
* Improved project loading speed
|
||||
* Create project directory during project setup if not existing
|
||||
* Tooltip: Show function/method signatures exactly as declared in source file
|
||||
* Search: Improved autocompletion scoring to process more symbols
|
||||
* Search: Fixed autocompletions fail with wide characters (issue #598)
|
||||
* Search: Fixed autocompletions fail with wide characters (issue [#598](https://github.com/CoatiSoftware/Sourcetrail/issues/598))
|
||||
* Windows: Show error text when opening external .dll fails
|
||||
* C/C++: Highlight opening and closing braces in code when hovering either one (issue #12)
|
||||
* C/C++: Highlight opening and closing braces in code when hovering either one (issue [#12](https://github.com/CoatiSoftware/Sourcetrail/issues/12))
|
||||
* macOS: Fixed start screen not disappearing when launching Sourcetrail by opening a project
|
||||
* Graph: Fixed restoring of scroll position in graph on undo broken
|
||||
* Graph: Hide children with type use edges to parent if parent is active
|
||||
* Bookmark: Fixed bookmark creator dialog header not visible
|
||||
* Graph: Show parameters for functions/methods with same name (issue #259)
|
||||
* Graph: exporting graph as .svg (issue #596)
|
||||
* Graph: Show parameters for functions/methods with same name (issue [#259](https://github.com/CoatiSoftware/Sourcetrail/issues/259))
|
||||
* Graph: exporting graph as .svg (issue [#596](https://github.com/CoatiSoftware/Sourcetrail/issues/596))
|
||||
* Show indexing progress bar in status bar
|
||||
* Keep browsing old project state while indexing (issue #175)
|
||||
* Keep browsing old project state while indexing (issue [#175](https://github.com/CoatiSoftware/Sourcetrail/issues/175))
|
||||
* Java: Added support for Java 9 & 10
|
||||
* Added project setup from Sonargraph project for C, C++ and Java.
|
||||
* Migrate old ".coatiproject" settings to new ".srctrlprj" extension when loading project
|
||||
* Allow discarding unfinished index when aborting indexing
|
||||
* Fixed partly indexed project can't be opened after closing while indexing (issue #594)
|
||||
* Fixed partly indexed project can't be opened after closing while indexing (issue [#594](https://github.com/CoatiSoftware/Sourcetrail/issues/594))
|
||||
* C/C++: Show translation unit of indexing errors
|
||||
* Fixed activating history item from menu showed wrong symbol (issue #572)
|
||||
* Fixed all errors shown when only showing errors for certain file and changing error filter (issue #577)
|
||||
* Fixed activating history item from menu showed wrong symbol (issue [#572](https://github.com/CoatiSoftware/Sourcetrail/issues/572))
|
||||
* Fixed all errors shown when only showing errors for certain file and changing error filter (issue [#577](https://github.com/CoatiSoftware/Sourcetrail/issues/577))
|
||||
* Added pagination to project setup dialogs
|
||||
* C/C++: Make complete file incomplete if it has errors in later translation units
|
||||
|
||||
@@ -213,7 +289,7 @@ released 2018-06-18
|
||||
|
||||
* C/C++: Fixed incomplete header file got changed to complete from correct translation unit, although it had errors
|
||||
* Fixed show errors button click on incomplete file with no associated errors showed all errors
|
||||
* C/C++: Ship clang compiler headers within package on macOS and Linux (issue #99)
|
||||
* C/C++: Ship clang compiler headers within package on macOS and Linux (issue [#99](https://github.com/CoatiSoftware/Sourcetrail/issues/99))
|
||||
* Graph: Fixed undoing one of multiple edge activations caused multiple recenterings of the graph
|
||||
* Fixed links not clickable in source group type selection
|
||||
* Explicitly clear all errors when refreshing incomplete files
|
||||
@@ -222,13 +298,12 @@ released 2018-06-18
|
||||
* Code: Fixed snippet minimize click expanded snippet again
|
||||
* Fixed changing of selected source group not possible if validity check fails.
|
||||
* C/C++: Added C/C++ project setup from Code::Blocks (.cdb), which is also created for cmake projects in QtCreator
|
||||
* C/C++: fixed endless loop in include path auto detection (issue #585, #470)
|
||||
* C/C++: fixed endless loop in include path auto detection (issue [#585](https://github.com/CoatiSoftware/Sourcetrail/issues/585), [#470](https://github.com/CoatiSoftware/Sourcetrail/issues/470))
|
||||
* C/C++: fixed crash in include validation in source group setup
|
||||
* Fixed typo in update check (issue #586)
|
||||
* Fixed typo in update check (issue [#586](https://github.com/CoatiSoftware/Sourcetrail/issues/586))
|
||||
* C/C++: Added some compiler flags checks
|
||||
* C/C++: Errors without location are now recorded for current main file
|
||||
|
||||
|
||||
#### 2018.2.36
|
||||
released 2018-05-04
|
||||
|
||||
@@ -236,21 +311,20 @@ released 2018-05-04
|
||||
* Improved help dialog for compiler flags in project setup
|
||||
* Fixed handling case insensitive filepath matches when activating a symbol via editor plugin
|
||||
* Wrote cmake export compile command to description in source group setup
|
||||
* Fixed macOS gatekeeper refusing to open app bundle (issue #568)
|
||||
* Fixed macOS gatekeeper refusing to open app bundle (issue [#568](https://github.com/CoatiSoftware/Sourcetrail/issues/568))
|
||||
* Use custom radio button style on start indexing dialog to fix radio indicator not visible on old Windows systems
|
||||
* Fixed indexed header paths in compilation database project change the processing order of includes (issue #571)
|
||||
* Allow tooltips to be as wide as the window (issue #570)
|
||||
* Fixed indexed header paths in compilation database project change the processing order of includes (issue [#571](https://github.com/CoatiSoftware/Sourcetrail/issues/571))
|
||||
* Allow tooltips to be as wide as the window (issue [#570](https://github.com/CoatiSoftware/Sourcetrail/issues/570))
|
||||
* Graph: Improved edge routing in graph layout
|
||||
* Graph: Only use base/derived bundles for inheritance
|
||||
|
||||
|
||||
#### 2018.2.23
|
||||
released 2018-04-24
|
||||
|
||||
* C/C++: removed check if header was already indexed to fix missing data due to different preprocessor conditions.
|
||||
* Fixed fulltext search missing results for queries with many matches in the same file.
|
||||
* Fixed crash on converting relative paths to canonical paths in project setup
|
||||
* Also clear errors in non-indexed files when refreshing "updated and incomplete files" (issue #564)
|
||||
* Also clear errors in non-indexed files when refreshing "updated and incomplete files" (issue [#564](https://github.com/CoatiSoftware/Sourcetrail/issues/564))
|
||||
* Updated about dialog to new company name
|
||||
* Graph: Improved layout of aggregation edges
|
||||
* Fixed race condition causing crashes when showing tooltips
|
||||
@@ -268,21 +342,21 @@ released 2018-04-24
|
||||
* Graph: Improved horizontal layout to avoid edges overlapping nodes
|
||||
* Show versions of 3rd party dependencies in 3rd party dialog
|
||||
* Updated help info for update check
|
||||
* Graph: Group graph nodes by file or namespace (issues #171, #439, #522)
|
||||
* Graph: Group graph nodes by file or namespace (issues [#171](https://github.com/CoatiSoftware/Sourcetrail/issues/171), [#439](https://github.com/CoatiSoftware/Sourcetrail/issues/439), [#522](https://github.com/CoatiSoftware/Sourcetrail/issues/522))
|
||||
* Graph: Layout template specializations vertically and show them in inheritance depth graph
|
||||
* Graph: Show symbols defined within file when activating file node (issue #268)
|
||||
* Graph: Show symbols defined within file when activating file node (issue [#268](https://github.com/CoatiSoftware/Sourcetrail/issues/268))
|
||||
* UI: Updated to Qt 5.10.1
|
||||
* C/C++: Updated to clang 6.0
|
||||
* Graph: better contrast for non-indexed hatching colors
|
||||
* Graph: group nodes with same base and derived nodes in inheritance depth graph (issue #459)
|
||||
* Code: Lazy load code annotations for shorter display time (issue #389)
|
||||
* Code: Improved snippet display time (issue #389)
|
||||
* C++: fixed infinite recursion while solving c++ template parameter names (issue #553)
|
||||
* Graph: group nodes with same base and derived nodes in inheritance depth graph (issue [#459](https://github.com/CoatiSoftware/Sourcetrail/issues/459))
|
||||
* Code: Lazy load code annotations for shorter display time (issue [#389](https://github.com/CoatiSoftware/Sourcetrail/issues/389))
|
||||
* Code: Improved snippet display time (issue [#389](https://github.com/CoatiSoftware/Sourcetrail/issues/389))
|
||||
* C++: fixed infinite recursion while solving c++ template parameter names (issue [#553](https://github.com/CoatiSoftware/Sourcetrail/issues/544))
|
||||
* Added close button to status view
|
||||
* Improved style of tab bar in status view
|
||||
* Added Show Errors button to title bar of incomplete files to show only errors related to certain file (issue #246)
|
||||
* Added sorting to error table columns (issue #559)
|
||||
* Added wildcards for excluded paths (issue #475)
|
||||
* Added Show Errors button to title bar of incomplete files to show only errors related to certain file (issue [#246](https://github.com/CoatiSoftware/Sourcetrail/issues/246))
|
||||
* Added sorting to error table columns (issue [#559](https://github.com/CoatiSoftware/Sourcetrail/issues/559))
|
||||
* Added wildcards for excluded paths (issue [#475](https://github.com/CoatiSoftware/Sourcetrail/issues/475))
|
||||
* Option to accept EULA via commandline API
|
||||
* Changed seats to users for Commercial License in EULA
|
||||
* Graph: Improved vertical layout for override and inheritance edges
|
||||
@@ -291,23 +365,22 @@ released 2018-04-24
|
||||
* Allow non-ASCII characters in bookmarks
|
||||
* Allow non-ASCII characters in file paths
|
||||
|
||||
|
||||
#### 2018.1.19
|
||||
released 2018-01-30
|
||||
|
||||
* Fixed crash on filling DirectoryListBox with no selected items (issue #544, #545)
|
||||
* Fixed crash on filling DirectoryListBox with no selected items (issue [#544](https://github.com/CoatiSoftware/Sourcetrail/issues/544), [#545](https://github.com/CoatiSoftware/Sourcetrail/issues/545))
|
||||
* Graph: Improved type node contrast in bright color scheme
|
||||
* Code: Fixed going back in history sometimes showed the wrong file when an edge was activated last
|
||||
* Code: Clicking on active location will activate it again and show it's definition
|
||||
* Graph: Don't keep expanded nodes expanded after using symbol search
|
||||
* Fixed file picker didn't start in recent directory when exporting graph as image (issue #541)
|
||||
* Fixed file picker didn't start in recent directory when exporting graph as image (issue [#541](https://github.com/CoatiSoftware/Sourcetrail/issues/541))
|
||||
* Code: Fixed file content shown multiple times when clicking title button of non-indexed file with errors
|
||||
* Preferences: Only show latin fonts in the font face dropdown
|
||||
* Code: Fixed gaps in line indicators for some font faces
|
||||
* Windows: Show indexing progress in Windows task bar
|
||||
* Linux: Added settings to change screen scaling to preferences (issue #518, #523)
|
||||
* Linux: Added settings to change screen scaling to preferences (issue [#518](https://github.com/CoatiSoftware/Sourcetrail/issues/518), [#523](https://github.com/CoatiSoftware/Sourcetrail/issues/523))
|
||||
* Allow for disabling certain Source Groups via Status checkbox in the "Edit Project" dialog
|
||||
* C/C++: Fixed no indexed information saved for compilation database referencing certain compiler (issue #531)
|
||||
* C/C++: Fixed no indexed information saved for compilation database referencing certain compiler (issue [#531](https://github.com/CoatiSoftware/Sourcetrail/issues/531))
|
||||
* Increased history dropdown list size to 50 items
|
||||
* Still allow project refresh if database file can't be loaded
|
||||
* Removed focus outlines from push buttons
|
||||
@@ -324,8 +397,8 @@ released 2018-01-30
|
||||
* C/C++: Fixed policy for recording elements inside macro arguments and bodies
|
||||
* Allow users to ignore warning on non-existing paths in project setup
|
||||
* Code: Switch to single file view when clicking snippet maximize
|
||||
* Code: Show scrollbar at bottom of snippet list if bottom snippet is horizontally scrollable (issue #432)
|
||||
* Code: Keep snippet title bar at top when scrolling down (issue #479)
|
||||
* Code: Show scrollbar at bottom of snippet list if bottom snippet is horizontally scrollable (issue [#432](https://github.com/CoatiSoftware/Sourcetrail/issues/432))
|
||||
* Code: Keep snippet title bar at top when scrolling down (issue [#479](https://github.com/CoatiSoftware/Sourcetrail/issues/479))
|
||||
* Fixed history dropdown opened again when clicking on button again
|
||||
* Code: Fixed single file view cleared when refreshing
|
||||
* Graph: Added "Exported from Sourcetrail" note to exported graph images
|
||||
@@ -334,50 +407,49 @@ released 2018-01-30
|
||||
* Group include validation results by file and add line breaks for readability
|
||||
* Fixed location pickers used system root directory when empty
|
||||
* Graph: Add "bidirectional" to tooltip of bidirectional aggregation edges
|
||||
* Linux: Don't explicitely open terminal when running on Linux (issue #525)
|
||||
* Fixed files and directories dialog to offer selection of files (issue #521)
|
||||
* Linux: Don't explicitely open terminal when running on Linux (issue [#525](https://github.com/CoatiSoftware/Sourcetrail/issues/525))
|
||||
* Fixed files and directories dialog to offer selection of files (issue [#521](https://github.com/CoatiSoftware/Sourcetrail/issues/521))
|
||||
* C++: Fixed cases where references to members were recorded as usage instead of call
|
||||
* Fixed crash when Start Screen is closed while checking for update
|
||||
* Search: Fixed selected text not deleted when pasting into search field (issue #527)
|
||||
* Search: Fixed selected text not deleted when pasting into search field (issue [#527](https://github.com/CoatiSoftware/Sourcetrail/issues/527))
|
||||
* C++: Record template variable specialization edges
|
||||
* Code: Use different background color in snippet list to improve visual layering
|
||||
* Don't force full project refresh when project settings changed (issue #493)
|
||||
* Added indexing mode to reindex incomplete files (issue #496)
|
||||
* Don't force full project refresh when project settings changed (issue [#493](https://github.com/CoatiSoftware/Sourcetrail/issues/493))
|
||||
* Added indexing mode to reindex incomplete files (issue [#496](https://github.com/CoatiSoftware/Sourcetrail/issues/496))
|
||||
* Java: Allow using .aar files as Java project dependencies
|
||||
* Java: fixed some Java exceptions and write Java exceptions to log file
|
||||
* Java: Note architecture of Java version in preferences dialog
|
||||
* Code: Show line indicators for fulltext search results and fixed matches at line start
|
||||
* Graph: Update visible depth graph when changing depth level slider (issue #484)
|
||||
* Graph: Update visible depth graph when changing depth level slider (issue [#484](https://github.com/CoatiSoftware/Sourcetrail/issues/484))
|
||||
* Always show all context menu actions, but disable unavailable ones
|
||||
* Graph: Hide nodes and edges via context menu action or Alt + Click (issue #472)
|
||||
* Graph: Added option to preferences to show/hide builtin types, default is hidden (issue #409)
|
||||
* Graph: Hide nodes and edges via context menu action or Alt + Click (issue [#472](https://github.com/CoatiSoftware/Sourcetrail/issues/472))
|
||||
* Graph: Added option to preferences to show/hide builtin types, default is hidden (issue [#409](https://github.com/CoatiSoftware/Sourcetrail/issues/409))
|
||||
* Improved style and color of scrollbars and main window separators
|
||||
* Linux: Fixed icon sizes when scaling to highDPI fails
|
||||
* Search: Fixed cursor disappearing when entering long string in the search field
|
||||
* C++: Fixed parent node hierarchy for C++ template parameters of variable declarations
|
||||
* Linux: Fixed syntax error in Sourcetrail.sh (issue #519)
|
||||
* Linux: Fixed syntax error in Sourcetrail.sh (issue [#519](https://github.com/CoatiSoftware/Sourcetrail/issues/519))
|
||||
* Graph: Improved exported image quality
|
||||
* Graph: Fixed exported graph image were too large (issue #511)
|
||||
* Graph: Fixed exported graph image were too large (issue [#511](https://github.com/CoatiSoftware/Sourcetrail/issues/511))
|
||||
* Fixed crashes due to double deleted Qt widgets
|
||||
* Fixed crash when specifying an unknown text encoding in the preferences
|
||||
* C++: Fixed retrieval of CXX template parameter declarations of parent
|
||||
* C/C++: Fixed filepaths to always be canonical (issue #516)
|
||||
* C/C++: Fixed filepaths to always be canonical (issue [#516](https://github.com/CoatiSoftware/Sourcetrail/issues/516))
|
||||
* Graph: Fixed implicit nodes not auto-expanded when activated
|
||||
* C/C++: Add filename info to static functions (issue #515)
|
||||
|
||||
* C/C++: Add filename info to static functions (issue [#515](https://github.com/CoatiSoftware/Sourcetrail/issues/515))
|
||||
|
||||
#### 2017.4.46
|
||||
released 2017-11-09
|
||||
|
||||
* C/C++: Add filename info to static global variables to avoid collision (issue #514)
|
||||
* C/C++: Add filename info to static global variables to avoid collision (issue [#514](https://github.com/CoatiSoftware/Sourcetrail/issues/514))
|
||||
* Allow duplicate indexing of source files if the indexer command differs
|
||||
* Fixed single header files within indexed paths were not indexed (issue #513
|
||||
* Status: Explain differences of errors and how to fix them in help message dialog (issue #501)
|
||||
* Fixed single header files within indexed paths were not indexed (issue [#513](https://github.com/CoatiSoftware/Sourcetrail/issues/513))
|
||||
* Status: Explain differences of errors and how to fix them in help message dialog (issue [#501](https://github.com/CoatiSoftware/Sourcetrail/issues/501))
|
||||
* C/C++: Add parent directories of source files in the compilation database automatically to indexed header paths
|
||||
* C/C++: Give clang higher precedence in automatic global header search path detection
|
||||
* C/C++: Added new clang 5.0.0 language standards to project setup dropdown box
|
||||
* Graph: Show nodes with more than 20 children initially collapsed (issue #509)
|
||||
* Show message box informing about shared memory problems before indexing (issue #508)
|
||||
* Graph: Show nodes with more than 20 children initially collapsed (issue [#509](https://github.com/CoatiSoftware/Sourcetrail/issues/509))
|
||||
* Show message box informing about shared memory problems before indexing (issue [#508](https://github.com/CoatiSoftware/Sourcetrail/issues/508))
|
||||
* Fixed files from symlinked directories within indexed directories were not indexed
|
||||
* Start from correct directory for relative paths in project setup location pickers
|
||||
* Java: Added all previous Java versions to language standard selection
|
||||
@@ -388,20 +460,19 @@ released 2017-11-09
|
||||
* Search: Fixed focus and selection policy of search elements for Windows and Linux
|
||||
* Graph: Fixed type usage edges not shown between class members and inner class types
|
||||
* Graph: Fixed activation of bookmarked edge did not highlight edge in all situations
|
||||
* Status: Fixed resize status view table columns were only resizeable in the title bar (issue #506)
|
||||
* Added setting for text encoding to preferences (issue #500)
|
||||
* Search: Fixed low contrast of search field cursor in dark schemes (issue #487)
|
||||
|
||||
* Status: Fixed resize status view table columns were only resizeable in the title bar (issue [#506](https://github.com/CoatiSoftware/Sourcetrail/issues/506))
|
||||
* Added setting for text encoding to preferences (issue [#500](https://github.com/CoatiSoftware/Sourcetrail/issues/500))
|
||||
* Search: Fixed low contrast of search field cursor in dark schemes (issue [#487](https://github.com/CoatiSoftware/Sourcetrail/issues/487))
|
||||
|
||||
#### 2017.4.20
|
||||
released 2017-10-25
|
||||
|
||||
* Code: Fixed file state of snippets wrong after iterating references in single file view
|
||||
* Search: Improved selection on focus to allow editing of search query (issue #483)
|
||||
* Search: Improved selection on focus to allow editing of search query (issue [#483](https://github.com/CoatiSoftware/Sourcetrail/issues/483))
|
||||
* Code: Fixed last line removed in full file view
|
||||
* Fixed local symbol activation via plugin shows empty view
|
||||
* Fixed handling of symbolic links when activated via plugin (issue #489)
|
||||
* Code: Fixed crash due to double deletion of elements (issue #488)
|
||||
* Fixed handling of symbolic links when activated via plugin (issue [#489](https://github.com/CoatiSoftware/Sourcetrail/issues/489))
|
||||
* Code: Fixed crash due to double deletion of elements (issue [#488](https://github.com/CoatiSoftware/Sourcetrail/issues/488))
|
||||
* Code: Show shortcut 'Ctrl + Left Mouse' in code for 'Show in IDE' context menu action
|
||||
* Improved names, texts and order in project setup
|
||||
* macOS: Fixed start screen did not vanish when opening project with double click
|
||||
@@ -414,15 +485,15 @@ released 2017-10-25
|
||||
* Linux: Enabled Qt highDPI scaling to fix UI issues on high resolution screens
|
||||
* Fixed handling of non-indexed files in Graph and Code
|
||||
* C/C++: Removed include check validataion for compilation database source groups
|
||||
* Graph: Bundle nested anonymous namespaces into anonymous namespace bundle in namespace overview (issue #465)
|
||||
* Graph: Bundle nested anonymous namespaces into anonymous namespace bundle in namespace overview (issue [#465](https://github.com/CoatiSoftware/Sourcetrail/issues/465))
|
||||
* Search: Fixed vertical growth of search bar area when resizing window
|
||||
* Visual Studio plugin: Lots off fixes, see changelog (https://github.com/CoatiSoftware/vs-sourcetrail/blob/master/CHANGELOG.md)
|
||||
* Sublime Text plugin: Fixed plugin not working when installed via Package Control (issue #468)
|
||||
* Windows: Added missing Qt dlls to save graph images as .jpg (issue #474)
|
||||
* Windows: Added missing Qt dlls to save graph images as .jpg (issue [#474](https://github.com/CoatiSoftware/Sourcetrail/issues/474))
|
||||
* C/C++: Updated to Clang 5.0.0
|
||||
* Code: Fixed annotations missing for full file snippets
|
||||
* Java: Added project setup from Gradle (issue #379)
|
||||
* Added "Find On-Screen" option with search bar at bottom of window for searching Graph and Code on-screen (issue #79)
|
||||
* Java: Added project setup from Gradle (issue [#379](https://github.com/CoatiSoftware/Sourcetrail/issues/379))
|
||||
* Added "Find On-Screen" option with search bar at bottom of window for searching Graph and Code on-screen (issue [#79](https://github.com/CoatiSoftware/Sourcetrail/issues/79))
|
||||
* Use "Find On-Screen" with 'Ctrl + D' or '/'
|
||||
* Graph: Added C++ template specialization and template member specialization edges
|
||||
* Graph: Show implicit children of implicit nodes
|
||||
@@ -431,7 +502,6 @@ released 2017-10-25
|
||||
* C++: Improved recording of template member specializations
|
||||
* Refresh only files where content actually changed
|
||||
|
||||
|
||||
#### 2017.3.48
|
||||
released 2017-09-07
|
||||
|
||||
@@ -439,13 +509,13 @@ released 2017-09-07
|
||||
* Java: Use same node order in graph as in file
|
||||
* Code: Added second line marker color to better highlight hovered and local symbols
|
||||
* Added "Skip this Version" option to update dialog
|
||||
* Search: replace template arguments with .. in non-indexed nodes to reduce clutter in search results
|
||||
* Search: replace template arguments with <..> in non-indexed nodes to reduce clutter in search results
|
||||
* Code: Fixed default text color not reset text was annotated in dark schemes
|
||||
* Code: Fixed text color not correctly changed when annotation type changes
|
||||
* Fixed history list activating wrong symbol after aggregation edge was active
|
||||
* Added node type keywords to filter autocompletions or activate all nodes (issue #78)
|
||||
* File dialog shows home directory instead of working directory for first file dialog (issue #448)
|
||||
* Java: improved Maven timeout policy (issue #449)
|
||||
* Added node type keywords to filter autocompletions or activate all nodes (issue [#78](https://github.com/CoatiSoftware/Sourcetrail/issues/78))
|
||||
* File dialog shows home directory instead of working directory for first file dialog (issue [#448](https://github.com/CoatiSoftware/Sourcetrail/issues/448))
|
||||
* Java: improved Maven timeout policy (issue [#449](https://github.com/CoatiSoftware/Sourcetrail/issues/449))
|
||||
* Fixed indexing results insertion starving when indexers are really fast because of other UI updates
|
||||
|
||||
#### 2017.3.26
|
||||
@@ -455,19 +525,19 @@ released 2017-08-24
|
||||
* Changed default indexer thread count to 0, which uses optimal thread count
|
||||
* Java: Changed default value for maven dependencies directory
|
||||
* Java: improved indexing speed to be 2.5 time faster
|
||||
* Added commandline API for indexing projects and configuring indexing related preferences (issue #383)
|
||||
* Added commandline API for indexing projects and configuring indexing related preferences (issue [#383](https://github.com/CoatiSoftware/Sourcetrail/issues/383))
|
||||
* Mention call/inheritance graphs in tutorial
|
||||
* CXX: Save command line info of indexer command to errors and show within errors table (issue #351)
|
||||
* CXX: Added cross-compilation UI to project setup (issue #370)
|
||||
* CXX: Save command line info of indexer command to errors and show within errors table (issue [#351](https://github.com/CoatiSoftware/Sourcetrail/issues/351))
|
||||
* CXX: Added cross-compilation UI to project setup (issue [#370](https://github.com/CoatiSoftware/Sourcetrail/issues/370))
|
||||
* Added update checker connecting to online API and checkbox to enable daily update checks on start screen.
|
||||
* Java: Implemented interrupting AST visiting of Java indexer
|
||||
* Java: Updated to JavaSymbolSolver 0.6.0.X and Javaparser 3.3.0
|
||||
* CXX: Removed preprocessor only option, because of new include path validation
|
||||
* CXX: Fixed uppercase CXX header file name and extensions saved in lowercase (issue #437)
|
||||
* CXX: Fixed uppercase CXX header file name and extensions saved in lowercase (issue [#437](https://github.com/CoatiSoftware/Sourcetrail/issues/396))
|
||||
* Code: When clicking source location with multiple tokens or local symbols show a list to select one of these
|
||||
* Sort indexer commands for increased performance
|
||||
* Added custom tooltipping to Code and Graph with clickable types of variables and signatures (issue #195)
|
||||
* Java: fix issue where Maven project did not show any source files (issue #428)
|
||||
* Added custom tooltipping to Code and Graph with clickable types of variables and signatures (issue [#195](https://github.com/CoatiSoftware/Sourcetrail/issues/195), [#331](https://github.com/CoatiSoftware/Sourcetrail/issues/331))
|
||||
* Java: fix issue where Maven project did not show any source files (issue [#428](https://github.com/CoatiSoftware/Sourcetrail/issues/428))
|
||||
* CXX: clean indexed header path selection for project setup from Compilation Database
|
||||
* Added progress dialog for "show source files" button in project setup UI
|
||||
* CXX: Added include path validation to project settings
|
||||
@@ -475,57 +545,57 @@ released 2017-08-24
|
||||
* Search: Fixed crash when fulltext search yields no results
|
||||
* Updated to Qt 5.9.1
|
||||
* CXX: Added node type for "union"
|
||||
* CXX: Merge anonymous types and the respective typedef (issue #189, #292)
|
||||
* CXX: Merge anonymous types and the respective typedef (issue [#189](https://github.com/CoatiSoftware/Sourcetrail/issues/189), [#292](https://github.com/CoatiSoftware/Sourcetrail/issues/292))
|
||||
* CXX: Updated to clang 4.0.1
|
||||
* Added Menu option to show Start Window
|
||||
* Don't show start window when opening project with double-click
|
||||
* Show license type label in title bar: "Sourcetrail [trial, test, non-commercial]"
|
||||
* Graph: Fixed class expand toggle shown in overview and namespace lists
|
||||
* Graph: Show inheritance edges between parents of active symbol and other visible symbols (issue #167)
|
||||
* Graph: Show inheritance edges between parents of active symbol and other visible symbols (issue [#167](https://github.com/CoatiSoftware/Sourcetrail/issues/167))
|
||||
* Improved project loading performance
|
||||
* Code: improved location retrieval and hover performance
|
||||
* Show recent bookmarks in bookmarks menu (issue #414)
|
||||
* Show recent bookmarks in bookmarks menu (issue [#414](https://github.com/CoatiSoftware/Sourcetrail/issues/414))
|
||||
* Code: Fixed references and buttons when activating file in snippet mode
|
||||
* Java: added auto-detection for JRE System Library
|
||||
* Java: Prefill JRE system library path on first Sourcetrail launch
|
||||
* macOS: fixed qt.conf for case-sensitive file system (issue #404)
|
||||
* macOS: fixed qt.conf for case-sensitive file system (issue [#404](https://github.com/CoatiSoftware/Sourcetrail/issues/404))
|
||||
* Improved database saving performance
|
||||
* Improved database file clearing performance
|
||||
* Improved contrasts of UI elements in bright color scheme
|
||||
* Graph: Show zoom level as percent label next to zoom buttons
|
||||
* Added Visual Studio Code plugin (issue #397)
|
||||
* Added Visual Studio Code plugin (issue [#397](https://github.com/CoatiSoftware/Sourcetrail/issues/397))
|
||||
* Added "Edit Project" button below error table
|
||||
* Java: Maven fixes regarding JAVA_HOME variable (issue #405)
|
||||
* Java: Maven fixes regarding JAVA_HOME variable (issue [#405](https://github.com/CoatiSoftware/Sourcetrail/issues/405))
|
||||
|
||||
#### 2017.2
|
||||
released 2017-06-21
|
||||
|
||||
* Fixed crash when using shortcuts containing letters with focus on the graph on macOS (issue #390)
|
||||
* Fixed crash when using shortcuts containing letters with focus on the graph on macOS (issue [#390](https://github.com/CoatiSoftware/Sourcetrail/issues/390))
|
||||
* Improved Visual Studio plugin performance
|
||||
* Updated End User License Agreement and have users accept on first run on macOS and Linux
|
||||
* Fixed memory issues when using large Compilation Database files (issue #396)
|
||||
* Fixed memory issues when using large Compilation Database files (issue [#396](https://github.com/CoatiSoftware/Sourcetrail/issues/396))
|
||||
* Updated to JavaParser and JavaSymbolSolver
|
||||
* Fixed issue where black borders appeared around dialogs for some Linux window managers (issue #376)
|
||||
* Fixed issue where black borders appeared around dialogs for some Linux window managers (issue [#376](https://github.com/CoatiSoftware/Sourcetrail/issues/376))
|
||||
* Use platform default window decorations for UI dialogs
|
||||
* Code: Made snippet minimize/maximize buttons more interactive by showing hover states
|
||||
* Code: improved code view loading performance
|
||||
* Java: Record more "import not found" errors
|
||||
* Support Visual Studio 2017 in Visual Studio Plugin (issue #381)
|
||||
* Support Visual Studio 2017 in Visual Studio Plugin (issue [#381](https://github.com/CoatiSoftware/Sourcetrail/issues/381))
|
||||
* Graph: increased creation speed by requesting less data
|
||||
* macOS: Codesign .app bundle to avoid "from unidentified developer" warning
|
||||
* Error: Use same error order in error table and code view
|
||||
* Error: Only show first 1000 errors, click button in lower right of error table to show all (issue #385)
|
||||
* Error: Only show first 1000 errors, click button in lower right of error table to show all (issue [#385](https://github.com/CoatiSoftware/Sourcetrail/issues/385))
|
||||
* Graph: use bezier edges when activating aggregation edge
|
||||
* Send ping after changing plugin ports
|
||||
* Added menu action to display EULA and force accepting on macOS
|
||||
* Fixed use of environment variables in project setup paths
|
||||
* Multi-language project setup via Source Groups setup UI (issue #230)
|
||||
* Multi-language project setup via Source Groups setup UI (issue [#230](https://github.com/CoatiSoftware/Sourcetrail/issues/230))
|
||||
* C/C++: Fixed no files indexed when relative file paths are provided in Compilation Database (issue #388)
|
||||
* C/C++: Display an error when loading a Compilation Database fails
|
||||
* C/C++: Fixed source files within Compilation Database not indexed unless within Indexed Header Paths
|
||||
* Fixed status message length limiting window resizing (issue #372)
|
||||
* Match source file extensions case insensitive (issue #384)
|
||||
* Fixed indexing progress file count in status bar and status view (issue #387)
|
||||
* Fixed status message length limiting window resizing (issue [#372](https://github.com/CoatiSoftware/Sourcetrail/issues/372))
|
||||
* Match source file extensions case insensitive (issue [#384](https://github.com/CoatiSoftware/Sourcetrail/issues/384))
|
||||
* Fixed indexing progress file count in status bar and status view (issue [#387](https://github.com/CoatiSoftware/Sourcetrail/issues/387))
|
||||
* Windows: remove setup.exe from windows installer with all necessary .dll files
|
||||
* Added history list button between back and forward button
|
||||
* Added history menu showing activated symbols in chronologic order
|
||||
@@ -534,7 +604,7 @@ released 2017-06-21
|
||||
released 2017-05-16
|
||||
|
||||
* Added QtCreator plugin
|
||||
* Graph: Added context menu action to create bookmark for node under mouse cursor (issue #373)
|
||||
* Graph: Added context menu action to create bookmark for node under mouse cursor (issue [#373](https://github.com/CoatiSoftware/Sourcetrail/issues/373))
|
||||
* Code: Fixed code view not scrolled to first fulltext search match in single file mode
|
||||
* Set unrestricted permission for accessing shared memory to fix crash on Windows
|
||||
* Improved setting descriptions in preferences dialog
|
||||
@@ -548,22 +618,22 @@ released 2017-05-16
|
||||
* Added dialog to warn about "verbose indexer logging" before indexing.
|
||||
* Added multi process indexing for C/C++ projects to better handle crashes during indexing.
|
||||
* Reduced file accesses during C/C++ indexing.
|
||||
* Graph: Show call graphs, inheritance trees and include trees for active symbol. UI in the top left of the graph view for defining direction and depth. (issues #249 #337)
|
||||
* Graph: Show call graphs, inheritance trees and include trees for active symbol. UI in the top left of the graph view for defining direction and depth. (issues [#249](https://github.com/CoatiSoftware/Sourcetrail/issues/249) [#337](https://github.com/CoatiSoftware/Sourcetrail/issues/337))
|
||||
* Improved performance by running UI updates in parallel for each view
|
||||
* Fixed project refresh not recognizing newly added files
|
||||
* Show progress dialog when clicking refresh while computing files (issue #341)
|
||||
* Added show files button to summary of compilation database project setup (issue #354)
|
||||
* Show option to run only C/C++ preprocessor when indexing on indexing start dialog (issue #297)
|
||||
* Added bookmarking feature for nodes and edges. Bookmarks can have categories and comments. Data gets stored in .srctrlbm next to project file. Shortcuts similar to web browsers. (issue #138)
|
||||
* Mark files with errors and all files within a translation unit with fatal errors as incomplete (issue #358)
|
||||
* Fixed compilation database projects using C++ source extensions and standard (issue #366)
|
||||
* Show progress dialog when clicking refresh while computing files (issue [#341](https://github.com/CoatiSoftware/Sourcetrail/issues/341))
|
||||
* Added show files button to summary of compilation database project setup (issue [#354](https://github.com/CoatiSoftware/Sourcetrail/issues/354))
|
||||
* Show option to run only C/C++ preprocessor when indexing on indexing start dialog (issue [#297](https://github.com/CoatiSoftware/Sourcetrail/issues/297))
|
||||
* Added bookmarking feature for nodes and edges. Bookmarks can have categories and comments. Data gets stored in .srctrlbm next to project file. Shortcuts similar to web browsers. (issue [#138](https://github.com/CoatiSoftware/Sourcetrail/issues/138))
|
||||
* Mark files with errors and all files within a translation unit with fatal errors as incomplete (issue [#358](https://github.com/CoatiSoftware/Sourcetrail/issues/358))
|
||||
* Fixed compilation database projects using C++ source extensions and standard (issue [#366](https://github.com/CoatiSoftware/Sourcetrail/issues/366))
|
||||
|
||||
#### 0.11.86
|
||||
released 2017-04-12
|
||||
|
||||
* Terminating all running tasks before closing the application (issue #343)
|
||||
* Use all available cores when setting indexer threads to 0 (issue #342)
|
||||
* Added reset window layout option to view menu (issue #289)
|
||||
* Terminating all running tasks before closing the application (issue [#343](https://github.com/CoatiSoftware/Sourcetrail/issues/343))
|
||||
* Use all available cores when setting indexer threads to 0 (issue [#342](https://github.com/CoatiSoftware/Sourcetrail/issues/342))
|
||||
* Added reset window layout option to view menu (issue [#289](https://github.com/CoatiSoftware/Sourcetrail/issues/289))
|
||||
* Fixed colorscheme gets refreshed when cancelling preferences dialog
|
||||
* Log: Scroll to first line in errors table after indexing and after display
|
||||
* Copy old ApplicationSettings.xml and window_settings.ini files from previous Coati install if available.
|
||||
@@ -582,7 +652,7 @@ released 2017-04-12
|
||||
#### 0.11.15
|
||||
released 2017-03-01
|
||||
|
||||
* Don't accept richt text in 'enter license' dialog field (issue #207)
|
||||
* Don't accept richt text in 'enter license' dialog field (issue [#207](https://github.com/CoatiSoftware/Sourcetrail/issues/207))
|
||||
* Updated EULA to include Test License and better clarify other license types
|
||||
* Fixed icons in project setup dialogs blurry on highDPI screens
|
||||
* Added link to additional downloadable pre-indexed projects to trial start screen
|
||||
@@ -590,28 +660,28 @@ released 2017-03-01
|
||||
* Convert all paths chosen by patch picker relative to project location in project setup
|
||||
* Disabled name and location changing in project editing and removed project moving
|
||||
* Split default file extensions for C++ and C to avoid wrong files getting indexed
|
||||
* Deprecated 'Lazy Include Search', it's only visible to previously created projects (issue #335)
|
||||
* Support relative paths and paths containing environment variables for compilation database path (issue #312)
|
||||
* Removed 'Advanced Settings' section in project setup and show theses options in separate dialog (#293)
|
||||
* Support environment variables containing multiple files in project setup paths (issue #283)
|
||||
* Warn users when no 'Indexed Header Paths' were set in compilation database project (issue #254)
|
||||
* Deprecated 'Lazy Include Search', it's only visible to previously created projects (issue [#335](https://github.com/CoatiSoftware/Sourcetrail/issues/335))
|
||||
* Support relative paths and paths containing environment variables for compilation database path (issue [#312](https://github.com/CoatiSoftware/Sourcetrail/issues/312))
|
||||
* Removed 'Advanced Settings' section in project setup and show theses options in separate dialog (issue [#293](https://github.com/CoatiSoftware/Sourcetrail/issues/293))
|
||||
* Support environment variables containing multiple files in project setup paths (issue [#283](https://github.com/CoatiSoftware/Sourcetrail/issues/283))
|
||||
* Warn users when no 'Indexed Header Paths' were set in compilation database project (issue [#254](https://github.com/CoatiSoftware/Sourcetrail/issues/254))
|
||||
* Renamed "Project Paths" to "Indexed Paths" in project setup
|
||||
* Renamed "Project File Location" to "Coati Project Location" in project setup (issue #234)
|
||||
* Renamed "Project File Location" to "Coati Project Location" in project setup (issue [#234](https://github.com/CoatiSoftware/Sourcetrail/issues/234))
|
||||
* Allow opening indexed projects in trial mode
|
||||
* Record node type of non-indexed qualifiers (e.g. "std" in "std::string" as namespace)
|
||||
* Log: Fixed error icon loaded for every row (issue #287)
|
||||
* Log: Fixed error icon loaded for every row (issue [#287](https://github.com/CoatiSoftware/Sourcetrail/issues/287))
|
||||
* Graph: Fixed lambda are placed within white area to better see call edges
|
||||
* Graph: Show non-indexed nodes within their parents instead of using namespace labeling
|
||||
* Code: Disabled syntax highlighting for project description
|
||||
* Graph: Fixed different font-faces causing graph nodes to expand to bigger cell amount
|
||||
* Mac: Fixed wrong READMEs at some plugins (issue #315)
|
||||
* Mac: Fixed wrong READMEs at some plugins (issue [#315](https://github.com/CoatiSoftware/Sourcetrail/issues/315))
|
||||
* Mac: Removed boost libraries and libLTO from Mac bundle
|
||||
* Windows: Add Visual Studio compatibility flags to new project when Visual Studio include paths are present
|
||||
* Renamed undefined nodes to non-indexed nodes for clarification
|
||||
* Show progress in file clearing dialog
|
||||
* Extended syntax highlighting for Java and distinguish by project type
|
||||
* offer Windows 64bit build (issue #300)
|
||||
* Fixed legacy Java 6 install necessary on MacOS (issue #280)
|
||||
* offer Windows 64bit build (issue [#300](https://github.com/CoatiSoftware/Sourcetrail/issues/300))
|
||||
* Fixed legacy Java 6 install necessary on MacOS (issue [#280](https://github.com/CoatiSoftware/Sourcetrail/issues/280))
|
||||
* Updated to Qt 5.8
|
||||
* Updated to clang/llvm 3.9
|
||||
* Added multithreading to Visual Studio plugin compilation database creation
|
||||
@@ -621,18 +691,18 @@ released 2017-03-01
|
||||
* Visual Studio plugin can now handle projects with non-native build tool for compilation database export
|
||||
* Changed menu action 'Licenses' to '3rd Party Licenses'
|
||||
* Added dialog with all shortcuts to Help menu
|
||||
* Log: Show error in errors table when clicked in code view (issue #323)
|
||||
* Log: Show error in errors table when clicked in code view (issue [#323](https://github.com/CoatiSoftware/Sourcetrail/issues/323))
|
||||
* Code: Switched default mouse drag behavior to selection, panning on Shift + drag, and show suitable cursors
|
||||
* Updated company address in about dialog
|
||||
* Graph: Added on-screen zoom buttons
|
||||
* Graph: Split aggregation edge when expanding nodes if possible
|
||||
* Uncommented lines using the std library in TicTacToe sample
|
||||
* Fixed issue with lambda return type (issue #318)
|
||||
* Save builtin types as separate node type (issue #2)
|
||||
* Fixed issue with lambda return type (issue [#318](https://github.com/CoatiSoftware/Sourcetrail/issues/318))
|
||||
* Save builtin types as separate node type (issue [#2](https://github.com/CoatiSoftware/Sourcetrail/issues/2))
|
||||
* Remove unused included files after refreshing
|
||||
* Java: Fixed packages that only contain packages to show up as non-indexed
|
||||
* Added context-menu actions to copy node names, file paths and show files in containing directory (issue #320)
|
||||
* Fixed crash when entering a single space in 'enter license' dialog (issue #277)
|
||||
* Added context-menu actions to copy node names, file paths and show files in containing directory (issue [#320](https://github.com/CoatiSoftware/Sourcetrail/issues/320))
|
||||
* Fixed crash when entering a single space in 'enter license' dialog (issue [#277](https://github.com/CoatiSoftware/Sourcetrail/issues/277))
|
||||
* Graph: Made edge lines thicker
|
||||
* Fixed handling and storing of files with the same name
|
||||
* Fixed environment variable detection within project paths for %VARIABLE_NAME% syntax
|
||||
@@ -651,7 +721,7 @@ released 2017-03-01
|
||||
|
||||
|
||||
#### 0.10.0
|
||||
released 2016-12-13
|
||||
released 2016-12-14
|
||||
|
||||
* Windows: Added runtime DLLs that could be missing on some systems
|
||||
* Click message in status bar to open status window
|
||||
@@ -664,11 +734,11 @@ released 2016-12-13
|
||||
* Graph: Disable bundling when files or macros are active
|
||||
* Graph: Bundle importing files of active symbol in Java projects
|
||||
* Improved speed of depending file search on refresh
|
||||
* Search: Fixed crashes related to empty searches (issue #251)
|
||||
* Search: Fixed crashes related to empty searches (issue [#251](https://github.com/CoatiSoftware/Sourcetrail/issues/251))
|
||||
* Search: Do fulltext search when no autocompletion match is available
|
||||
* Added checkbox for full project refresh to start indexing dialog
|
||||
* Disabled clang error limit by default to make sure all errors are shown
|
||||
* Linux: Updated libs and added missing ones (issue #245)
|
||||
* Linux: Updated libs and added missing ones (issue [#245](https://github.com/CoatiSoftware/Sourcetrail/issues/245))
|
||||
* Updated icons for some graph nodes and project types
|
||||
* Windows: Updated Visual Studio plugin UI
|
||||
* Graph: Fixed view to not recenter on active node when clicking edge
|
||||
@@ -685,10 +755,10 @@ released 2016-12-13
|
||||
* Integrated Visual Studio Plugin with Coati Project creation and removed previous Visual Studio Solution parser
|
||||
* Improved C++ indexer coverage: using decls, using directives, auto keyword, lambda signatures, symbol references inside lambda captures, template argument related elements
|
||||
* Reduced size of .coatidb file by up to 50% for large projects
|
||||
* Fixed anonymouse symbol name conflicts (issue #241)
|
||||
* Fixed anonymouse symbol name conflicts (issue [#241](https://github.com/CoatiSoftware/Sourcetrail/issues/241))
|
||||
* Preferences: Added Indexer Logging option to print AST information during indexing
|
||||
* Search: Added second line to search autocompletion list showing namespace, package or filepath
|
||||
* Made cells readonly in errors table to prevent editing (issue #236)
|
||||
* Made cells readonly in errors table to prevent editing (issue [#236](https://github.com/CoatiSoftware/Sourcetrail/issues/236))
|
||||
* Renamed Log Window to Status window
|
||||
|
||||
|
||||
@@ -697,20 +767,21 @@ released 2016-10-27
|
||||
|
||||
* Windows: Added logging and exception handling to VS plugin
|
||||
* Windows: Added VC++ runtime dlls for windows installer
|
||||
* Windows: Added missing VC++ runtime dlls (issue #231)
|
||||
* Added setting for default graph zoom on mouse wheel to preferences (issue #237)
|
||||
* Windows: Added missing VC++ runtime dlls (issue [#231](https://github.com/CoatiSoftware/Sourcetrail/issues/231))
|
||||
* Added setting for default graph zoom on mouse wheel to preferences (issue [#237](https://github.com/CoatiSoftware/Sourcetrail/issues/237))
|
||||
* Scroll errors table to newest error during indexing
|
||||
* Fixed best scoring for search autocompletions skipped some combinations
|
||||
* Fixed flickering of errors table when indexing
|
||||
* Don't show error snippets in overview screen anymore
|
||||
* Fixed crash when Project Paths contain files and lazy include search in enabled (issue #201)
|
||||
* Fixed crash when Project Paths contain files and lazy include search in enabled (issue [#201](https://github.com/CoatiSoftware/Sourcetrail/issues/201))
|
||||
* Fixed edge cases that caused deadlocks in indexing
|
||||
* Added language specific project icons to start screen
|
||||
* Fixed application couldn't be quit when start screen was showing (issue #227)
|
||||
* Fixed application couldn't be quit when start screen was showing (issue [#227](https://github.com/CoatiSoftware/Sourcetrail/issues/227))
|
||||
* Graph: Fixed missing image file ending when exporting graph for Linux
|
||||
* Log Coati version when logging gets enabled
|
||||
* Fixed non-indexed errors filter in errors table
|
||||
|
||||
|
||||
#### 0.9.0
|
||||
released 2016-10-14
|
||||
|
||||
@@ -726,38 +797,38 @@ released 2016-10-14
|
||||
* Graph: Move aggregation and inheritance edges to front when hovered or active
|
||||
* Graph: Push parent nodes of active nodes to back to make all incoming and outgoing edges visible
|
||||
* Properly quit application when window is closed while confirm box is open
|
||||
* Properly quit application when window is closed while indexing (issue #121)
|
||||
* Properly quit application when window is closed while indexing (issue [#121](https://github.com/CoatiSoftware/Sourcetrail/issues/121))
|
||||
* Graph: Count only top level nodes in bundle nodes of graph
|
||||
* Search: Improved scoring of autocompletion matches to use best score for match
|
||||
* App will go into trial mode without valid license
|
||||
* Java: Auto detect java root source directories
|
||||
* Fixed refresh crash (issue #220)
|
||||
* Fixed refresh crash (issue [#220](https://github.com/CoatiSoftware/Sourcetrail/issues/220))
|
||||
* Java: improved indexer reliability a lot
|
||||
* Java: Changed name of generic type to use name of declaration
|
||||
* Fixed project refresh does not recognize removed source paths
|
||||
* Java: Define maximum allocated jvm memory in preferences
|
||||
* Follow symbolic directory links within source paths (issue #205)
|
||||
* Follow symbolic directory links within source paths (issue [#205](https://github.com/CoatiSoftware/Sourcetrail/issues/205))
|
||||
* Use white size grip in blue dialogs
|
||||
* Graph: Use type node colors for undefined nodes
|
||||
* Java: Show import not found as error
|
||||
* Code: Select and copy source code in code view with SHIFT + mouse drag (issue #7)
|
||||
* Code: Select and copy source code in code view with SHIFT + mouse drag (issue [#7](https://github.com/CoatiSoftware/Sourcetrail/issues/7))
|
||||
* Code: Added markers next to line numbers in code view showing active locations and scopes
|
||||
* Merged app and trial to one build
|
||||
|
||||
#### 0.8.21
|
||||
released 2016-09-16
|
||||
|
||||
* Added options for checking multiple paths in Indexed Header Paths dialog during project setup from Compilation Database #190
|
||||
* Added options for checking multiple paths in Indexed Header Paths dialog during project setup from Compilation Database [#190](https://github.com/CoatiSoftware/Sourcetrail/issues/190)
|
||||
* Added all C/C++ standards supported by clang
|
||||
* Fixed C language setting in empty project setup not propagated to indexer #177
|
||||
* Fixed C language setting in empty project setup not propagated to indexer [#177](https://github.com/CoatiSoftware/Sourcetrail/issues/177)
|
||||
* Added Sublime plugin to Sublime Text Package Control
|
||||
* Improved indexer parallelization for faster indexing
|
||||
* Changed all font-sizes to px for similar look on all platforms
|
||||
* Added font face dropdown to Preferences showing all available monospace fonts #172
|
||||
* Smoother font rendering on Windows by setting font engine to FreeType via qt.conf file #137
|
||||
* Added font face dropdown to Preferences showing all available monospace fonts [#172](https://github.com/CoatiSoftware/Sourcetrail/issues/172)
|
||||
* Smoother font rendering on Windows by setting font engine to FreeType via qt.conf file [#137](https://github.com/CoatiSoftware/Sourcetrail/issues/137)
|
||||
* Interrupt indexing while AST visiting for C/C++ for shorter waiting time
|
||||
* Save graph as PNG image via context menu in graph view #180
|
||||
* Added base folder to Linux package #181
|
||||
* Save graph as PNG image via context menu in graph view [#180](https://github.com/CoatiSoftware/Sourcetrail/issues/180)
|
||||
* Added base folder to Linux package [#181](https://github.com/CoatiSoftware/Sourcetrail/issues/181)
|
||||
* Use inverted golden ratio in indexing progress dialog
|
||||
|
||||
#### 0.8.0
|
||||
@@ -765,30 +836,30 @@ released 2016-09-01
|
||||
|
||||
* Improved titles and help texts in project setup UI
|
||||
* Fixed error locations not saved with absolute file paths in Compilation Database projects
|
||||
* Added missing source files extensions setting to the Edit Project dialog #132
|
||||
* Changed default text colors to black in project setup UI #140
|
||||
* Added plugin ports settings to Preferences #145
|
||||
* Added missing source files extensions setting to the Edit Project dialog [#132](https://github.com/CoatiSoftware/Sourcetrail/issues/132)
|
||||
* Changed default text colors to black in project setup UI [#140](https://github.com/CoatiSoftware/Sourcetrail/issues/140)
|
||||
* Added plugin ports settings to Preferences [#145](https://github.com/CoatiSoftware/Sourcetrail/issues/145)
|
||||
* Improved project state handling on refreshing
|
||||
* Added Java sample project JavaParser: http://javaparser.org/
|
||||
* Fixed regex for system includes used wrongly in syntax highlighter
|
||||
* Added setting to disable file and console logging, default is off #157
|
||||
* Added setting to disable file and console logging, default is off [#157](https://github.com/CoatiSoftware/Sourcetrail/issues/157)
|
||||
* Added migrations between different ApplicationSettings versions
|
||||
* Added auto detection for Java library to Preferences
|
||||
* Removed auto refresh option from Search view
|
||||
* Added progress dialogs for indexing and block UI #143
|
||||
* Added progress dialogs for indexing and block UI [#143](https://github.com/CoatiSoftware/Sourcetrail/issues/143)
|
||||
* Hide name qualifiers for graph nodes in Java projects
|
||||
* Added handling when java library not found
|
||||
* Added plain text editing dialog to path list boxes
|
||||
* Use language dependent symbol name delimiter in UI
|
||||
* Added scroll speed setting to preferences #112
|
||||
* Added scroll speed setting to preferences [#112](https://github.com/CoatiSoftware/Sourcetrail/issues/112)
|
||||
* Added Java project setup UI
|
||||
* Record start and end locations of scopes in Java
|
||||
* Display unresolved types names in Java as 'unresolved-type'
|
||||
* Cache stats for overview to speed up display
|
||||
* Fixed graph nodes to restore their expand state when going back #118
|
||||
* Fixed graph nodes to restore their expand state when going back [#118](https://github.com/CoatiSoftware/Sourcetrail/issues/118)
|
||||
* Added shortcuts for navigating to next and previous reference in code view
|
||||
* Pressing Tab in search completes up to next ::, Delete erases to last :: #133
|
||||
* Bundle anonymous namespaces separately in graph overview #126
|
||||
* Pressing Tab in search completes up to next ::, Delete erases to last :: [#133](https://github.com/CoatiSoftware/Sourcetrail/issues/133)
|
||||
* Bundle anonymous namespaces separately in graph overview [#126](https://github.com/CoatiSoftware/Sourcetrail/issues/126)
|
||||
* Added 'Show Data Folder' and 'Show Log Folder' items to Help menu
|
||||
* Added new status bar loader gif with higher resolution
|
||||
* Record type aliases in C++
|
||||
@@ -799,7 +870,7 @@ released 2016-09-01
|
||||
* Leave code view at original line when expanding scopes
|
||||
* Pan graph view to center on name of active symbol after activation
|
||||
* Moved color scheme selection to Preferences
|
||||
* Moved Preferences menu item to Edit menu on Windows/Linux #113
|
||||
* Moved Preferences menu item to Edit menu on Windows/Linux [#113](https://github.com/CoatiSoftware/Sourcetrail/issues/113)
|
||||
* Added setting for hiding non-fatal errors in unindexed files to preferences, turned on by default
|
||||
* Fixed file out-of-date asterisk disappearing when showing snippets after minimize state
|
||||
* Implemented Atom plugin: https://github.com/CoatiSoftware/atom-coati
|
||||
@@ -809,7 +880,6 @@ released 2016-09-01
|
||||
* Improved code view rendering times
|
||||
* Don't show implicit nodes in search auto completion list
|
||||
|
||||
|
||||
#### 0.7.0.22
|
||||
released 2016-07-07
|
||||
|
||||
@@ -872,42 +942,42 @@ released 2016-06-15
|
||||
#### 0.6.0.0
|
||||
released 2016-04-27
|
||||
|
||||
* Smoother graph panning and zooming on keyboard using update loop
|
||||
* Differentiate between explicit and implicit nodes and only show implicit nodes in the graph view when connected
|
||||
* Improved file clearing performance on project refresh
|
||||
* Show deleted projects on the start screen and show messagebox to delete them
|
||||
* Show analysis duration in hh:mm:ss
|
||||
* Added suppport for temporary test licenses and show error message when it expired
|
||||
* Increased graph performance by reducing to fixed number of requests
|
||||
* Add vs-clang compatibility flags when creating project from Visual Studio solution
|
||||
* Increased graph edge drawing performance
|
||||
* Added auto detection for system header paths to project wizard and preferences when using gcc, clang or vs compilers
|
||||
* Added bug tracker to help menu
|
||||
* Increased search autocompletion performance to stay mostly below 100ms
|
||||
* Increased project load performance
|
||||
* Improved file clearing performance on project refresh
|
||||
* Increased graph creation performance for overview screen
|
||||
* Increased graph performance by reducing to fixed number of requests
|
||||
* Increased graph edge drawing performance
|
||||
* Improved error display performance by not expanding all of them at once
|
||||
* Added analysis for local symbols and allow selecting them in the code view
|
||||
* Added support for function pointers to analysis
|
||||
* Smoother graph panning and zooming on keyboard using update loop
|
||||
* Changed style of aggregation edge to cleaner look
|
||||
* Allow certain edge types to enter and leave at top and bottom of nodes as well e.g. inheritance
|
||||
* Increased project load performance
|
||||
* Increased graph creation performance for overview screen
|
||||
* Changed namespace activation to show the namespace name in the search bar and the namespace definitions in the code view
|
||||
* Updated to Qt 5.6
|
||||
* Added analysis for local symbols and allow selecting them in the code view
|
||||
* Improved error display performance by not expanding all of them at once
|
||||
* Differentiate between explicit and implicit nodes and only show implicit nodes in the graph view when connected
|
||||
* Show deleted projects on the start screen and show messagebox to delete them
|
||||
* Show analysis duration in hh:mm:ss
|
||||
* Added bug tracker to the help menu
|
||||
* Added home button next to search field for showing the project overview
|
||||
* Added shortcut and menu item to show project overview
|
||||
* Fixed Path boxes not sized correctly when switching back and forth in the project wizard
|
||||
* Allow support for environment variables in project setup with syntax ${VARIABLE_NAME}
|
||||
* Added welcome message to Coati trial
|
||||
* Show quit button on license enter screen when no valid license was entered yet
|
||||
* Allow color schemes to define text colors for code view highlights
|
||||
* Added support for function pointers to analysis
|
||||
* Added Windows system dlls to installer on Windows so users don't not need to install the redistributable package
|
||||
* Defined new highlight colors for code view in all color schemes
|
||||
* Changed style of out-of-date files to be followed by *
|
||||
* Set Qt flag for high DPI scaling
|
||||
* Fixed Path boxes not sized correctly when switching back and forth in the project wizard
|
||||
* Check analyzed paths for existence in project wizard
|
||||
* Inform the user about project changes and ask before reparsing the project
|
||||
* Removed "simple setup" step in project wizard and added "lazy include search"-checkbox
|
||||
* Edit the project settings by clicking the project name in the overview stats
|
||||
* Added welcome message to Coati trial
|
||||
* Defined new highlight colors for code view in all color schemes
|
||||
* Updated to Qt 5.6
|
||||
* Improved high DPI support for windows
|
||||
* Added Windows system dlls to installer on Windows so users don't not need to install the redistributable package
|
||||
* Added vs-clang compatibility mode as compile flags when creating project from Visual Studio solution
|
||||
* Added auto detection for system header paths to project wizard and preferences when using gcc, clang or vs compilers
|
||||
|
||||
#### 0.5.1.21
|
||||
released 2016-03-16
|
||||
|
||||
+364
-417
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,14 @@
|
||||
# Contributing
|
||||
If you like this project and want to get involved, there are lots of ways you can help:
|
||||
|
||||
* __Spread the word.__ The more people want this project to grow, the greater the motivation for the developers to get things done.
|
||||
* __Fund the development.__ Further development and maintainance of this project is crowd funded via [Patreon](https://www.patreon.com/sourcetrail). If you would like Sourcetrail to grow and improve but cannot spare the time to contribute your self, please consider making a pledge.
|
||||
* __Test Sourcetrail.__ Run it on your own source code. If you find any issues, just report it here. Best, include some detailed step-by-step instructions that illustrate how to reproduce the issue, so that we can use it as a basis to craft a test case for our continuous integration and no one will ever break that case again.
|
||||
* __Write some code.__ Don't be shy here. You can implement whole new features or fix some bugs, but you can also do some refactoring if you think that it benefits the readability or the maintainability of the code. Still, no matter if you just want to work on cosmetics or implement new features, it would be best if you create an issue here on the issue tracker before you actually start handing in pull requests, so that we can discuss those changes first and thus raise the probability that those changes will get pulled quickly.
|
||||
|
||||
To create a pull request, follow these steps:
|
||||
* Fork the Repo on GitHub.
|
||||
* Make your commits.
|
||||
* If you added functionality or fixed a bug, please add a test.
|
||||
* Add your name to the AUTHORS.txt file.
|
||||
* Push to your fork and submit a pull request.
|
||||
+674
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
@@ -1,166 +1,247 @@
|
||||
## Sourcetrail
|
||||
# Sourcetrail
|
||||
|
||||
### Setup
|
||||
[Sourcetrail](https://www.sourcetrail.com/) is a free and open-source cross-platform source explorer that helps you get productive on unfamiliar source code.
|
||||
|
||||
#### External Software
|
||||
Windows: [](https://ci.appveyor.com/project/mlangkabel/sourcetrail/branch/master)
|
||||
|
||||
* JDK 1.8
|
||||
* QT 5.10.1
|
||||
* CxxTest 4.3
|
||||
* Clang & LLVM 7.0 (doesn't quite work for windows, use unix setup below and skip all the ninja stuff)(installation guide http://clang.llvm.org/docs/LibASTMatchersTutorial.html)
|
||||
* Boost 1.68
|
||||
* Botan 2.1.0
|
||||
* Image Magick 7.0.6
|
||||
* ccache (Unix)
|
||||
* Visual Leak Detector (Windows)
|
||||
* Wix 3.11 (Windows)
|
||||
* Winrar (Windows)
|
||||
Linux: [](https://travis-ci.org/CoatiSoftware/Sourcetrail)
|
||||
|
||||
#### Environment Variables
|
||||
|
||||
* CXX_TEST_DIR - .../cxxtest-4.3
|
||||
* CLANG_DIR - .../clang-llvm
|
||||
* BOOST_DIR - .../boost_1_68_0
|
||||
* BOTAN_DIR - .../Botan-2.1.0
|
||||
__Links__
|
||||
* [Website](https://www.sourcetrail.com/)
|
||||
* [Download](https://www.sourcetrail.com/downloads)
|
||||
* [Quick Start Guide](https://www.sourcetrail.com/documentation/#QUICKSTARTGUIDE)
|
||||
* [Documentation](https://www.sourcetrail.com/documentation)
|
||||
* [Changelog](CHANGELOG.md)
|
||||
* [Slack Channel](https://join.slack.com/t/sourcetrail/shared_invite/enQtNDc3MjcyOTk5MTc0LTNhOWZhZjAxZmU1NTM0YjhhMzRhZWE1NTQ2NjQyYjc1ODE2MzViOTliMWUwODBjN2NlMjkwMDc0MjAxMzJkY2E)
|
||||
* [Mailing List](https://coati.us12.list-manage.com/subscribe/post?u=3dabab4e475b5ed577d1dcd0f&id=cf7301fc53)
|
||||
* [Patreon](https://www.patreon.com/sourcetrail)
|
||||
|
||||
For MacOS and Linux
|
||||
* QT_DIR - .../Qt/Qt5.10.1/5.10.1/<IDE>
|
||||
* LLVM_DIR - .../clang-llvm
|
||||

|
||||
|
||||
For Windows:
|
||||
* QT_WIN32_DIR - .../Qt/Qt5.10.1/5.10.1/msvc2015
|
||||
* QT_WIN64_DIR - .../Qt/Qt5.10.1/5.10.1/msvc2015_64
|
||||
* VLD_DIR - .../Visual Leak Detector
|
||||
* JAVA_HOME - .../Java/jdk1.x.x_xxx
|
||||
* path
|
||||
- append path to git.exe
|
||||
- append path to jdk/bin
|
||||
- append path to VisualStudio/Common7/Tools
|
||||
- append path to VisualStudio/Common7/IDE
|
||||
- append path to .../Microsoft SDKs/Windows/v7.1A/Bin (for uuidgen in deploy script)
|
||||
- append path to .../WiX Toolset v3.11/bin
|
||||
- append path to .../WinRAR
|
||||
Sourcetrail is:
|
||||
* free
|
||||
* working offline
|
||||
* operating on Windows, macOS and Linux
|
||||
* supporting C, C++, Java and Python
|
||||
* offering an SDK ([SourcetrailDB](https://github.com/CoatiSoftware/SourcetrailDB)) to write custom language extensions
|
||||
|
||||
##### ccache
|
||||
## Support Sourcetrail via Patreon
|
||||
|
||||
* install ccache
|
||||
* if ccache is in path it will be used for recompilation
|
||||
The ongoing development and regular software releases are made possible entirely by the support of [these awesome patrons](SPONSORS.md)! If you'd like to join them, please consider [becoming a patron](https://www.patreon.com/sourcetrail) of Sourcetrail.
|
||||
|
||||
##### Clang setup
|
||||
## Using Sourcetrail
|
||||
|
||||
For Windows:
|
||||
Execute Cmake twice (once for each target compiler (32 and 64 bit)). Set the respective build path to ${CLANG_DIR}/build_win32 or ${CLANG_DIR}/build_win64
|
||||
To setup Sourcetrail on your machine, you can either download the respective build for your operating system from our list of [Releases](https://www.sourcetrail.com/downloads) and install it on your machine, or use one of the following package managers:
|
||||
|
||||
##### Boost setup
|
||||
* Use the [Chocolatey package](https://chocolatey.org/packages/sourcetrail) with `choco install sourcetrail`
|
||||
|
||||
For Windows:
|
||||
Build the Boost libs for 32 and 64 bit. Make sure that the platform specific libs are located in ${BOOST_DIR}/lib32-msvc-14.0 and ${BOOST_DIR}/lib64-msvc-14.0.
|
||||
After your installation is complete, follow our [Quick Start Guide](https://www.sourcetrail.com/documentation/#QUICKSTARTGUIDE) to get to know Sourcetrail.
|
||||
|
||||
For Mac:
|
||||
## How to Report Issues
|
||||
|
||||
You can post all your feature requests and bug reports on our [issue tracker](https://github.com/CoatiSoftware/Sourcetrail/issues).
|
||||
|
||||
### Reporting
|
||||
|
||||
Use the following template:
|
||||
|
||||
* platform version:
|
||||
* Sourcetrail version:
|
||||
* description of the problem:
|
||||
* steps to reproduce the problem:
|
||||
|
||||
|
||||
### Supporting
|
||||
|
||||
If you want to support a certain feature request or you have the same bug that another user already reported, please let us know:
|
||||
* post a comment with "+1" to the issue
|
||||
* or send an email to support@sourcetrail.com with the issue ID
|
||||
|
||||
## How to Contribute
|
||||
|
||||
* Please read and follow the steps in [CONTRIBUTING.md](CONTRIBUTING.md) file.
|
||||
* You may want to look out for issues labeled [good first issue](https://github.com/CoatiSoftware/Sourcetrail/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) to find some initial tasks to tackle.
|
||||
* If you are looking for more information about Sourcetrail software development, please refer to our [wiki](https://github.com/CoatiSoftware/Sourcetrail/wiki).
|
||||
|
||||
# How to Build
|
||||
|
||||
Building Sourcetrail requires several dependencies to be in place on your machine. However, our CMake based setup allows to disable indexing support for specific languages which reduces the number of dependencies to a minimum.
|
||||
|
||||
## Building the bare minimum
|
||||
|
||||
### Required Tools
|
||||
|
||||
#### Git
|
||||
|
||||
This is required for generating the Sourcetrail version number. Get it from: https://git-scm.com/download.
|
||||
|
||||
Make sure `git` is available in added to your `PATH` environment variable.
|
||||
|
||||
#### CMake v3.12
|
||||
|
||||
This is used for generating a build configuration. Get it from: https://cmake.org/download/
|
||||
|
||||
### Additional tools for Windows
|
||||
|
||||
#### Visual Studio
|
||||
|
||||
### Additional tools for Unix
|
||||
|
||||
#### ccache
|
||||
|
||||
This is optionally used to speed up rebuilds if found in `PATH`.
|
||||
|
||||
### Required dependencies
|
||||
|
||||
#### Boost 1.67
|
||||
For the __msvc__ compiler pre-built binaries can be downloaded from [sourceforge.net/projects/boost/files/boost-binaries](https://sourceforge.net/projects/boost/files/boost-binaries/)
|
||||
|
||||
For building on Unix:
|
||||
```
|
||||
$ ./bootstrap.sh --with-libraries=filesystem,program_options,system,date_time
|
||||
$ ./b2 --link=static --variant=release --threading=multi --runtime-link=static --cxxflags=-fPIC
|
||||
```
|
||||
|
||||
##### Botan setup
|
||||
#### Qt 5.12
|
||||
|
||||
For Windows
|
||||
__Note__: still causes style issues on Windows, resort to Qt 5.10
|
||||
|
||||
Extract the contents of your Botan package into "${BOTAN_DIR}/win32". Duplicate that folder and rename it "win64".
|
||||
For the __msvc__ compiler pre-built binaries can be downloaded from [download.qt.io/official_releases/qt](http://download.qt.io/official_releases/qt/)
|
||||
|
||||
Build 32 bit debug lib in ${BOTAN_DIR}/win32/debug
|
||||
$ python configure.py --cc=msvc --cpu=x86_32 --disable-shared --no-optimizations --with-debug-info
|
||||
### Building
|
||||
|
||||
Build 32 bit release lib in ${BOTAN_DIR}/win32/release
|
||||
$ python configure.py --cc=msvc --cpu=x86_32 --disable-shared
|
||||
#### For Windows / Visual Studio
|
||||
```
|
||||
$ cd Sourcetrail
|
||||
$ mkdir -p build/win64
|
||||
$ cd build/win64
|
||||
$ cmake -G "Visual Studio 15 2017 Win64" -DBOOST_ROOT=<path/to/boost_1_68_0> -DQt5_DIR=<path/to/Qt/version/platform/compiler/lib/cmake/Qt5> ../..
|
||||
```
|
||||
If you are using the gui, we recommend that you activate advanced mode. Also you may be required to add some of the defines via the "Add Entry" button.
|
||||
|
||||
To build the 64 bit lib start the VS command prompt with the "amd64" argument as described here:https://msdn.microsoft.com/en-us/library/x4d2c09s.aspx
|
||||
After generating the build configuration, just open the Sourcetrail.sln file that was generated by CMake and build the Sourcetrail project.
|
||||
|
||||
Build 64 bit debug lib in ${BOTAN_DIR}/win64/debug
|
||||
$ python configure.py --cc=msvc --cpu=x86_64 --disable-shared --no-optimizations --with-debug-info
|
||||
#### For Unix
|
||||
|
||||
Build 64 bit release lib in ${BOTAN_DIR}/win64/release
|
||||
$ python configure.py --cc=msvc --cpu=x86_64 --disable-shared
|
||||
```
|
||||
$ cd Sourcetrail
|
||||
$ mkdir -p build/Release
|
||||
$ cd build/Release
|
||||
$ cmake -DCMAKE_BUILD_TYPE="Release" -DBOOST_ROOT=<path/to/boost_1_68_0> -DQt5_DIR=<path/to/Qt/version/platform/compiler/lib/cmake/Qt5> ../..
|
||||
$ make Sourcetrail
|
||||
```
|
||||
|
||||
### Running
|
||||
|
||||
Run Sourcetrail from within the build directory. During execution Sourcetrail needs resources from `bin/app/data` and `bin/app/user`. Cmake creates symlinks to these directories within the build directory.
|
||||
|
||||
|
||||
For MacOS and Linux
|
||||
## Enable C/C++ Language Support
|
||||
|
||||
Build release lib in ${BOTAN_DIR}/release
|
||||
Build debug lib in ${BOTAN_DIR}/debug
|
||||
### Required dependencies
|
||||
|
||||
for Mac:
|
||||
$ mkdir debug/release
|
||||
$ cd debug/release
|
||||
$ python ../configure.py --disable-shared --disable-modules=darwin_secrandom (--with-debug-info)
|
||||
$ make -j 4
|
||||
#### LLVM/Clang 9.0.0
|
||||
|
||||
for Linux:
|
||||
$ python configure.py --disable-shared
|
||||
##### Windows
|
||||
For the __msvc__ compiler, follow [these steps](https://clang.llvm.org/get_started.html) to build the project. Make sure to check out the correct tag and to run the cmake command exactly as described.
|
||||
|
||||
#### Settings
|
||||
##### Unix
|
||||
For Unix, follow this [installation guide](http://clang.llvm.org/docs/LibASTMatchersTutorial.html)
|
||||
|
||||
Run setup script:
|
||||
$ ./script/setup.sh
|
||||
Build with `-DLLVM_ENABLE_RTTI=ON`.
|
||||
|
||||
### Release
|
||||
### Building
|
||||
|
||||
#### App
|
||||
* create release build
|
||||
* make sure it uses the Sourcetrail icon
|
||||
* obfuscate the executable using upx
|
||||
Run CMake with these additional options:
|
||||
```
|
||||
-DClang_DIR=<path/to/llvm_build/lib/cmake/clang>
|
||||
-DBUILD_CXX_LANGUAGE_PACKAGE=ON
|
||||
```
|
||||
|
||||
#### Data folder
|
||||
* put data folder in working directory
|
||||
* add empty log folder
|
||||
* add working tictactoe.xml project to /projects/tictactoe with sources in /projects/tictactoe/src
|
||||
* add empty app settings with one recent project tictactoe.xml
|
||||
* leave window_settings.ini with correct Sourcetrail start layout
|
||||
## Enable Java Language Support
|
||||
|
||||
#### Package
|
||||
* add app
|
||||
### Required dependencies
|
||||
|
||||
#### Updating Clang on UNIX
|
||||
#### JDK 1.8
|
||||
|
||||
$ cd .../clang_llvm
|
||||
Install JDK and make sure the `JAVA_HOME` environment variable is set:
|
||||
```
|
||||
JAVA_HOME=.../Java/jdk1.x.x_xxx
|
||||
```
|
||||
|
||||
$ cd llvm
|
||||
$ git pull origin master
|
||||
Also make sure `<jdk_root>/bin` is available in your `PATH` environmen variable.
|
||||
|
||||
$ cd tools/clang
|
||||
$ git pull origin master
|
||||
#### Maven
|
||||
Install Maven and make sure both `M2_HOME` and `MAVEN_HOME` environment variables are set:
|
||||
```
|
||||
M2_HOME=.../apache-maven-x.x.x
|
||||
MAVEN_HOME=.../apache-maven-x.x.x
|
||||
```
|
||||
|
||||
$ cd ../../../../../build_debug
|
||||
$ cmake -G Ninja -DLLVM_ENABLE_RTTI=ON ../llvm
|
||||
$ ninja -j4 check-all
|
||||
Also make sure `.../apache-maven-x.x.x/bin` is available in your `PATH` environmen variable.
|
||||
|
||||
$ cd ../build_release
|
||||
$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RTTI=ON ../llvm
|
||||
$ ninja -j4
|
||||
### Building
|
||||
|
||||
# Update CMakeLists.txt symlink directory
|
||||
# Update cmake/linux_package.cmake clang include path
|
||||
# Update LLVM version in dockerfiles
|
||||
Run CMake with these additional options:
|
||||
```
|
||||
-DBUILD_JAVA_LANGUAGE_PACKAGE=ON
|
||||
```
|
||||
|
||||
#### Remarks
|
||||
## Enable Python Language Support
|
||||
|
||||
* Boost lib dir: rename library directory for your system (e.g.: 'lib32-msvc-12.0') to 'lib'
|
||||
### Required dependencies
|
||||
|
||||
### Tagging
|
||||
#### WinRAR (for Windows only)
|
||||
|
||||
$ git tag -a VERSION_NUMBER -m "DESCRIPTION"
|
||||
$ git push --tags
|
||||
### Building
|
||||
|
||||
### Loader gif creation from png sequence
|
||||
Run CMake with these additional options:
|
||||
```
|
||||
-DBUILD_PYTHON_LANGUAGE_PACKAGE=ON
|
||||
```
|
||||
|
||||
// from png sequence
|
||||
convert -delay 3 -loop 0 souretrail_*.png souretrail.gif
|
||||
## Packaging
|
||||
|
||||
// less colors
|
||||
gifsicle --colors 255 souretrail.gif > color.gif
|
||||
### Windows
|
||||
|
||||
// crop size
|
||||
gifsicle --crop 0,5+0x-5 color.gif > crop.gif
|
||||
#### Required Tools
|
||||
|
||||
// add transparency
|
||||
gifsicle --unoptimize --disposal=previous --transparent="#FFFFFF" crop.gif > trans.gif
|
||||
##### Visual Studio
|
||||
|
||||
// resize
|
||||
gifsicle --resize-height 18 trans.gif > loader.gif
|
||||
##### Wix 3.11
|
||||
|
||||
##### Wix extension for Visual Studio
|
||||
|
||||
##### WinRAR
|
||||
|
||||
Make sure to append these directories to your `PATH` environment variable:
|
||||
* VisualStudio/Common7/Tools
|
||||
* VisualStudio/Common7/IDE
|
||||
* .../Microsoft SDKs/Windows/v7.1A/Bin (for uuidgen in deploy script)
|
||||
* .../WiX Toolset v3.11/bin
|
||||
* .../WinRAR
|
||||
|
||||
Run `./script/deploy_windows.sh` script which will generate 32bit/64bit builds and packages these into a portable `.zip` file and a Wix-based Windows installer, each.
|
||||
|
||||
### macOS
|
||||
|
||||
After building, run the `bundle_install.sh` script within the build directory which will create a `Sourcetrail.app` bundle and generate a `Sourcetrail_<version>.dmg` container.
|
||||
|
||||
### Linux
|
||||
|
||||
Run `./script/buildonly.sh package`
|
||||
|
||||
|
||||
# How to Run the Tests
|
||||
|
||||
The automated test suite of Sourcetrail is powered by [Catch2](https://github.com/catchorg/Catch2). To run the tests, simply execute the `Sourcetrail_test` binary. Before executing, please make sure to set the working directory to `./bin/test`.
|
||||
|
||||
|
||||
# License
|
||||
|
||||
Sourcetrail is licensed under the [GNU General Public License Version 3](LICENSE.txt).
|
||||
|
||||
# Trademark
|
||||
|
||||
The "Sourcetrail" name is a trademark owned by Coati Software and is not included within the assets licensed under the GNU GPLv3.
|
||||
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
# Sponsors
|
||||
|
||||
Sponsors [via Patreon](https://www.patreon.com/sourcetrail).
|
||||
|
||||
## Legendary Coatis
|
||||
|
||||
* David Manouchehri
|
||||
* Manik Singhal
|
||||
* Mario van Beek
|
||||
* Timothee Besset
|
||||
|
||||
## Super Coatis
|
||||
|
||||
* Alexis Jeandet
|
||||
* Edward Gibbs
|
||||
* Jonathan Nemo
|
||||
* Louis St-Amour
|
||||
* Mario Lioni
|
||||
* Simon Pintarelli
|
||||
|
||||
## Regular Coatis
|
||||
|
||||
* Alex B
|
||||
* Andreas
|
||||
* Anton
|
||||
* Daniel Nissenbaum
|
||||
* Frederic Simonis
|
||||
* IndustrialRobot
|
||||
* Jason Stevens
|
||||
* Jeffrey Hofer
|
||||
* John Borland
|
||||
* kale
|
||||
* Matěj Týč
|
||||
* Matt Alexander
|
||||
* Nakul Dhotre
|
||||
* Nathan
|
||||
* Nathan Loofbourrow
|
||||
* Rui Pires
|
||||
* Sam Tuke
|
||||
* Stephan Roslen
|
||||
* Traxes
|
||||
* Werner de Groot
|
||||
* Yang, Wenbo
|
||||
|
||||
_Note: This file will be updated at the beginning of each month._
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
<config>
|
||||
<window>
|
||||
<background>#494949</background>
|
||||
<separator>#CCCCCC</separator>
|
||||
<scrollbar>
|
||||
<background>transparent</background>
|
||||
@@ -284,9 +285,6 @@
|
||||
<typedef>
|
||||
<like>type</like>
|
||||
</typedef>
|
||||
<template_parameter>
|
||||
<like>type</like>
|
||||
</template_parameter>
|
||||
<type_parameter>
|
||||
<like>type</like>
|
||||
</type_parameter>
|
||||
@@ -483,6 +481,14 @@
|
||||
<normal>#797979</normal>
|
||||
</default>
|
||||
|
||||
<type_use>
|
||||
<like>default</like>
|
||||
</type_use>
|
||||
|
||||
<inheritance>
|
||||
<like>default</like>
|
||||
</inheritance>
|
||||
|
||||
<override>
|
||||
<normal>#BA5ECC</normal>
|
||||
</override>
|
||||
@@ -496,33 +502,24 @@
|
||||
<normal>#00A0B6</normal>
|
||||
</use>
|
||||
|
||||
<template_argument>
|
||||
<normal>#D93D5F</normal>
|
||||
</template_argument>
|
||||
<type_argument>
|
||||
<like>template_argument</like>
|
||||
<normal>#D93D5F</normal>
|
||||
</type_argument>
|
||||
<template_default_argument>
|
||||
<like>template_argument</like>
|
||||
</template_default_argument>
|
||||
<template_specialization>
|
||||
<like>template_argument</like>
|
||||
<like>type_argument</like>
|
||||
</template_specialization>
|
||||
<template_member_specialization>
|
||||
<like>template_argument</like>
|
||||
</template_member_specialization>
|
||||
|
||||
<include>
|
||||
<normal>#4E82F6</normal>
|
||||
</include>
|
||||
<import>
|
||||
<normal>#4E82F6</normal>
|
||||
<like>include</like>
|
||||
</import>
|
||||
<macro_use>
|
||||
<normal>#4E82F6</normal>
|
||||
<like>include</like>
|
||||
</macro_use>
|
||||
<annotation_use>
|
||||
<normal>#4E82F6</normal>
|
||||
<like>include</like>
|
||||
</annotation_use>
|
||||
|
||||
<aggregation>
|
||||
@@ -593,4 +590,25 @@
|
||||
<icon_disabled>#666666</icon_disabled>
|
||||
</button>
|
||||
</screen_search>
|
||||
|
||||
<custom_trail>
|
||||
<background>#494949</background>
|
||||
<alt_background>#808080</alt_background>
|
||||
<separator>#CCCCCC</separator>
|
||||
<text>#FFFFFF</text>
|
||||
<text_disabled>darkgrey</text_disabled>
|
||||
<background_disabled>#696969</background_disabled>
|
||||
<button>
|
||||
<default>
|
||||
<text>#FFFFFF</text>
|
||||
<background>#494949</background>
|
||||
<border>#FFFFFF</border>
|
||||
</default>
|
||||
<hover>
|
||||
<text>#494949</text>
|
||||
<background>#FFFFFF</background>
|
||||
<border>#FFFFFF</border>
|
||||
</hover>
|
||||
</button>
|
||||
</custom_trail>
|
||||
</config>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
<config>
|
||||
<window>
|
||||
<background>white</background>
|
||||
<separator>#A2A2A2</separator>
|
||||
<scrollbar>
|
||||
<background>transparent</background>
|
||||
@@ -276,9 +277,6 @@
|
||||
<typedef>
|
||||
<like>type</like>
|
||||
</typedef>
|
||||
<template_parameter>
|
||||
<like>type</like>
|
||||
</template_parameter>
|
||||
<type_parameter>
|
||||
<like>type</like>
|
||||
</type_parameter>
|
||||
@@ -457,46 +455,45 @@
|
||||
<normal>#878787</normal>
|
||||
</default>
|
||||
|
||||
<type_use>
|
||||
<like>default</like>
|
||||
</type_use>
|
||||
|
||||
<inheritance>
|
||||
<like>default</like>
|
||||
</inheritance>
|
||||
|
||||
<override>
|
||||
<normal>#A37ACC</normal>
|
||||
</override>
|
||||
|
||||
<call>
|
||||
<normal>#F4BC3D</normal>
|
||||
<trail_focus>#878787</trail_focus>
|
||||
<trail_focus>#F56B3D</trail_focus>
|
||||
</call>
|
||||
|
||||
<use>
|
||||
<normal>#4B9FC4</normal>
|
||||
</use>
|
||||
|
||||
<template_argument>
|
||||
<normal>#CF6B7C</normal>
|
||||
</template_argument>
|
||||
<type_argument>
|
||||
<like>template_argument</like>
|
||||
<like>#CF6B7C</like>
|
||||
</type_argument>
|
||||
<template_default_argument>
|
||||
<like>template_argument</like>
|
||||
</template_default_argument>
|
||||
<template_specialization>
|
||||
<like>template_argument</like>
|
||||
<like>type_argument</like>
|
||||
</template_specialization>
|
||||
<template_member_specialization>
|
||||
<like>template_argument</like>
|
||||
</template_member_specialization>
|
||||
|
||||
<include>
|
||||
<normal>#719660</normal>
|
||||
</include>
|
||||
<import>
|
||||
<normal>#719660</normal>
|
||||
<like>include</like>
|
||||
</import>
|
||||
<macro_use>
|
||||
<normal>#719660</normal>
|
||||
<like>include</like>
|
||||
</macro_use>
|
||||
<annotation_use>
|
||||
<normal>#719660</normal>
|
||||
<like>include</like>
|
||||
</annotation_use>
|
||||
|
||||
<aggregation>
|
||||
@@ -567,4 +564,25 @@
|
||||
<icon_disabled>#CECECE</icon_disabled>
|
||||
</button>
|
||||
</screen_search>
|
||||
|
||||
<custom_trail>
|
||||
<background>white</background>
|
||||
<alt_background>#F5F5F5</alt_background>
|
||||
<separator>#C0C0C0</separator>
|
||||
<text>black</text>
|
||||
<text_disabled>#A0A0A0</text_disabled>
|
||||
<background_disabled>#F2F2F2</background_disabled>
|
||||
<button>
|
||||
<default>
|
||||
<text>black</text>
|
||||
<background>white</background>
|
||||
<border>lightgray</border>
|
||||
</default>
|
||||
<hover>
|
||||
<text>white</text>
|
||||
<background>#2D3C86</background>
|
||||
<border>lightgray</border>
|
||||
</hover>
|
||||
</button>
|
||||
</custom_trail>
|
||||
</config>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
<config>
|
||||
<window>
|
||||
<background>#272728</background>
|
||||
<separator>#CCC</separator>
|
||||
<scrollbar>
|
||||
<background>transparent</background>
|
||||
@@ -279,9 +280,6 @@
|
||||
<typedef>
|
||||
<like>type</like>
|
||||
</typedef>
|
||||
<template_parameter>
|
||||
<like>type</like>
|
||||
</template_parameter>
|
||||
<type_parameter>
|
||||
<like>type</like>
|
||||
</type_parameter>
|
||||
@@ -460,6 +458,14 @@
|
||||
<normal>#797979</normal>
|
||||
</default>
|
||||
|
||||
<type_use>
|
||||
<like>default</like>
|
||||
</type_use>
|
||||
|
||||
<inheritance>
|
||||
<like>default</like>
|
||||
</inheritance>
|
||||
|
||||
<override>
|
||||
<normal>#8A5A94</normal>
|
||||
</override>
|
||||
@@ -473,33 +479,24 @@
|
||||
<normal>#2D6A8C</normal>
|
||||
</use>
|
||||
|
||||
<template_argument>
|
||||
<normal>#C14057</normal>
|
||||
</template_argument>
|
||||
<type_argument>
|
||||
<like>template_argument</like>
|
||||
<normal>#C14057</normal>
|
||||
</type_argument>
|
||||
<template_default_argument>
|
||||
<like>template_argument</like>
|
||||
</template_default_argument>
|
||||
<template_specialization>
|
||||
<like>template_argument</like>
|
||||
<like>type_argument</like>
|
||||
</template_specialization>
|
||||
<template_member_specialization>
|
||||
<like>template_argument</like>
|
||||
</template_member_specialization>
|
||||
|
||||
<include>
|
||||
<normal>#247368</normal>
|
||||
</include>
|
||||
<import>
|
||||
<normal>#247368</normal>
|
||||
<like>include</like>
|
||||
</import>
|
||||
<macro_use>
|
||||
<normal>#247368</normal>
|
||||
<like>include</like>
|
||||
</macro_use>
|
||||
<annotation_use>
|
||||
<normal>#247368</normal>
|
||||
<like>include</like>
|
||||
</annotation_use>
|
||||
|
||||
<aggregation>
|
||||
@@ -570,4 +567,25 @@
|
||||
<icon_disabled>#555555</icon_disabled>
|
||||
</button>
|
||||
</screen_search>
|
||||
|
||||
<custom_trail>
|
||||
<background>#272728</background>
|
||||
<alt_background>#555555</alt_background>
|
||||
<separator>#CCC</separator>
|
||||
<text>#F7F7F7</text>
|
||||
<text_disabled>darkgrey</text_disabled>
|
||||
<background_disabled>#474748</background_disabled>
|
||||
<button>
|
||||
<default>
|
||||
<text>#F7F7F7</text>
|
||||
<background>#272728</background>
|
||||
<border>#F7F7F7</border>
|
||||
</default>
|
||||
<hover>
|
||||
<text>#272728</text>
|
||||
<background>#F7F7F7</background>
|
||||
<border>#F7F7F7</border>
|
||||
</hover>
|
||||
</button>
|
||||
</custom_trail>
|
||||
</config>
|
||||
|
||||
@@ -15,5 +15,5 @@
|
||||
<recent_project>./projects/javaparser/javaparser.srctrlprj</recent_project>
|
||||
</recent_projects>
|
||||
</user>
|
||||
<version>7</version>
|
||||
<version>8</version>
|
||||
</config>
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
|
||||
#code_area {
|
||||
background-color: <color:code/snippet/background>;
|
||||
color: <color:code/snippet/syntax/normal>;
|
||||
color: <color:code/snippet/syntax/text>;
|
||||
selection-color: <color:code/snippet/selection/text>;
|
||||
selection-background-color: <color:code/snippet/selection/background>;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
* {
|
||||
color: <color:custom_trail/text>;
|
||||
}
|
||||
|
||||
#panelA {
|
||||
background: <color:custom_trail/background>;
|
||||
}
|
||||
|
||||
#panelB, #panelB2 {
|
||||
background: <color:custom_trail/alt_background>;
|
||||
border-top: 1px solid <color:custom_trail/separator>;
|
||||
border-bottom: 1px solid <color:custom_trail/separator>;
|
||||
}
|
||||
|
||||
#panelB2 {
|
||||
border-bottom: none
|
||||
}
|
||||
|
||||
#search_box_container {
|
||||
border-color: <color:custom_trail/separator>;
|
||||
border-radius: 8px;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
#search_box_container:disabled {
|
||||
background: <color:custom_trail/background_disabled>;
|
||||
border-color: <color:custom_trail/background_disabled>;
|
||||
}
|
||||
|
||||
#search_box:disabled {
|
||||
color: <color:custom_trail/text_disabled>;
|
||||
}
|
||||
|
||||
#button, #button_small {
|
||||
background: <color:custom_trail/button/default/background>;
|
||||
border: 1px solid <color:custom_trail/button/default/border>;
|
||||
border-radius: 8px;
|
||||
color: <color:custom_trail/button/default/text>;
|
||||
padding: 3px 8px 2px;
|
||||
font-size: <setting:font_size+1>px;
|
||||
min-width: 5em;
|
||||
}
|
||||
|
||||
#button_small {
|
||||
border-radius: 6px;
|
||||
font-size: <setting:font_size-1>px;
|
||||
min-width: 4em;
|
||||
}
|
||||
|
||||
#button:hover, #button_small:hover {
|
||||
background: <color:custom_trail/button/hover/background>;
|
||||
border-color: <color:custom_trail/button/hover/border>;
|
||||
color: <color:custom_trail/button/hover/text>;
|
||||
}
|
||||
|
||||
#error {
|
||||
color: red;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 532 B |
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.8 KiB |
@@ -1,30 +0,0 @@
|
||||
#title {
|
||||
margin-left: 265px;
|
||||
}
|
||||
|
||||
#licenseOption {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#licenseField {
|
||||
font-family: "<setting:font_name>";
|
||||
font-size: 11px;
|
||||
height: 200px;
|
||||
padding: 5px;
|
||||
width: 470px;
|
||||
}
|
||||
|
||||
#licenseField:disabled {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
|
||||
#licenseError {
|
||||
color: red;
|
||||
}
|
||||
|
||||
QTextEdit {
|
||||
background-color: rgba(255, 255, 255, 200);
|
||||
border-radius: 10px;
|
||||
border: 1px solid lightgrey;
|
||||
color: black;
|
||||
}
|
||||
@@ -11,7 +11,7 @@
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
QWidget#search_box_container {
|
||||
#search_box_container {
|
||||
background: <color:search/field/background>;
|
||||
border: 2px solid <color:search/field/border>;
|
||||
border-bottom-left-radius: 12px;
|
||||
@@ -20,19 +20,19 @@ QWidget#search_box_container {
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
QLineEdit#search_box {
|
||||
#search_box {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
color: <color:search/field/text>;
|
||||
selection-background-color: <color:search/field/highlight>;
|
||||
}
|
||||
|
||||
QWidget#search_box_highlight {
|
||||
#search_box_highlight {
|
||||
background-color: <color:search/field/highlight>;
|
||||
border: none;
|
||||
}
|
||||
|
||||
QAbstractItemView#search_box_popup {
|
||||
#search_box_popup {
|
||||
background-color: <color:search/popup/background>;
|
||||
border: 1px solid <color:search/popup/line>;
|
||||
color: <color:search/popup/text>;
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
@@ -1,14 +1,18 @@
|
||||
#projectButton {
|
||||
#projectButton, #infoButton {
|
||||
background: white;
|
||||
border: 1px solid lightgray;
|
||||
border-radius: 8px;
|
||||
color: black;
|
||||
padding: 3px 5px 2px;
|
||||
padding: 4px 5px 3px;
|
||||
font-size: 14px;
|
||||
min-width: 6em;
|
||||
}
|
||||
|
||||
#projectButton:hover {
|
||||
#infoButton {
|
||||
padding: 4px 15px 3px;
|
||||
}
|
||||
|
||||
#projectButton:hover, #infoButton:hover {
|
||||
color: white;
|
||||
background: #2D3F85;
|
||||
}
|
||||
|
||||
@@ -24,5 +24,5 @@
|
||||
background-color: <color:code/snippet/background>;
|
||||
border-bottom: 1px solid <color:code/file/background>;
|
||||
padding: 3px;
|
||||
color: <color:code/snippet/syntax/normal>;
|
||||
color: <color:code/snippet/syntax/text>;
|
||||
}
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
Copyright (C) 1999-2013,2014,2015 Jack Lloyd
|
||||
2001 Peter J Jones
|
||||
2004-2007 Justin Karneges
|
||||
2004 Vaclav Ovsik
|
||||
2005 Matthew Gregan
|
||||
2005-2006 Matt Johnston
|
||||
2006 Luca Piccarreta
|
||||
2007 Yves Jerschow
|
||||
2007-2008 FlexSecure GmbH
|
||||
2007-2008 Technische Universitat Darmstadt
|
||||
2007-2008,2010,2014 Falko Strenzke
|
||||
2007-2008 Martin Doering
|
||||
2007 Manuel Hartl
|
||||
2007 Christoph Ludwig
|
||||
2007 Patrick Sona
|
||||
2008 Copyright Projet SECRET, INRIA, Rocquencourt
|
||||
2008 Bhaskar Biswas and Nicolas Sendrier
|
||||
2008 Google Inc.
|
||||
2010 Olivier de Gaalon
|
||||
2012 Vojtech Kral
|
||||
2012-2014 Markus Wanner
|
||||
2013 Joel Low
|
||||
2014 cryptosource GmbH
|
||||
2014 Andrew Moon
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions, and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions, and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE 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 OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
@@ -0,0 +1,23 @@
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
@@ -4,7 +4,7 @@ LLVM Release License
|
||||
University of Illinois/NCSA
|
||||
Open Source License
|
||||
|
||||
Copyright (c) 2007-2018 University of Illinois at Urbana-Champaign.
|
||||
Copyright (c) 2007-2019 University of Illinois at Urbana-Champaign.
|
||||
All rights reserved.
|
||||
|
||||
Developed by:
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
GENERAL
|
||||
-------
|
||||
|
||||
Qt is available under a commercial license with various pricing models and packages that meet a variety of needs. Commercial Qt license keeps your code proprietary where only you can control and monetize on your end product’s development, user experience and distribution. You also get great perks like additional functionality, productivity enhancing tools, world-class support and a close strategic relationship with The Qt Company to make sure your product and development goals are met.
|
||||
|
||||
Qt has been created under the belief of open development and providing freedom and choice to developers. To support that, The Qt Company also licenses Qt under open source licenses, where most of the functionality is available under LGPLv3. It should be noted that the tools as well as some add-on components are available only under GPLv3. In order to preserve the true meaning of open development and uphold the spirit of free software, it is imperative that the rules and regulations of open source licenses are followed. If you use Qt under open-source licenses, you need to make sure that you comply with all the licenses of the components you use.
|
||||
|
||||
Qt also contains some 3rd party components that are available under different open-source licenses. Please refer to the documentation for more details on 3rd party licenses used in Qt.
|
||||
|
||||
|
||||
GPLv3 and LGPLv3
|
||||
----------------
|
||||
|
||||
|
||||
@@ -1,444 +0,0 @@
|
||||
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch0\stshfloch31506\stshfhich31506\stshfbi31506\deflang1031\deflangfe1031\themelang1031\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
|
||||
{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
|
||||
{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
|
||||
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
|
||||
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f59\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f60\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}
|
||||
{\f62\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f63\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f64\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f65\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}
|
||||
{\f66\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f67\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f379\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f380\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
|
||||
{\f382\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f383\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f386\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f387\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
|
||||
{\f409\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f410\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f412\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f413\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
|
||||
{\f416\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f417\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
||||
{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
|
||||
{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
|
||||
{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
||||
{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
|
||||
{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
||||
{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
|
||||
{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
|
||||
{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
||||
{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;
|
||||
\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp
|
||||
\f31506\fs22\lang1031\langfe1033\langfenp1033 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1
|
||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext0 \sqformat \spriority0 \styrsid10694613 Normal;}{\*\cs10
|
||||
\additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
|
||||
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
|
||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31506\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{
|
||||
\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext15 \sqformat \spriority1 \styrsid13262607
|
||||
No Spacing;}}{\*\listtable{\list\listtemplateid17829778\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}
|
||||
\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
||||
\fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
||||
\fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
||||
\fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }
|
||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel
|
||||
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23
|
||||
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
|
||||
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid32462032}{\list\listtemplateid-1869340118
|
||||
\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23
|
||||
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
|
||||
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
|
||||
\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
|
||||
\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
|
||||
\levelspace360\levelindent0{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
|
||||
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
|
||||
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid58018902}{\list\listtemplateid1962457952\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
|
||||
\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
|
||||
\levelspace360\levelindent0{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
|
||||
{\leveltext\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
|
||||
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
|
||||
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
|
||||
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
|
||||
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid196238433}{\list\listtemplateid-1642172790\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
|
||||
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
|
||||
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
|
||||
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
|
||||
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
|
||||
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
|
||||
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1063259768}{\list\listtemplateid-285328028\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
|
||||
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
|
||||
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
|
||||
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
|
||||
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
|
||||
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
|
||||
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1391463661}{\list\listtemplateid-1311624652\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
|
||||
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
|
||||
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
|
||||
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
|
||||
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
|
||||
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
|
||||
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1461073771}{\list\listtemplateid-82662746\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
|
||||
\levelindent0{\leveltext\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
|
||||
{\leveltext\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567621\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567617\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
|
||||
\leveltemplateid67567619\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
|
||||
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567617
|
||||
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567619
|
||||
\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67567621
|
||||
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid2092114155}}{\*\listoverridetable{\listoverride\listid32462032\listoverridecount0\ls1}{\listoverride\listid1391463661\listoverridecount0\ls2}
|
||||
{\listoverride\listid1063259768\listoverridecount0\ls3}{\listoverride\listid1461073771\listoverridecount0\ls4}{\listoverride\listid58018902\listoverridecount0\ls5}{\listoverride\listid196238433\listoverridecount0\ls6}{\listoverride\listid2092114155
|
||||
\listoverridecount0\ls7}}{\*\rsidtbl \rsid8066695\rsid10694613\rsid13262607}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Malte}{\operator Malte}
|
||||
{\creatim\yr2019\mo4\dy8\hr18\min10}{\revtim\yr2019\mo4\dy23\hr15\min44}{\version2}{\edmins0}{\nofpages5}{\nofwords1729}{\nofchars10895}{\nofcharsws12599}{\vern32859}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
|
||||
\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1134\gutter0\ltrsect
|
||||
\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves1\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0
|
||||
\showxmlerrors1\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1
|
||||
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
|
||||
\asianbrkrule\rsidroot13262607\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
|
||||
{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid10694613\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
|
||||
{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
|
||||
{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
|
||||
\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
|
||||
\f31506\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid13262607\charrsid13262607 Sourcetrail
|
||||
\par Software License Agreement (\'93AGREEMENT\'94)
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8066695 Last date of change: 2019-04-23}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid13262607\charrsid13262607
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par BY INSTALLING OR USING THIS SOFTWARE, YOU ARE BECOMING A PARTY TO, AND ARE CONSENTING TO BE BOUND BY, THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, DO NOT INSTALL OR USE THIS SOFTWARE.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 1. DEFINITIONS
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par "SOFTWARE" means:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 a ve
|
||||
rsion of the cross-platform source code explorer known as Sourcetrail in executable form. The version is defined by the two leading numbers of the version string (e.g. the version of Sourcetrail 2017.1.x is version 2017.1); and}{\rtlch\fcs1 \af31507
|
||||
\ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 documentation for that version of Sourcetrail; and}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
minor updates included in software maintenance which are indicated by an increase in the digits that follow the first two leading numbers of the version string (e.g. the update from Sourcetrail 2017.1.0 to Sourcetrail 2017.1.1 is a minor update).
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "LICENSE" means:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
the permission to use and distribute the SOFTWARE as defined by the following sections of this document. The permissions granted especially depend on whether a SOFTWARE Non-Commercial License or a SOFTWARE Commercial License is agreed-upon.
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "LICENSOR" means:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
Coati Software KG, having a place of business at Jakob-Haringer-Stra\'dfe 1/127, 5020 Salzburg, Austria.
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "LICENSEE" means:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
the individual who purchased LICENSE(s) for the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 the individual who was granted LICENSE(s) for the SOFTWARE by LICENSOR;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 the company, corporation, organization, or legal entity that purchased LICENSE(s) for the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 the company, corporation, organization, or legal entity that was granted LICENSE(s) for the SOFTWARE by LICENSOR.
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "PARTIES" means:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
both LICENSOR and LICENSEE collectively.
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "AUTHORIZED USER" means:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
the individual who is LICENSEE of the SOFTWARE. This individual is the only AUTHORIZED USER;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 an employee who is nameable on demand and might at any time use the SOFT
|
||||
WARE, of LICENSEE. Every AUTHORIZED USER known by name can be replaced by another user known by name only once in a month. From that time on, said first user must not use the SOFTWARE anymore and said second user may start to use the SOFTWARE. At no time
|
||||
m
|
||||
ay the simultaneous number of users known by name exceed the agreed-upon number of AUTHORIZED USER(s). For each LICENSE that has been acquired before May 23th 2018 every AUTHORIZED USER known by name can be replaced by another user known by name instantly
|
||||
.
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 "ACTIVATION KEY" means:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
a document issued by LICENSOR that defines all parameters of the SOFTWARE Commercial License. Said document specifies the name of the licensed SOFTWARE, the name of LICENSEE, the license type, the agreed-upon number of AUTHORIZE
|
||||
D USERS, the upper limit for the licensed SOFTWARE version, the end of the licensed usage period, and a hash-code. The combination of these values allows LICENSEE to unlock the full functionality of a genuine copy of the SOFTWARE for intended commercial u
|
||||
se.
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 2. GRANT
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par The SOFTWARE is handed over to LICENSEE for its intended use. The scope of the intended use permitted by this AGREEMENT depends on whether a SOFTWARE Non-Commercial License or a SOFTWARE Commercial License is agreed-upon. If a SOFTWARE Non-C
|
||||
ommercial License is agreed-upon LICENSEE is allowed to use the SOFTWARE solely for non-commercial purposes. A purpose is non-commercial only if it is in no manner primarily intended for or directed toward commercial advantage or private monetary compensa
|
||||
tion.
|
||||
\par Examples of non-commercial purposes:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
you are using the SOFTWARE to work on open-source projects for free;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 you are a student and you are using the SOFTWARE for your academic projects;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 you are using the SOFTWARE in your spare time to work on the desktop application of your local football club for free.
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
Examples of commercial purposes, i.e. when you will need a Commercial License:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
you are using the SOFTWARE to work on open-source as well as on your company's projects;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 you are a student and you are using the SOFTWARE for your work as a freelancer;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 you are using the SOFTWARE in your spare time to work on the desktop application of your local football club and you are getting paid for that.
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par Subject to the terms of this AGREEMENT, LICENSOR hereby grants LICENSEE a worldwide, non-transferable, non-exclusive, non-sub-licensable, limited LICENSE that allows:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
LICENSEE to distribute (an) ACTIVATION KEY(s) to AUTHORIZED USER(s);}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 LICENSEE and AUTHORIZED USER(s) to install the SOFTWARE on any number of
|
||||
computer PCs where potential use of the full functionality of the SOFTWARE is restricted exclusively to AUTHORIZED USER(s);}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 LICENSEE and AUTHORIZED USER(s) to use the command-line interface of the SOFTWARE without unlocking the full functionality of the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 LICENSEE and AUTHORIZED USER(s) to use an ACTIVATION KEY to unlock the full functionality of the SOFTWARE for intended commercial use;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 LICENSEE and AUTHORIZED USER(s) to truthfully declare their intend to solely use the SOFTWARE for non-comm
|
||||
ercial purposes to unlock the full functionality of the SOFTWARE for intended non-commercial use;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 AUTHORIZED USER(s) to apply any version of the unlocked SOFTWARE that specifies a version number less than or equal to the licensed product version denoted
|
||||
in the ACTIVATION KEY to the permitted intended use. If the ACTIVATION KEY does not denote a licensed product version, "unlimited" licensed product version is assumed and all released product versions may be used. This permission is revoked at the end of
|
||||
the licensed usage period denoted in the ACTIVATION KEY. If the ACTIVATION KEY does not denote the licensed usage period, "unlimited" licensed usage period is assumed and the SOFTWARE may be used perpetually;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 LICENSEE to make a copy of the SOFTWARE for archival purposes provided the copy contains all of the proprietary notices of the SOFTWARE.
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 3. RESTRICTIONS
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par LICENSEE and AUTHORIZED USER(s) will not, and will have no right to:
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar
|
||||
\s15\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin720\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise attempt to discover the source code or underlying ideas or algorithms
|
||||
of the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 sell, rent, lease, distribute, or otherwise transfer rights to the SOFTWARE without prior written consent from LICENSOR;}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 remove any proprietary notices or labels from the SOFTWARE;}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607
|
||||
\par {\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af31507 \ltrch\fcs0
|
||||
\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 distribute, use, or transfer an ACTIVATION KEY(s) that has been superseded by an ACTIVATION KEY(s) provided with software maintenance.
|
||||
\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13262607 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 4. CONFIDENTIALITY
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par The SOFTWARE contains a feature that will automatically connect to LICENSOR's servers to check for a new program version. The data sent in this process contains NO POTENTIALLY SENSITIVE INFORMATION. The user can opt-out from this feature.
|
||||
\par Unless a valid non-disclosure agreement exists between the Parties, in which case the terms of that non-disclosure agreement shall apply, the following terms shall: Exc
|
||||
ept as necessary for its performance under the AGREEMENT or required by law, LICENSOR shall not disclose to anyone any information furnished by LICENSEE that is marked as confidential or proprietary.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 5. TITLE AND COPYRIGHT
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par Title, ownership rights, intel
|
||||
lectual property rights, and copyright to the SOFTWARE, and any copies or portions thereof, shall remain in LICENSOR. The SOFTWARE is protected by European copyright directives, Austrian copyright laws as well as United States copyright laws and internati
|
||||
onal treaty provisions.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 6. DISCLAIMER OF WARRANTY
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. LICENSOR HEREBY DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICU
|
||||
LAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. SOME U.S. STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE. LICENSEE MAY HAVE OTHER LEGAL RI
|
||||
GHTS THAT VARY FROM STATE TO STATE OR BY JURISDICTION.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 7. LIMITATION OF LIABILITY
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par L
|
||||
ICENSEE ASSUMES THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. LICENSOR ASSUMES NO LIABILITY FOR THE COST OF ANY SERVICE OR REPAIR IF THE SOFTWARE IS DEFECTIVE. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, STRICT L
|
||||
I
|
||||
ABILITY, OR OTHERWISE, SHALL LICENSOR, OR ITS LICENSORS, SUPPLIERS OR RESELLERS, BE LIABLE TO LICENSEE OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PRO
|
||||
F
|
||||
ITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES IN EXCESS OF THE MONEY PAID FOR THE SOFTWARE, EVEN IF LICENSOR SHALL HAVE BEEN IN
|
||||
F
|
||||
ORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME U.S. STATES DO
|
||||
NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO LICENSEE.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 8. TERMINATION
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par The LICENSE granted herein shall be perpetual. If LICENSEE fails to comply with any of the terms of t
|
||||
his AGREEMENT, this AGREEMENT and the rights granted herein will terminate immediately. As such the Non-Commercial LICENSE terminates automatically if the usage of SOFTWARE becomes commercial. LICENSOR may, at its sole discretion and at any time, terminat
|
||||
e this AGREEMENT. On termination, LICENSEE must cease using and destroy all copies of the SOFTWARE.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 9. EXPORT CONTROLS
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par LICENSEE shall comply with all export laws, restrictions and regulations of the United States, the Directive 2009/428/EC of the European Parliament and of the Council and the Austrian Au\'df
|
||||
enwirtschaftsgesetz 2011, BGBl I No. 26/2011. LICENSEE shall not export, re-export or otherwise transfer the SOFTWARE to any country for which the United States or the European Union or Austria maintains
|
||||
an embargo, or to any person or entity on the U.S. Department of Treasury List of Specially Designated Nationals or the U.S. Department of Commerce Denied Persons List or Entity List. LICENSEE represents and warrants that LICENSEE is not located in, under
|
||||
the control of, or a national or resident of any restricted country or on any such list.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 10. YOUR RESPONSIBILITIES.
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par LICENSEE agrees to immediately notify LICENSOR in writing of any misuse, misappropriation or unauthorized use, disclosure, display or c
|
||||
opying of the SOFTWARE that may come to LICENSEE's attention. In addition, LICENSEE agrees to defend, indemnify and hold LICENSOR, its suppliers and any of its directors, officers, employees or affiliates of any of the foregoing harmless from any and all
|
||||
claims resulting from or arising out of LICENSEE's use of the Software or breach of this AGREEMENT.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 11. THIRD PARTY CREDITS
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par Portions of the SOFTWARE utilize or include third party software and other copyrighted materials. Credits, licensing terms, and disclaimers for such materials are contained in the installation directory for the SOFTWARE, and are accessible via the \'93
|
||||
3rd Party Licenses\'94 dialog for the SOFTWARE. LICENSEE agrees that use of such copyrighted materials is governed by their respective terms.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 12. SEVERABILITY
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par If a particular term of this AGREEMENT is not enforceable, the unenforceability of that term will not affect any other terms of this AGREEMENT.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 13. HEADINGS
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par The section headings used herein are for convenience only and do not affect the interpretation of this AGREEMENT.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 14. NO WAIVER
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par LICENSOR's failure to enforce or exercise any part of this AGREEMENT is not a waiver of that part.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 15. ENTIRE AGREEMENT
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par T
|
||||
his AGREEMENT represents the complete agreement concerning this SOFTWARE between the PARTIES and supersedes all prior agreements and representations between them. It may be amended only in writing executed by both PARTIES. The inclusion of LICENSEE's own
|
||||
t
|
||||
erms and conditions is contradicted, unless their validity has explicitly been agreed to. LICENSOR reserves the exclusive right to update this AGREEMENT for new SOFTWARE versions. By using these new SOFTWARE versions the new AGREEMENT supersedes any older
|
||||
one. Any action arising out of or relating to this AGREEMENT may be brought exclusively in Salzburg, Austria, and the PARTIES irrevocably consent to the jurisdiction of such courts and venue in Salzburg, Austria.
|
||||
\par
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607 CONTACT
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid13262607\charrsid13262607
|
||||
\par If you have questions regarding this AGREEMENT, contact:
|
||||
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid13262607 Coati Software KG
|
||||
\par Jakob-Haringer-Stra\'dfe 1/127
|
||||
\par 5020 Salzburg
|
||||
\par Austria
|
||||
\par
|
||||
\par support@sourcetrail.com}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid10694613\charrsid13262607
|
||||
\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8
|
||||
72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7
|
||||
2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b
|
||||
44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7
|
||||
065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000
|
||||
00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08
|
||||
84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc
|
||||
52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353
|
||||
bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468
|
||||
656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c
|
||||
070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7
|
||||
29e245eb2b260a0238fd010000ffff0300504b030414000600080000002100e35a492797060000551b0000160000007468656d652f7468656d652f7468656d65
|
||||
312e786d6cec594d6f1b4518be23f11f467b6f6327761a4775aad8b11b6852a2d82dea71bc3bde9d66766735334eea1b6a8f484888823850891b0704546a252e
|
||||
e5d7048aa048fd0bbc33b3bbde89d72469235a417d48bcb3cfbcdf5f33be7aed5eccd0211192f2a4edd52fd73c44129f073409dbdead61ffd29a87a4c2498019
|
||||
4f48db9b12e95ddb78ffbdab785d45242608f627721db7bd48a9747d6949fab08ce5659e9204de8db988b18247112e05021f01dd982d2dd76aab4b31a6898712
|
||||
1c03d91d2ca894f8d21691344cbc8d9c7c8f018f4449bde03331d0c489bbc7808383ba86c8a9ec32810e316b7bc02ae04743724f798861a9e045dbab998fb7b4
|
||||
717509af679b985ab0b7b4af6f3ed9be6c4370b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83aa569632cd467faddec9699640f6
|
||||
eb3ced6ead596bb8f812fd9539995b9d4ea7d9ca64b1440dc87e6dcce1d76aab8dcd65076f4016df9cc3373a9bddeeaa8337208b5f9dc3f7afb4561b2ede8022
|
||||
46938339b47668bf9f512f2063ceb62be16b005fab65f0190aa2a1082fcd62cc13b530d8627c978b3e203492614513a4a62919631f22b98be391a05873c0eb04
|
||||
97ded8255fce2d696648fa82a6aaed7d9862c88a19bd97cf7e78f9ec093abefff4f8fecfc70f1e1cdfffc91272766de3242cef7af1dde77f3dfa04fdf9e4db17
|
||||
0fbfacc6cb32feb71f3ffdf5972faa81903f33719e7ff5f8f7a78f9f7ffdd91fdf3fac806f0a3c2ac387342612dd2447689fc7a098b18a2b391989f3ed184698
|
||||
96776c26a1c409d65c2ae8f754e4a06f4e31cbbce3c8d121ae056f0ba81f55c0eb93bb8ec083484c14ade07c238a1de02ee7acc345a5156e685e25330f274958
|
||||
cd5c4ccab87d8c0fab787771e2f8b73749a172e661e928de8d8823e61ec389c221498842fa1d3f20a442bb3b943a76dda5bee0928f15ba435107d34a930ce9c8
|
||||
89a6d9a66d1a835fa6553a83bf1ddbecde461dceaab4de22872e12b202b30ae187843966bc8e270ac755248738666583ef6015550939980abf8ceb49059e0e09
|
||||
e3a81710686d15527c2440df92d36f602859956edf65d3d8450a450faa68ee60cecbc82d7ed08d709c5661073489cad80fe4018428467b5c55c177b99b21fa19
|
||||
fc809385eebe4d89e3eed3abc12d1a3a22cd0244bf99086d45a8d54e058e69f24fe59851a8c7d6fa17578ea1003effe651854fdfd642bc093da92a13b64f94df
|
||||
45b89345b7cb4540dffe9abb8527c91e81309f6f3cef4aeebb92ebfde74beea27c3e6ba19dd55628bb7a6eb053b19991e3c523f298323650534676a499922534
|
||||
8aa00f8b7aa3392292e2cc9446f0352bec0e2e14d8ec4182ab8fa98a06114e61c2ae7b9a482833d2a144299770b433cb95b4351ea674650f864d7d64b0054162
|
||||
b5cb03bbbca297f3934141c6b49bd09c3f73462b9ac05999ad5cc98882daafc2acae853a33b7ba11cdd43a875ba13238715e35582cac09130882b905acbc0a87
|
||||
74cd1a4e26989140dbdd36dfdc2dc60b17e92219e180643ed27acffba86e9c94c78ab90c80d8a9f0913ee69d62b512b79626fb1adccee2a432bbc60276b9f75e
|
||||
c74b7904cfbca413f7443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc3a116bec629785deaa10fb3106e877c256cd89f9acc26cb67de6ce58ab94950878b0a
|
||||
6bf739859d3a900aa9b6b08c6c6898575908b04473b2f22f37c1ac17a5808df4579062650d82e18d490176745d4bc663e2abb2b34b2bda76f6312ba57ca28818
|
||||
44c1111ab189d8c7e07e1daaa04f4025dc4d988aa01fe0264d5bdbbc728b739674e5fb2b83b3eb98a511cecaad4ed13c932ddce4712183792a8907ba55ca6e94
|
||||
3bbf2a26e52f48957218ffcf54d1fd04ae0a5602ed011fee7205463a5fdb1e172ae25085d288fa7d019383a91d102d701b0baf21a8e046d9fc17e450ffb73967
|
||||
6998b486139fdaa7211214fa918a04217b50964cf49d42ac9ef52e4b9265844c4495c495a9157b440e091bea1ab8aa7bbb87220875534db232607027e3cf7dce
|
||||
326814ea21a79c6f4e0d297aafcd817f7bf2b1c90c4ab975d80c34b9fd0b112bbaaadd6fb6e7bdb7ac887e311bb31a795600b3522b686569ff8a229cb3d5da8a
|
||||
35a7f17233170ebc38af312c1603510a173e48ff81fe4785cf880963dd50877c1f6a2b829f1a3431081b88ea4b76f040ba40dac5110c4e76d1069326654d9b8d
|
||||
4eda6a79b3bee049b7e07bc2d85ab2b3f8fb9cc62e8633979d938b1769ecccc28eadedda425383674fa6282c8df3938c718cf95dabfcc3131fdd05476fc105ff
|
||||
84296982097e55121846cf81c903487ecbd16cddf81b0000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f
|
||||
7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f
|
||||
2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e31
|
||||
98720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d98505
|
||||
28a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c02000013000000000000000000000000
|
||||
00000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b0000000000000000000000
|
||||
00002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c000000000000000000000000001402000074
|
||||
68656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100e35a492797060000551b0000160000000000000000
|
||||
0000000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000
|
||||
0000000000000000009c0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000970a00000000}
|
||||
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
|
||||
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
|
||||
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
|
||||
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
|
||||
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
|
||||
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
|
||||
\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
|
||||
\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
|
||||
4d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000
|
||||
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f000000000000000000000000a0e7
|
||||
dba0daf9d401feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000105000000000000}}
|
||||
@@ -1,132 +0,0 @@
|
||||
Sourcetrail
|
||||
Software License Agreement (“AGREEMENT”)
|
||||
Last date of change: 2019-04-23
|
||||
|
||||
BY INSTALLING OR USING THIS SOFTWARE, YOU ARE BECOMING A PARTY TO, AND ARE CONSENTING TO BE BOUND BY, THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, DO NOT INSTALL OR USE THIS SOFTWARE.
|
||||
|
||||
|
||||
1. DEFINITIONS
|
||||
|
||||
"SOFTWARE" means:
|
||||
* a version of the cross-platform source code explorer known as Sourcetrail in executable form. The version is defined by the two leading numbers of the version string (e.g. the version of Sourcetrail 2017.1.x is version 2017.1); and
|
||||
* documentation for that version of Sourcetrail; and
|
||||
* minor updates included in software maintenance which are indicated by an increase in the digits that follow the first two leading numbers of the version string (e.g. the update from Sourcetrail 2017.1.0 to Sourcetrail 2017.1.1 is a minor update).
|
||||
"LICENSE" means:
|
||||
* the permission to use and distribute the SOFTWARE as defined by the following sections of this document. The permissions granted especially depend on whether a SOFTWARE Non-Commercial License or a SOFTWARE Commercial License is agreed-upon.
|
||||
"LICENSOR" means:
|
||||
* Coati Software KG, having a place of business at Jakob-Haringer-Straße 1/127, 5020 Salzburg, Austria.
|
||||
"LICENSEE" means:
|
||||
* the individual who purchased LICENSE(s) for the SOFTWARE;
|
||||
* the individual who was granted LICENSE(s) for the SOFTWARE by LICENSOR;
|
||||
* the company, corporation, organization, or legal entity that purchased LICENSE(s) for the SOFTWARE;
|
||||
* the company, corporation, organization, or legal entity that was granted LICENSE(s) for the SOFTWARE by LICENSOR.
|
||||
"PARTIES" means:
|
||||
* both LICENSOR and LICENSEE collectively.
|
||||
"AUTHORIZED USER" means:
|
||||
* the individual who is LICENSEE of the SOFTWARE. This individual is the only AUTHORIZED USER;
|
||||
* an employee who is nameable on demand and might at any time use the SOFTWARE, of LICENSEE. Every AUTHORIZED USER known by name can be replaced by another user known by name only once in a month. From that time on, said first user must not use the SOFTWARE anymore and said second user may start to use the SOFTWARE. At no time may the simultaneous number of users known by name exceed the agreed-upon number of AUTHORIZED USER(s). For each LICENSE that has been acquired before May 23th 2018 every AUTHORIZED USER known by name can be replaced by another user known by name instantly.
|
||||
"ACTIVATION KEY" means:
|
||||
* a document issued by LICENSOR that defines all parameters of the SOFTWARE Commercial License. Said document specifies the name of the licensed SOFTWARE, the name of LICENSEE, the license type, the agreed-upon number of AUTHORIZED USERS, the upper limit for the licensed SOFTWARE version, the end of the licensed usage period, and a hash-code. The combination of these values allows LICENSEE to unlock the full functionality of a genuine copy of the SOFTWARE for intended commercial use.
|
||||
|
||||
|
||||
2. GRANT
|
||||
|
||||
The SOFTWARE is handed over to LICENSEE for its intended use. The scope of the intended use permitted by this AGREEMENT depends on whether a SOFTWARE Non-Commercial License or a SOFTWARE Commercial License is agreed-upon. If a SOFTWARE Non-Commercial License is agreed-upon LICENSEE is allowed to use the SOFTWARE solely for non-commercial purposes. A purpose is non-commercial only if it is in no manner primarily intended for or directed toward commercial advantage or private monetary compensation.
|
||||
Examples of non-commercial purposes:
|
||||
* you are using the SOFTWARE to work on open-source projects for free;
|
||||
* you are a student and you are using the SOFTWARE for your academic projects;
|
||||
* you are using the SOFTWARE in your spare time to work on the desktop application of your local football club for free.
|
||||
Examples of commercial purposes, i.e. when you will need a Commercial License:
|
||||
* you are using the SOFTWARE to work on open-source as well as on your company's projects;
|
||||
* you are a student and you are using the SOFTWARE for your work as a freelancer;
|
||||
* you are using the SOFTWARE in your spare time to work on the desktop application of your local football club and you are getting paid for that.
|
||||
|
||||
Subject to the terms of this AGREEMENT, LICENSOR hereby grants LICENSEE a worldwide, non-transferable, non-exclusive, non-sub-licensable, limited LICENSE that allows:
|
||||
* LICENSEE to distribute (an) ACTIVATION KEY(s) to AUTHORIZED USER(s);
|
||||
* LICENSEE and AUTHORIZED USER(s) to install the SOFTWARE on any number of computer PCs where potential use of the full functionality of the SOFTWARE is restricted exclusively to AUTHORIZED USER(s);
|
||||
* LICENSEE and AUTHORIZED USER(s) to use the command-line interface of the SOFTWARE without unlocking the full functionality of the SOFTWARE;
|
||||
* LICENSEE and AUTHORIZED USER(s) to use an ACTIVATION KEY to unlock the full functionality of the SOFTWARE for intended commercial use;
|
||||
* LICENSEE and AUTHORIZED USER(s) to truthfully declare their intend to solely use the SOFTWARE for non-commercial purposes to unlock the full functionality of the SOFTWARE for intended non-commercial use;
|
||||
* AUTHORIZED USER(s) to apply any version of the unlocked SOFTWARE that specifies a version number less than or equal to the licensed product version denoted in the ACTIVATION KEY to the permitted intended use. If the ACTIVATION KEY does not denote a licensed product version, "unlimited" licensed product version is assumed and all released product versions may be used. This permission is revoked at the end of the licensed usage period denoted in the ACTIVATION KEY. If the ACTIVATION KEY does not denote the licensed usage period, "unlimited" licensed usage period is assumed and the SOFTWARE may be used perpetually;
|
||||
* LICENSEE to make a copy of the SOFTWARE for archival purposes provided the copy contains all of the proprietary notices of the SOFTWARE.
|
||||
|
||||
|
||||
3. RESTRICTIONS
|
||||
|
||||
LICENSEE and AUTHORIZED USER(s) will not, and will have no right to:
|
||||
* modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise attempt to discover the source code or underlying ideas or algorithms of the SOFTWARE;
|
||||
* sell, rent, lease, distribute, or otherwise transfer rights to the SOFTWARE without prior written consent from LICENSOR;
|
||||
* remove any proprietary notices or labels from the SOFTWARE;
|
||||
* distribute, use, or transfer an ACTIVATION KEY(s) that has been superseded by an ACTIVATION KEY(s) provided with software maintenance.
|
||||
|
||||
|
||||
4. CONFIDENTIALITY
|
||||
|
||||
The SOFTWARE contains a feature that will automatically connect to LICENSOR's servers to check for a new program version. The data sent in this process contains NO POTENTIALLY SENSITIVE INFORMATION. The user can opt-out from this feature.
|
||||
Unless a valid non-disclosure agreement exists between the Parties, in which case the terms of that non-disclosure agreement shall apply, the following terms shall: Except as necessary for its performance under the AGREEMENT or required by law, LICENSOR shall not disclose to anyone any information furnished by LICENSEE that is marked as confidential or proprietary.
|
||||
|
||||
|
||||
5. TITLE AND COPYRIGHT
|
||||
|
||||
Title, ownership rights, intellectual property rights, and copyright to the SOFTWARE, and any copies or portions thereof, shall remain in LICENSOR. The SOFTWARE is protected by European copyright directives, Austrian copyright laws as well as United States copyright laws and international treaty provisions.
|
||||
|
||||
|
||||
6. DISCLAIMER OF WARRANTY
|
||||
|
||||
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. LICENSOR HEREBY DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. SOME U.S. STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE. LICENSEE MAY HAVE OTHER LEGAL RIGHTS THAT VARY FROM STATE TO STATE OR BY JURISDICTION.
|
||||
|
||||
|
||||
7. LIMITATION OF LIABILITY
|
||||
|
||||
LICENSEE ASSUMES THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. LICENSOR ASSUMES NO LIABILITY FOR THE COST OF ANY SERVICE OR REPAIR IF THE SOFTWARE IS DEFECTIVE. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE, SHALL LICENSOR, OR ITS LICENSORS, SUPPLIERS OR RESELLERS, BE LIABLE TO LICENSEE OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES IN EXCESS OF THE MONEY PAID FOR THE SOFTWARE, EVEN IF LICENSOR SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME U.S. STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO LICENSEE.
|
||||
|
||||
|
||||
8. TERMINATION
|
||||
|
||||
The LICENSE granted herein shall be perpetual. If LICENSEE fails to comply with any of the terms of this AGREEMENT, this AGREEMENT and the rights granted herein will terminate immediately. As such the Non-Commercial LICENSE terminates automatically if the usage of SOFTWARE becomes commercial. LICENSOR may, at its sole discretion and at any time, terminate this AGREEMENT. On termination, LICENSEE must cease using and destroy all copies of the SOFTWARE.
|
||||
|
||||
|
||||
9. EXPORT CONTROLS
|
||||
|
||||
LICENSEE shall comply with all export laws, restrictions and regulations of the United States, the Directive 2009/428/EC of the European Parliament and of the Council and the Austrian Außenwirtschaftsgesetz 2011, BGBl I No. 26/2011. LICENSEE shall not export, re-export or otherwise transfer the SOFTWARE to any country for which the United States or the European Union or Austria maintains an embargo, or to any person or entity on the U.S. Department of Treasury List of Specially Designated Nationals or the U.S. Department of Commerce Denied Persons List or Entity List. LICENSEE represents and warrants that LICENSEE is not located in, under the control of, or a national or resident of any restricted country or on any such list.
|
||||
|
||||
|
||||
10. YOUR RESPONSIBILITIES.
|
||||
|
||||
LICENSEE agrees to immediately notify LICENSOR in writing of any misuse, misappropriation or unauthorized use, disclosure, display or copying of the SOFTWARE that may come to LICENSEE's attention. In addition, LICENSEE agrees to defend, indemnify and hold LICENSOR, its suppliers and any of its directors, officers, employees or affiliates of any of the foregoing harmless from any and all claims resulting from or arising out of LICENSEE's use of the Software or breach of this AGREEMENT.
|
||||
|
||||
|
||||
11. THIRD PARTY CREDITS
|
||||
|
||||
Portions of the SOFTWARE utilize or include third party software and other copyrighted materials. Credits, licensing terms, and disclaimers for such materials are contained in the installation directory for the SOFTWARE, and are accessible via the “3rd Party Licenses” dialog for the SOFTWARE. LICENSEE agrees that use of such copyrighted materials is governed by their respective terms.
|
||||
|
||||
|
||||
12. SEVERABILITY
|
||||
|
||||
If a particular term of this AGREEMENT is not enforceable, the unenforceability of that term will not affect any other terms of this AGREEMENT.
|
||||
|
||||
|
||||
13. HEADINGS
|
||||
|
||||
The section headings used herein are for convenience only and do not affect the interpretation of this AGREEMENT.
|
||||
|
||||
|
||||
14. NO WAIVER
|
||||
|
||||
LICENSOR's failure to enforce or exercise any part of this AGREEMENT is not a waiver of that part.
|
||||
|
||||
|
||||
15. ENTIRE AGREEMENT
|
||||
|
||||
This AGREEMENT represents the complete agreement concerning this SOFTWARE between the PARTIES and supersedes all prior agreements and representations between them. It may be amended only in writing executed by both PARTIES. The inclusion of LICENSEE's own terms and conditions is contradicted, unless their validity has explicitly been agreed to. LICENSOR reserves the exclusive right to update this AGREEMENT for new SOFTWARE versions. By using these new SOFTWARE versions the new AGREEMENT supersedes any older one. Any action arising out of or relating to this AGREEMENT may be brought exclusively in Salzburg, Austria, and the PARTIES irrevocably consent to the jurisdiction of such courts and venue in Salzburg, Austria.
|
||||
|
||||
|
||||
CONTACT
|
||||
|
||||
If you have questions regarding this AGREEMENT, contact:
|
||||
Coati Software KG
|
||||
Jakob-Haringer-Straße 1/127
|
||||
5020 Salzburg
|
||||
Austria
|
||||
|
||||
support@sourcetrail.com
|
||||
@@ -81,13 +81,6 @@
|
||||
<recent_project><!-- STRING: recent project path --></recent_project>
|
||||
</recent_projects>
|
||||
|
||||
<license>
|
||||
<license><!-- STRING: the license key --></license>
|
||||
<non_commercial_use><!-- BOOL: if used non-commercially --></non_commercial_use>
|
||||
</license>
|
||||
|
||||
<accepted_eula_version><!-- INTEGER: last accepted eula version --></accepted_eula_version>
|
||||
|
||||
<token><!-- UUID: identifier for this user --></token>
|
||||
|
||||
<update_check>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
</description>
|
||||
<source_groups>
|
||||
<source_group_7a9e75fc-2cad-42d5-8c5b-c86d02f7b4e4>
|
||||
<java_standard>8</java_standard>
|
||||
<java_standard>12</java_standard>
|
||||
<name>Javaparser Source Group</name>
|
||||
<source_extensions>
|
||||
<source_extension>.java</source_extension>
|
||||
|
||||
@@ -13,7 +13,6 @@ TicTacToe::~TicTacToe() {
|
||||
Reset();
|
||||
}
|
||||
|
||||
|
||||
bool TicTacToe::Start() {
|
||||
Reset();
|
||||
io::stringOut("Tic Tac Toe\n\n[1] Human\n[2] Computer\n[3] Quit\n\n");
|
||||
|
||||
-3507
File diff suppressed because it is too large
Load Diff
-3124
File diff suppressed because it is too large
Load Diff
-3220
File diff suppressed because it is too large
Load Diff
-3938
File diff suppressed because it is too large
Load Diff
-3943
File diff suppressed because it is too large
Load Diff
-3307
File diff suppressed because it is too large
Load Diff
-4768
File diff suppressed because it is too large
Load Diff
-3479
File diff suppressed because it is too large
Load Diff
-3451
File diff suppressed because it is too large
Load Diff
-4585
File diff suppressed because it is too large
Load Diff
-5050
File diff suppressed because it is too large
Load Diff
-4267
File diff suppressed because it is too large
Load Diff
-567
@@ -1,567 +0,0 @@
|
||||
FILE: b2BlockAllocator.cpp
|
||||
FILE: b2BlockAllocator.h
|
||||
FILE: b2Settings.h
|
||||
FILE: stddef.h non-indexed
|
||||
FILE: corecrt.h non-indexed
|
||||
FILE: vcruntime.h non-indexed
|
||||
FILE: sal.h non-indexed
|
||||
FILE: concurrencysal.h non-indexed
|
||||
FILE: vadefs.h non-indexed
|
||||
FILE: assert.h non-indexed
|
||||
FILE: float.h non-indexed
|
||||
FILE: limits.h non-indexed
|
||||
FILE: string.h non-indexed
|
||||
FILE: corecrt_memory.h non-indexed
|
||||
FILE: corecrt_memcpy_s.h non-indexed
|
||||
FILE: errno.h non-indexed
|
||||
FILE: vcruntime_string.h non-indexed
|
||||
FILE: corecrt_wstring.h non-indexed
|
||||
SYMBOL_MACRO: B2_BLOCK_ALLOCATOR_H [b2BlockAllocator.h <20:9 20:28>]
|
||||
SYMBOL_MACRO: B2_SETTINGS_H [b2Settings.h <20:9 20:21>]
|
||||
SYMBOL_MACRO: b2DEBUG [b2Settings.h <27:10 27:16>]
|
||||
SYMBOL_MACRO: B2_NOT_USED [b2Settings.h <30:9 <30:9 30:19> 30:33>]
|
||||
SYMBOL_MACRO: b2Assert [b2Settings.h <31:9 <31:9 31:16> 31:28>]
|
||||
SYMBOL_MACRO: b2_maxFloat [b2Settings.h <42:9 <42:9 42:19> 42:21>]
|
||||
SYMBOL_MACRO: b2_epsilon [b2Settings.h <43:9 <43:9 43:18> 43:20>]
|
||||
SYMBOL_MACRO: b2_pi [b2Settings.h <44:9 <44:9 44:13> 44:16>]
|
||||
SYMBOL_MACRO: b2_maxManifoldPoints [b2Settings.h <54:9 <54:9 54:28> 54:29>]
|
||||
SYMBOL_MACRO: b2_maxPolygonVertices [b2Settings.h <58:9 <58:9 58:29> 58:30>]
|
||||
SYMBOL_MACRO: b2_aabbExtension [b2Settings.h <63:9 <63:9 63:24> 63:26>]
|
||||
SYMBOL_MACRO: b2_aabbMultiplier [b2Settings.h <68:9 <68:9 68:25> 68:27>]
|
||||
SYMBOL_MACRO: b2_linearSlop [b2Settings.h <72:9 <72:9 72:21> 72:24>]
|
||||
SYMBOL_MACRO: b2_angularSlop [b2Settings.h <76:9 <76:9 76:22> 76:47>]
|
||||
SYMBOL_MACRO: b2_polygonRadius [b2Settings.h <81:9 <81:9 81:24> 81:47>]
|
||||
SYMBOL_MACRO: b2_maxSubSteps [b2Settings.h <84:9 <84:9 84:22> 84:25>]
|
||||
SYMBOL_MACRO: b2_maxTOIContacts [b2Settings.h <90:9 <90:9 90:25> 90:28>]
|
||||
SYMBOL_MACRO: b2_velocityThreshold [b2Settings.h <94:9 <94:9 94:28> 94:30>]
|
||||
SYMBOL_MACRO: b2_maxLinearCorrection [b2Settings.h <98:9 <98:9 98:30> 98:32>]
|
||||
SYMBOL_MACRO: b2_maxAngularCorrection [b2Settings.h <102:9 <102:9 102:31> 102:55>]
|
||||
SYMBOL_MACRO: b2_maxTranslation [b2Settings.h <106:9 <106:9 106:25> 106:28>]
|
||||
SYMBOL_MACRO: b2_maxTranslationSquared [b2Settings.h <107:9 <107:9 107:32> 107:71>]
|
||||
SYMBOL_MACRO: b2_maxRotation [b2Settings.h <111:9 <111:9 111:22> 111:39>]
|
||||
SYMBOL_MACRO: b2_maxRotationSquared [b2Settings.h <112:9 <112:9 112:29> 112:63>]
|
||||
SYMBOL_MACRO: b2_baumgarte [b2Settings.h <117:9 <117:9 117:20> 117:24>]
|
||||
SYMBOL_MACRO: b2_toiBaugarte [b2Settings.h <118:9 <118:9 118:22> 118:26>]
|
||||
SYMBOL_MACRO: b2_timeToSleep [b2Settings.h <124:9 <124:9 124:22> 124:26>]
|
||||
SYMBOL_MACRO: b2_linearSleepTolerance [b2Settings.h <127:9 <127:9 127:31> 127:33>]
|
||||
SYMBOL_MACRO: b2_angularSleepTolerance [b2Settings.h <130:9 <130:9 130:32> 130:55>]
|
||||
SYMBOL_TYPEDEF: int8 [b2Settings.h <33:21 33:24>]
|
||||
SYMBOL_BUILTIN_TYPE: signed char
|
||||
SYMBOL_TYPEDEF: int16 [b2Settings.h <34:22 34:26>]
|
||||
SYMBOL_BUILTIN_TYPE: short
|
||||
SYMBOL_TYPEDEF: int32 [b2Settings.h <35:20 35:24>]
|
||||
SYMBOL_BUILTIN_TYPE: int
|
||||
SYMBOL_TYPEDEF: uint8 [b2Settings.h <36:23 36:27>]
|
||||
SYMBOL_BUILTIN_TYPE: unsigned char
|
||||
SYMBOL_TYPEDEF: uint16 [b2Settings.h <37:24 37:29>]
|
||||
SYMBOL_BUILTIN_TYPE: unsigned short
|
||||
SYMBOL_TYPEDEF: uint32 [b2Settings.h <38:22 38:27>]
|
||||
SYMBOL_BUILTIN_TYPE: unsigned int
|
||||
SYMBOL_TYPEDEF: float32 [b2Settings.h <39:15 39:21>]
|
||||
SYMBOL_BUILTIN_TYPE: float
|
||||
SYMBOL_TYPEDEF: float64 [b2Settings.h <40:16 40:22>]
|
||||
SYMBOL_BUILTIN_TYPE: double
|
||||
SYMBOL_FUNCTION: void * b2Alloc(int32) [b2Settings.h <135:1 <135:7 135:13> 135:25>]
|
||||
SYMBOL_BUILTIN_TYPE: void
|
||||
SYMBOL_FUNCTION: void b2Free(void *) [b2Settings.h <138:1 <138:6 138:11> 138:22>]
|
||||
SYMBOL_FUNCTION: void b2Log(const char *) [b2Settings.h <141:1 <141:6 141:10> 141:35>]
|
||||
SYMBOL_BUILTIN_TYPE: char
|
||||
SYMBOL_STRUCT: b2Version [b2Settings.h <145:1 <145:8 145:16> 150:1>]
|
||||
SYMBOL_FIELD: public int32 b2Version::major [b2Settings.h <147:8 147:12>]
|
||||
SYMBOL_FIELD: public int32 b2Version::minor [b2Settings.h <148:8 148:12>]
|
||||
SYMBOL_FIELD: public int32 b2Version::revision [b2Settings.h <149:8 149:15>]
|
||||
SYMBOL_GLOBAL_VARIABLE: b2Version b2_version [b2Settings.h <153:18 153:27>]
|
||||
SYMBOL_GLOBAL_VARIABLE: const int32 b2_chunkSize [b2BlockAllocator.h <24:13 24:24>]
|
||||
SYMBOL_GLOBAL_VARIABLE: const int32 b2_maxBlockSize [b2BlockAllocator.h <25:13 25:27>]
|
||||
SYMBOL_GLOBAL_VARIABLE: const int32 b2_blockSizes [b2BlockAllocator.h <26:13 26:25>]
|
||||
SYMBOL_GLOBAL_VARIABLE: const int32 b2_chunkArrayIncrement [b2BlockAllocator.h <27:13 27:34>]
|
||||
SYMBOL_STRUCT: b2Block [b2BlockAllocator.cpp <50:1 <50:8 50:14> 53:1>]
|
||||
SYMBOL_STRUCT: b2Block [b2BlockAllocator.h <29:8 29:14>]
|
||||
SYMBOL_STRUCT: b2Chunk [b2BlockAllocator.cpp <44:1 <44:8 44:14> 48:1>]
|
||||
SYMBOL_STRUCT: b2Chunk [b2BlockAllocator.h <30:8 30:14>]
|
||||
QUALIFIER: b2BlockAllocator [b2BlockAllocator.cpp <24:7 24:22>]
|
||||
QUALIFIER: b2BlockAllocator [b2BlockAllocator.cpp <41:7 41:22>]
|
||||
QUALIFIER: b2BlockAllocator [b2BlockAllocator.cpp <42:6 42:21>]
|
||||
QUALIFIER: b2BlockAllocator [b2BlockAllocator.cpp <55:1 55:16>]
|
||||
QUALIFIER: b2BlockAllocator [b2BlockAllocator.cpp <87:1 87:16>]
|
||||
QUALIFIER: b2BlockAllocator [b2BlockAllocator.cpp <97:7 97:22>]
|
||||
QUALIFIER: b2BlockAllocator [b2BlockAllocator.cpp <155:6 155:21>]
|
||||
QUALIFIER: b2BlockAllocator [b2BlockAllocator.cpp <204:6 204:21>]
|
||||
SYMBOL_CLASS: b2BlockAllocator [b2BlockAllocator.h <35:1 <35:7 35:22> 60:1>]
|
||||
SYMBOL_METHOD: public void b2BlockAllocator::b2BlockAllocator() [b2BlockAllocator.cpp <55:1 <55:19 55:34> 85:1>]
|
||||
SYMBOL_METHOD: public void b2BlockAllocator::b2BlockAllocator() [b2BlockAllocator.h <38:2 <38:2 38:17> 38:19>]
|
||||
SYMBOL_METHOD: public void b2BlockAllocator::~b2BlockAllocator() [b2BlockAllocator.cpp <87:1 <87:19 87:35> 95:1>]
|
||||
SYMBOL_METHOD: public void b2BlockAllocator::~b2BlockAllocator() [b2BlockAllocator.h <39:2 <39:2 39:18> 39:20>]
|
||||
SYMBOL_METHOD: public void * b2BlockAllocator::Allocate(int32) [b2BlockAllocator.cpp <97:1 <97:25 97:32> 153:1>]
|
||||
SYMBOL_METHOD: public void * b2BlockAllocator::Allocate(int32) [b2BlockAllocator.h <42:2 <42:8 42:15> 42:27>]
|
||||
SYMBOL_METHOD: public void b2BlockAllocator::Free(void *, int32) [b2BlockAllocator.cpp <155:1 <155:24 155:27> 202:1>]
|
||||
SYMBOL_METHOD: public void b2BlockAllocator::Free(void *, int32) [b2BlockAllocator.h <45:2 <45:7 45:10> 45:31>]
|
||||
SYMBOL_METHOD: public void b2BlockAllocator::Clear() [b2BlockAllocator.cpp <204:1 <204:24 204:28> 215:1>]
|
||||
SYMBOL_METHOD: public void b2BlockAllocator::Clear() [b2BlockAllocator.h <47:2 <47:7 47:11> 47:13>]
|
||||
SYMBOL_FIELD: private b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.h <51:11 51:18>]
|
||||
SYMBOL_FIELD: private int32 b2BlockAllocator::m_chunkCount [b2BlockAllocator.h <52:8 52:19>]
|
||||
SYMBOL_FIELD: private int32 b2BlockAllocator::m_chunkSpace [b2BlockAllocator.h <53:8 53:19>]
|
||||
SYMBOL_FIELD: private b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.h <55:11 55:21>]
|
||||
SYMBOL_FIELD: private static int32 [] b2BlockAllocator::s_blockSizes [b2BlockAllocator.cpp <24:25 24:36>]
|
||||
SYMBOL_FIELD: private static int32 [] b2BlockAllocator::s_blockSizes [b2BlockAllocator.h <57:15 57:26>]
|
||||
SYMBOL_FIELD: private static uint8 [] b2BlockAllocator::s_blockSizeLookup [b2BlockAllocator.cpp <41:25 41:41>]
|
||||
SYMBOL_FIELD: private static uint8 [] b2BlockAllocator::s_blockSizeLookup [b2BlockAllocator.h <58:15 58:31>]
|
||||
SYMBOL_FIELD: private static bool b2BlockAllocator::s_blockSizeLookupInitialized [b2BlockAllocator.cpp <42:24 42:51>]
|
||||
SYMBOL_FIELD: private static bool b2BlockAllocator::s_blockSizeLookupInitialized [b2BlockAllocator.h <59:14 59:41>]
|
||||
SYMBOL_BUILTIN_TYPE: bool
|
||||
SYMBOL_METHOD: public void b2BlockAllocator::b2BlockAllocator(const b2BlockAllocator &) [b2BlockAllocator.h <35:7 <35:7 35:22> 35:22>]
|
||||
SYMBOL_FIELD: public int32 b2Chunk::blockSize [b2BlockAllocator.cpp <46:8 46:16>]
|
||||
SYMBOL_FIELD: public b2Block * b2Chunk::blocks [b2BlockAllocator.cpp <47:11 47:16>]
|
||||
SYMBOL_FIELD: public b2Block * b2Block::next [b2BlockAllocator.cpp <52:11 52:14>]
|
||||
SYMBOL_FUNCTION: void _wassert(const wchar_t *, const wchar_t *, unsigned int)
|
||||
SYMBOL_FUNCTION: void * memset(void *, int, size_t)
|
||||
SYMBOL_FUNCTION: void * memcpy(void *, const void *, size_t)
|
||||
REFERENCE_INCLUDE: b2BlockAllocator.cpp -> b2BlockAllocator.h [b2BlockAllocator.cpp <19:10 19:42>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.h -> B2_BLOCK_ALLOCATOR_H [b2BlockAllocator.h <19:9 19:28>]
|
||||
REFERENCE_INCLUDE: b2BlockAllocator.h -> b2Settings.h [b2BlockAllocator.h <22:10 22:36>]
|
||||
REFERENCE_MACRO_USAGE: b2Settings.h -> B2_SETTINGS_H [b2Settings.h <19:9 19:21>]
|
||||
REFERENCE_INCLUDE: b2Settings.h -> stddef.h [b2Settings.h <22:10 22:19>]
|
||||
REFERENCE_INCLUDE: stddef.h -> corecrt.h [stddef.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: corecrt.h -> vcruntime.h [corecrt.h <10:10 10:22>]
|
||||
REFERENCE_INCLUDE: vcruntime.h -> sal.h [vcruntime.h <47:10 47:16>]
|
||||
REFERENCE_INCLUDE: sal.h -> concurrencysal.h [sal.h <2990:10 2990:27>]
|
||||
REFERENCE_INCLUDE: vcruntime.h -> vadefs.h [vcruntime.h <48:10 48:19>]
|
||||
REFERENCE_INCLUDE: b2Settings.h -> assert.h [b2Settings.h <23:10 23:19>]
|
||||
REFERENCE_INCLUDE: assert.h -> corecrt.h [assert.h <12:10 12:20>]
|
||||
REFERENCE_INCLUDE: b2Settings.h -> float.h [b2Settings.h <24:10 24:18>]
|
||||
REFERENCE_INCLUDE: float.h -> corecrt.h [float.h <12:10 12:20>]
|
||||
REFERENCE_MACRO_USAGE: b2Settings.h -> NDEBUG [b2Settings.h <26:14 26:19>]
|
||||
REFERENCE_INCLUDE: b2BlockAllocator.cpp -> limits.h [b2BlockAllocator.cpp <20:10 20:19>]
|
||||
REFERENCE_INCLUDE: limits.h -> vcruntime.h [limits.h <11:10 11:22>]
|
||||
REFERENCE_INCLUDE: b2BlockAllocator.cpp -> string.h [b2BlockAllocator.cpp <21:10 21:19>]
|
||||
REFERENCE_INCLUDE: string.h -> corecrt.h [string.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: string.h -> corecrt_memory.h [string.h <12:10 12:27>]
|
||||
REFERENCE_INCLUDE: corecrt_memory.h -> corecrt.h [corecrt_memory.h <13:10 13:20>]
|
||||
REFERENCE_INCLUDE: corecrt_memory.h -> corecrt_memcpy_s.h [corecrt_memory.h <14:10 14:29>]
|
||||
REFERENCE_INCLUDE: corecrt_memcpy_s.h -> corecrt.h [corecrt_memcpy_s.h <10:10 10:20>]
|
||||
REFERENCE_INCLUDE: corecrt_memcpy_s.h -> errno.h [corecrt_memcpy_s.h <11:10 11:18>]
|
||||
REFERENCE_INCLUDE: errno.h -> corecrt.h [errno.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: corecrt_memcpy_s.h -> vcruntime_string.h [corecrt_memcpy_s.h <12:10 12:29>]
|
||||
REFERENCE_INCLUDE: vcruntime_string.h -> vcruntime.h [vcruntime_string.h <10:10 10:22>]
|
||||
REFERENCE_INCLUDE: corecrt_memory.h -> vcruntime_string.h [corecrt_memory.h <15:10 15:29>]
|
||||
REFERENCE_INCLUDE: string.h -> corecrt_wstring.h [string.h <13:10 13:28>]
|
||||
REFERENCE_INCLUDE: corecrt_wstring.h -> corecrt.h [corecrt_wstring.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: corecrt_wstring.h -> vcruntime_string.h [corecrt_wstring.h <12:10 12:29>]
|
||||
REFERENCE_INCLUDE: string.h -> vcruntime_string.h [string.h <14:10 14:29>]
|
||||
REFERENCE_INCLUDE: b2BlockAllocator.cpp -> stddef.h [b2BlockAllocator.cpp <22:10 22:19>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.cpp -> b2Assert [b2BlockAllocator.cpp <57:2 57:9>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.cpp -> b2Assert [b2BlockAllocator.cpp <71:4 71:11>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.cpp -> b2Assert [b2BlockAllocator.cpp <102:2 102:9>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.cpp -> b2Assert [b2BlockAllocator.cpp <110:2 110:9>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.cpp -> b2Assert [b2BlockAllocator.cpp <138:3 138:10>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.cpp -> b2Assert [b2BlockAllocator.cpp <162:2 162:9>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.cpp -> b2Assert [b2BlockAllocator.cpp <171:2 171:9>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.cpp -> UCHAR_MAX [b2BlockAllocator.cpp <57:27 57:35>]
|
||||
REFERENCE_MACRO_USAGE: b2Settings.h -> assert [b2Settings.h <31:21 31:26>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.cpp -> _DEBUG [b2BlockAllocator.cpp <132:13 132:18>]
|
||||
REFERENCE_MACRO_USAGE: b2BlockAllocator.cpp -> _DEBUG [b2BlockAllocator.cpp <173:8 173:13>]
|
||||
REFERENCE_TYPE_USAGE: int8 -> signed char [b2Settings.h <33:9 33:14>]
|
||||
REFERENCE_TYPE_USAGE: int16 -> short [b2Settings.h <34:9 34:14>]
|
||||
REFERENCE_TYPE_USAGE: int32 -> int [b2Settings.h <35:9 35:14>]
|
||||
REFERENCE_TYPE_USAGE: uint8 -> unsigned char [b2Settings.h <36:9 36:16>]
|
||||
REFERENCE_TYPE_USAGE: uint16 -> unsigned short [b2Settings.h <37:9 37:16>]
|
||||
REFERENCE_TYPE_USAGE: uint32 -> unsigned int [b2Settings.h <38:9 38:16>]
|
||||
REFERENCE_TYPE_USAGE: float32 -> float [b2Settings.h <39:9 39:13>]
|
||||
REFERENCE_TYPE_USAGE: float64 -> double [b2Settings.h <40:9 40:14>]
|
||||
REFERENCE_TYPE_USAGE: void * b2Alloc(int32) -> void [b2Settings.h <135:1 135:4>]
|
||||
REFERENCE_TYPE_USAGE: void * b2Alloc(int32) -> int32 [b2Settings.h <135:15 135:19>]
|
||||
REFERENCE_TYPE_USAGE: void b2Free(void *) -> void [b2Settings.h <138:1 138:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2Free(void *) -> void [b2Settings.h <138:13 138:16>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> void [b2Settings.h <141:1 141:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> char [b2Settings.h <141:18 141:21>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2Version::major -> int32 [b2Settings.h <147:2 147:6>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2Version::minor -> int32 [b2Settings.h <148:2 148:6>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2Version::revision -> int32 [b2Settings.h <149:2 149:6>]
|
||||
REFERENCE_TYPE_USAGE: b2Version b2_version -> b2Version [b2Settings.h <153:8 153:16>]
|
||||
REFERENCE_TYPE_USAGE: const int32 b2_chunkSize -> int32 [b2BlockAllocator.h <24:7 24:11>]
|
||||
REFERENCE_TYPE_USAGE: const int32 b2_maxBlockSize -> int32 [b2BlockAllocator.h <25:7 25:11>]
|
||||
REFERENCE_TYPE_USAGE: const int32 b2_blockSizes -> int32 [b2BlockAllocator.h <26:7 26:11>]
|
||||
REFERENCE_TYPE_USAGE: const int32 b2_chunkArrayIncrement -> int32 [b2BlockAllocator.h <27:7 27:11>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> void [b2BlockAllocator.cpp <97:1 97:4>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> void [b2BlockAllocator.cpp <102:2 102:9>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> void [b2BlockAllocator.cpp <110:2 110:9>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> void [b2BlockAllocator.cpp <138:3 138:10>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> void [b2BlockAllocator.h <42:2 42:5>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 [b2BlockAllocator.cpp <97:34 97:38>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 [b2BlockAllocator.cpp <109:2 109:6>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 [b2BlockAllocator.cpp <135:3 135:7>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 [b2BlockAllocator.cpp <137:3 137:7>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 [b2BlockAllocator.cpp <139:8 139:12>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 [b2BlockAllocator.h <42:17 42:21>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> void [b2BlockAllocator.cpp <155:1 155:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> void [b2BlockAllocator.cpp <155:29 155:32>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> void [b2BlockAllocator.cpp <162:2 162:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> void [b2BlockAllocator.cpp <171:2 171:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> void [b2BlockAllocator.h <45:2 45:5>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> void [b2BlockAllocator.h <45:12 45:15>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> int32 [b2BlockAllocator.cpp <155:38 155:42>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> int32 [b2BlockAllocator.cpp <170:2 170:6>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> int32 [b2BlockAllocator.h <45:21 45:25>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Clear() -> void [b2BlockAllocator.cpp <204:1 204:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Clear() -> void [b2BlockAllocator.h <47:2 47:5>]
|
||||
REFERENCE_TYPE_USAGE: b2Chunk * b2BlockAllocator::m_chunks -> b2Chunk [b2BlockAllocator.h <51:2 51:8>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2BlockAllocator::m_chunkCount -> int32 [b2BlockAllocator.h <52:2 52:6>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2BlockAllocator::m_chunkSpace -> int32 [b2BlockAllocator.h <53:2 53:6>]
|
||||
REFERENCE_TYPE_USAGE: b2Block * [] b2BlockAllocator::m_freeLists -> b2Block [b2BlockAllocator.h <55:2 55:8>]
|
||||
REFERENCE_USAGE: b2Block * [] b2BlockAllocator::m_freeLists -> const int32 b2_blockSizes [b2BlockAllocator.h <55:23 55:35>]
|
||||
REFERENCE_TYPE_USAGE: static int32 [] b2BlockAllocator::s_blockSizes -> int32 [b2BlockAllocator.cpp <24:1 24:5>]
|
||||
REFERENCE_TYPE_USAGE: static int32 [] b2BlockAllocator::s_blockSizes -> int32 [b2BlockAllocator.h <57:9 57:13>]
|
||||
REFERENCE_USAGE: static int32 [] b2BlockAllocator::s_blockSizes -> const int32 b2_blockSizes [b2BlockAllocator.cpp <24:38 24:50>]
|
||||
REFERENCE_USAGE: static int32 [] b2BlockAllocator::s_blockSizes -> const int32 b2_blockSizes [b2BlockAllocator.h <57:28 57:40>]
|
||||
REFERENCE_TYPE_USAGE: static uint8 [] b2BlockAllocator::s_blockSizeLookup -> uint8 [b2BlockAllocator.cpp <41:1 41:5>]
|
||||
REFERENCE_TYPE_USAGE: static uint8 [] b2BlockAllocator::s_blockSizeLookup -> uint8 [b2BlockAllocator.h <58:9 58:13>]
|
||||
REFERENCE_USAGE: static uint8 [] b2BlockAllocator::s_blockSizeLookup -> const int32 b2_maxBlockSize [b2BlockAllocator.cpp <41:43 41:57>]
|
||||
REFERENCE_USAGE: static uint8 [] b2BlockAllocator::s_blockSizeLookup -> const int32 b2_maxBlockSize [b2BlockAllocator.h <58:33 58:47>]
|
||||
REFERENCE_TYPE_USAGE: static bool b2BlockAllocator::s_blockSizeLookupInitialized -> bool [b2BlockAllocator.cpp <42:1 42:4>]
|
||||
REFERENCE_TYPE_USAGE: static bool b2BlockAllocator::s_blockSizeLookupInitialized -> bool [b2BlockAllocator.h <59:9 59:12>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2Chunk::blockSize -> int32 [b2BlockAllocator.cpp <46:2 46:6>]
|
||||
REFERENCE_TYPE_USAGE: b2Block * b2Chunk::blocks -> b2Block [b2BlockAllocator.cpp <47:2 47:8>]
|
||||
REFERENCE_TYPE_USAGE: b2Block * b2Block::next -> b2Block [b2BlockAllocator.cpp <52:2 52:8>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> void [b2BlockAllocator.cpp <57:2 57:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> void [b2BlockAllocator.cpp <71:4 71:11>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> const int32 b2_blockSizes [b2BlockAllocator.cpp <57:11 57:23>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> const int32 b2_blockSizes [b2BlockAllocator.cpp <71:17 71:29>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::b2BlockAllocator() -> void _wassert(const wchar_t *, const wchar_t *, unsigned int) [b2BlockAllocator.cpp <57:2 57:9>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::b2BlockAllocator() -> void _wassert(const wchar_t *, const wchar_t *, unsigned int) [b2BlockAllocator.cpp <71:4 71:11>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> unsigned int [b2BlockAllocator.cpp <57:2 57:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> unsigned int [b2BlockAllocator.cpp <71:4 71:11>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> int32 b2BlockAllocator::m_chunkSpace [b2BlockAllocator.cpp <59:2 59:13>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> int32 b2BlockAllocator::m_chunkSpace [b2BlockAllocator.cpp <61:31 61:42>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> int32 b2BlockAllocator::m_chunkSpace [b2BlockAllocator.cpp <63:22 63:33>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> const int32 b2_chunkArrayIncrement [b2BlockAllocator.cpp <59:17 59:38>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> int32 b2BlockAllocator::m_chunkCount [b2BlockAllocator.cpp <60:2 60:13>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <61:2 61:9>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <63:9 63:16>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> b2Chunk [b2BlockAllocator.cpp <61:14 61:20>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> b2Chunk [b2BlockAllocator.cpp <61:53 61:59>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> b2Chunk [b2BlockAllocator.cpp <63:44 63:50>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::b2BlockAllocator() -> void * b2Alloc(int32) [b2BlockAllocator.cpp <61:23 61:29>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::b2BlockAllocator() -> void * memset(void *, int, size_t) [b2BlockAllocator.cpp <63:2 63:7>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::b2BlockAllocator() -> void * memset(void *, int, size_t) [b2BlockAllocator.cpp <64:2 64:7>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.cpp <64:9 64:19>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.cpp <64:32 64:42>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> static bool b2BlockAllocator::s_blockSizeLookupInitialized [b2BlockAllocator.cpp <66:6 66:33>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> static bool b2BlockAllocator::s_blockSizeLookupInitialized [b2BlockAllocator.cpp <83:3 83:30>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> int32 [b2BlockAllocator.cpp <68:3 68:7>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> int32 [b2BlockAllocator.cpp <69:8 69:12>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> const int32 b2_maxBlockSize [b2BlockAllocator.cpp <69:26 69:40>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> static int32 [] b2BlockAllocator::s_blockSizes [b2BlockAllocator.cpp <72:13 72:24>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> static uint8 [] b2BlockAllocator::s_blockSizeLookup [b2BlockAllocator.cpp <74:5 74:21>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> static uint8 [] b2BlockAllocator::s_blockSizeLookup [b2BlockAllocator.cpp <79:5 79:21>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> uint8 [b2BlockAllocator.cpp <74:29 74:33>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::b2BlockAllocator() -> uint8 [b2BlockAllocator.cpp <79:29 79:33>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::~b2BlockAllocator() -> int32 [b2BlockAllocator.cpp <89:7 89:11>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::~b2BlockAllocator() -> int32 b2BlockAllocator::m_chunkCount [b2BlockAllocator.cpp <89:24 89:35>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::~b2BlockAllocator() -> void b2Free(void *) [b2BlockAllocator.cpp <91:3 91:8>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::~b2BlockAllocator() -> void b2Free(void *) [b2BlockAllocator.cpp <94:2 94:7>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::~b2BlockAllocator() -> b2Block * b2Chunk::blocks [b2BlockAllocator.cpp <91:22 91:27>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::~b2BlockAllocator() -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <91:10 91:17>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::~b2BlockAllocator() -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <94:9 94:16>]
|
||||
REFERENCE_CALL: void * b2BlockAllocator::Allocate(int32) -> void _wassert(const wchar_t *, const wchar_t *, unsigned int) [b2BlockAllocator.cpp <102:2 102:9>]
|
||||
REFERENCE_CALL: void * b2BlockAllocator::Allocate(int32) -> void _wassert(const wchar_t *, const wchar_t *, unsigned int) [b2BlockAllocator.cpp <110:2 110:9>]
|
||||
REFERENCE_CALL: void * b2BlockAllocator::Allocate(int32) -> void _wassert(const wchar_t *, const wchar_t *, unsigned int) [b2BlockAllocator.cpp <138:3 138:10>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> unsigned int [b2BlockAllocator.cpp <102:2 102:9>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> unsigned int [b2BlockAllocator.cpp <110:2 110:9>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> unsigned int [b2BlockAllocator.cpp <138:3 138:10>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> const int32 b2_maxBlockSize [b2BlockAllocator.cpp <104:13 104:27>]
|
||||
REFERENCE_CALL: void * b2BlockAllocator::Allocate(int32) -> void * b2Alloc(int32) [b2BlockAllocator.cpp <106:10 106:16>]
|
||||
REFERENCE_CALL: void * b2BlockAllocator::Allocate(int32) -> void * b2Alloc(int32) [b2BlockAllocator.cpp <124:25 124:31>]
|
||||
REFERENCE_CALL: void * b2BlockAllocator::Allocate(int32) -> void * b2Alloc(int32) [b2BlockAllocator.cpp <131:29 131:35>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> static uint8 [] b2BlockAllocator::s_blockSizeLookup [b2BlockAllocator.cpp <109:16 109:32>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> const int32 b2_blockSizes [b2BlockAllocator.cpp <110:33 110:45>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.cpp <112:6 112:16>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.cpp <114:20 114:30>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.cpp <115:3 115:13>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.cpp <148:3 148:13>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block [b2BlockAllocator.cpp <114:3 114:9>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block [b2BlockAllocator.cpp <131:20 131:26>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block [b2BlockAllocator.cpp <141:4 141:10>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block [b2BlockAllocator.cpp <141:22 141:28>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block [b2BlockAllocator.cpp <142:4 142:10>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block [b2BlockAllocator.cpp <142:21 142:27>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block [b2BlockAllocator.cpp <145:3 145:9>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block [b2BlockAllocator.cpp <145:20 145:26>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * b2Block::next [b2BlockAllocator.cpp <115:31 115:34>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * b2Block::next [b2BlockAllocator.cpp <143:11 143:14>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * b2Block::next [b2BlockAllocator.cpp <146:9 146:12>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * b2Block::next [b2BlockAllocator.cpp <148:39 148:42>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 b2BlockAllocator::m_chunkCount [b2BlockAllocator.cpp <120:7 120:18>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 b2BlockAllocator::m_chunkCount [b2BlockAllocator.cpp <125:32 125:43>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 b2BlockAllocator::m_chunkCount [b2BlockAllocator.cpp <126:22 126:33>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 b2BlockAllocator::m_chunkCount [b2BlockAllocator.cpp <130:31 130:42>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 b2BlockAllocator::m_chunkCount [b2BlockAllocator.cpp <149:5 149:16>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 b2BlockAllocator::m_chunkSpace [b2BlockAllocator.cpp <120:23 120:34>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 b2BlockAllocator::m_chunkSpace [b2BlockAllocator.cpp <123:4 123:15>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 b2BlockAllocator::m_chunkSpace [b2BlockAllocator.cpp <124:33 124:44>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk [b2BlockAllocator.cpp <122:4 122:10>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk [b2BlockAllocator.cpp <124:16 124:22>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk [b2BlockAllocator.cpp <124:55 124:61>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk [b2BlockAllocator.cpp <125:54 125:60>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk [b2BlockAllocator.cpp <126:71 126:77>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk [b2BlockAllocator.cpp <130:3 130:9>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <122:25 122:32>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <124:4 124:11>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <125:11 125:18>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <126:11 126:18>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <130:20 130:27>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> const int32 b2_chunkArrayIncrement [b2BlockAllocator.cpp <123:20 123:41>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> const int32 b2_chunkArrayIncrement [b2BlockAllocator.cpp <126:39 126:60>]
|
||||
REFERENCE_CALL: void * b2BlockAllocator::Allocate(int32) -> void * memcpy(void *, const void *, size_t) [b2BlockAllocator.cpp <125:4 125:9>]
|
||||
REFERENCE_CALL: void * b2BlockAllocator::Allocate(int32) -> void * memset(void *, int, size_t) [b2BlockAllocator.cpp <126:4 126:9>]
|
||||
REFERENCE_CALL: void * b2BlockAllocator::Allocate(int32) -> void b2Free(void *) [b2BlockAllocator.cpp <127:4 127:9>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * b2Chunk::blocks [b2BlockAllocator.cpp <131:10 131:15>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * b2Chunk::blocks [b2BlockAllocator.cpp <141:46 141:51>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * b2Chunk::blocks [b2BlockAllocator.cpp <142:45 142:50>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * b2Chunk::blocks [b2BlockAllocator.cpp <145:44 145:49>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * b2Chunk::blocks [b2BlockAllocator.cpp <148:31 148:36>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> b2Block * b2Chunk::blocks [b2BlockAllocator.cpp <151:17 151:22>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> const int32 b2_chunkSize [b2BlockAllocator.cpp <131:37 131:48>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> const int32 b2_chunkSize [b2BlockAllocator.cpp <137:22 137:33>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> const int32 b2_chunkSize [b2BlockAllocator.cpp <138:38 138:49>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> static int32 [] b2BlockAllocator::s_blockSizes [b2BlockAllocator.cpp <135:21 135:32>]
|
||||
REFERENCE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int32 b2Chunk::blockSize [b2BlockAllocator.cpp <136:10 136:18>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int8 [b2BlockAllocator.cpp <141:33 141:36>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int8 [b2BlockAllocator.cpp <142:32 142:35>]
|
||||
REFERENCE_TYPE_USAGE: void * b2BlockAllocator::Allocate(int32) -> int8 [b2BlockAllocator.cpp <145:31 145:34>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::Free(void *, int32) -> void _wassert(const wchar_t *, const wchar_t *, unsigned int) [b2BlockAllocator.cpp <162:2 162:9>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::Free(void *, int32) -> void _wassert(const wchar_t *, const wchar_t *, unsigned int) [b2BlockAllocator.cpp <171:2 171:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> unsigned int [b2BlockAllocator.cpp <162:2 162:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> unsigned int [b2BlockAllocator.cpp <171:2 171:9>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Free(void *, int32) -> const int32 b2_maxBlockSize [b2BlockAllocator.cpp <164:13 164:27>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::Free(void *, int32) -> void b2Free(void *) [b2BlockAllocator.cpp <166:3 166:8>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Free(void *, int32) -> static uint8 [] b2BlockAllocator::s_blockSizeLookup [b2BlockAllocator.cpp <170:16 170:32>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Free(void *, int32) -> const int32 b2_blockSizes [b2BlockAllocator.cpp <171:33 171:45>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> b2Block [b2BlockAllocator.cpp <199:2 199:8>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Free(void *, int32) -> b2Block [b2BlockAllocator.cpp <199:20 199:26>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Free(void *, int32) -> b2Block * b2Block::next [b2BlockAllocator.cpp <200:9 200:12>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Free(void *, int32) -> b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.cpp <200:16 200:26>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Free(void *, int32) -> b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.cpp <201:2 201:12>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Clear() -> int32 [b2BlockAllocator.cpp <206:7 206:11>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Clear() -> int32 b2BlockAllocator::m_chunkCount [b2BlockAllocator.cpp <206:24 206:35>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Clear() -> int32 b2BlockAllocator::m_chunkCount [b2BlockAllocator.cpp <211:2 211:13>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::Clear() -> void b2Free(void *) [b2BlockAllocator.cpp <208:3 208:8>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Clear() -> b2Block * b2Chunk::blocks [b2BlockAllocator.cpp <208:22 208:27>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Clear() -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <208:10 208:17>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Clear() -> b2Chunk * b2BlockAllocator::m_chunks [b2BlockAllocator.cpp <212:9 212:16>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::Clear() -> void * memset(void *, int, size_t) [b2BlockAllocator.cpp <212:2 212:7>]
|
||||
REFERENCE_CALL: void b2BlockAllocator::Clear() -> void * memset(void *, int, size_t) [b2BlockAllocator.cpp <214:2 214:7>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Clear() -> int32 b2BlockAllocator::m_chunkSpace [b2BlockAllocator.cpp <212:22 212:33>]
|
||||
REFERENCE_TYPE_USAGE: void b2BlockAllocator::Clear() -> b2Chunk [b2BlockAllocator.cpp <212:44 212:50>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Clear() -> b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.cpp <214:9 214:19>]
|
||||
REFERENCE_USAGE: void b2BlockAllocator::Clear() -> b2Block * [] b2BlockAllocator::m_freeLists [b2BlockAllocator.cpp <214:32 214:42>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<105:2> [b2BlockAllocator.cpp <105:2 105:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<105:2> [b2BlockAllocator.cpp <107:2 107:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<109:8> [b2BlockAllocator.cpp <109:8 109:12>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<109:8> [b2BlockAllocator.cpp <110:16 110:20>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<109:8> [b2BlockAllocator.cpp <110:25 110:29>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<109:8> [b2BlockAllocator.cpp <112:18 112:22>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<109:8> [b2BlockAllocator.cpp <114:32 114:36>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<109:8> [b2BlockAllocator.cpp <115:15 115:19>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<109:8> [b2BlockAllocator.cpp <135:34 135:38>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<109:8> [b2BlockAllocator.cpp <148:15 148:19>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<113:2> [b2BlockAllocator.cpp <113:2 113:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<113:2> [b2BlockAllocator.cpp <117:2 117:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<114:12> [b2BlockAllocator.cpp <114:12 114:16>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<114:12> [b2BlockAllocator.cpp <115:24 115:28>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<114:12> [b2BlockAllocator.cpp <116:10 116:14>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<119:2> [b2BlockAllocator.cpp <119:2 119:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<119:2> [b2BlockAllocator.cpp <152:2 152:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<121:3> [b2BlockAllocator.cpp <121:3 121:3>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<121:3> [b2BlockAllocator.cpp <128:3 128:3>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<122:13> [b2BlockAllocator.cpp <122:13 122:21>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<122:13> [b2BlockAllocator.cpp <125:21 125:29>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<122:13> [b2BlockAllocator.cpp <127:11 127:19>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<130:12> [b2BlockAllocator.cpp <130:12 130:16>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<130:12> [b2BlockAllocator.cpp <131:3 131:7>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<130:12> [b2BlockAllocator.cpp <136:3 136:7>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<130:12> [b2BlockAllocator.cpp <141:39 141:43>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<130:12> [b2BlockAllocator.cpp <142:38 142:42>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<130:12> [b2BlockAllocator.cpp <145:37 145:41>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<130:12> [b2BlockAllocator.cpp <148:24 148:28>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<130:12> [b2BlockAllocator.cpp <151:10 151:14>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<135:9> [b2BlockAllocator.cpp <135:9 135:17>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<135:9> [b2BlockAllocator.cpp <136:22 136:30>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<135:9> [b2BlockAllocator.cpp <137:37 137:45>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<135:9> [b2BlockAllocator.cpp <138:25 138:33>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<135:9> [b2BlockAllocator.cpp <141:55 141:63>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<135:9> [b2BlockAllocator.cpp <142:54 142:62>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<135:9> [b2BlockAllocator.cpp <145:53 145:61>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<137:9> [b2BlockAllocator.cpp <137:9 137:18>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<137:9> [b2BlockAllocator.cpp <138:12 138:21>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<137:9> [b2BlockAllocator.cpp <139:25 139:34>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<137:9> [b2BlockAllocator.cpp <145:66 145:75>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<139:14> [b2BlockAllocator.cpp <139:14 139:14>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<139:14> [b2BlockAllocator.cpp <139:21 139:21>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<139:14> [b2BlockAllocator.cpp <139:43 139:43>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<139:14> [b2BlockAllocator.cpp <141:67 141:67>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<139:14> [b2BlockAllocator.cpp <142:67 142:67>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<140:3> [b2BlockAllocator.cpp <140:3 140:3>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<140:3> [b2BlockAllocator.cpp <144:3 144:3>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<141:13> [b2BlockAllocator.cpp <141:13 141:17>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<141:13> [b2BlockAllocator.cpp <143:4 143:8>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<142:13> [b2BlockAllocator.cpp <142:13 142:16>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<142:13> [b2BlockAllocator.cpp <143:18 143:21>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<145:12> [b2BlockAllocator.cpp <145:12 145:15>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<145:12> [b2BlockAllocator.cpp <146:3 146:6>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<155:35> [b2BlockAllocator.cpp <155:35 155:35>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<155:35> [b2BlockAllocator.cpp <166:10 166:10>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<155:35> [b2BlockAllocator.cpp <199:29 199:29>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<155:44> [b2BlockAllocator.cpp <155:44 155:47>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<155:44> [b2BlockAllocator.cpp <157:6 157:9>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<155:44> [b2BlockAllocator.cpp <162:15 162:18>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<155:44> [b2BlockAllocator.cpp <164:6 164:9>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<155:44> [b2BlockAllocator.cpp <170:34 170:37>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<156:1> [b2BlockAllocator.cpp <156:1 156:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<156:1> [b2BlockAllocator.cpp <202:1 202:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<158:2> [b2BlockAllocator.cpp <158:2 158:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<158:2> [b2BlockAllocator.cpp <160:2 160:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<165:2> [b2BlockAllocator.cpp <165:2 165:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<165:2> [b2BlockAllocator.cpp <168:2 168:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<170:8> [b2BlockAllocator.cpp <170:8 170:12>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<170:8> [b2BlockAllocator.cpp <171:16 171:20>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<170:8> [b2BlockAllocator.cpp <171:25 171:29>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<170:8> [b2BlockAllocator.cpp <200:28 200:32>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<170:8> [b2BlockAllocator.cpp <201:14 201:18>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<199:11> [b2BlockAllocator.cpp <199:11 199:15>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<199:11> [b2BlockAllocator.cpp <200:2 200:6>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<199:11> [b2BlockAllocator.cpp <201:23 201:27>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<205:1> [b2BlockAllocator.cpp <205:1 205:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<205:1> [b2BlockAllocator.cpp <215:1 215:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<206:13> [b2BlockAllocator.cpp <206:13 206:13>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<206:13> [b2BlockAllocator.cpp <206:20 206:20>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<206:13> [b2BlockAllocator.cpp <206:40 206:40>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<206:13> [b2BlockAllocator.cpp <208:19 208:19>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<207:2> [b2BlockAllocator.cpp <207:2 207:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<207:2> [b2BlockAllocator.cpp <209:2 209:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<25:1> [b2BlockAllocator.cpp <25:1 25:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<25:1> [b2BlockAllocator.cpp <40:1 40:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<45:1> [b2BlockAllocator.cpp <45:1 45:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<45:1> [b2BlockAllocator.cpp <48:1 48:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<51:1> [b2BlockAllocator.cpp <51:1 51:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<51:1> [b2BlockAllocator.cpp <53:1 53:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<56:1> [b2BlockAllocator.cpp <56:1 56:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<56:1> [b2BlockAllocator.cpp <85:1 85:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<67:2> [b2BlockAllocator.cpp <67:2 67:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<67:2> [b2BlockAllocator.cpp <84:2 84:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<68:9> [b2BlockAllocator.cpp <68:9 68:9>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<68:9> [b2BlockAllocator.cpp <71:13 71:13>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<68:9> [b2BlockAllocator.cpp <72:26 72:26>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<68:9> [b2BlockAllocator.cpp <74:35 74:35>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<68:9> [b2BlockAllocator.cpp <78:7 78:7>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<68:9> [b2BlockAllocator.cpp <79:35 79:35>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<69:14> [b2BlockAllocator.cpp <69:14 69:14>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<69:14> [b2BlockAllocator.cpp <69:21 69:21>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<69:14> [b2BlockAllocator.cpp <69:45 69:45>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<69:14> [b2BlockAllocator.cpp <72:8 72:8>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<69:14> [b2BlockAllocator.cpp <74:23 74:23>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<69:14> [b2BlockAllocator.cpp <79:23 79:23>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<70:3> [b2BlockAllocator.cpp <70:3 70:3>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<70:3> [b2BlockAllocator.cpp <81:3 81:3>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<73:4> [b2BlockAllocator.cpp <73:4 73:4>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<73:4> [b2BlockAllocator.cpp <75:4 75:4>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<77:4> [b2BlockAllocator.cpp <77:4 77:4>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<77:4> [b2BlockAllocator.cpp <80:4 80:4>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<88:1> [b2BlockAllocator.cpp <88:1 88:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<88:1> [b2BlockAllocator.cpp <95:1 95:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<89:13> [b2BlockAllocator.cpp <89:13 89:13>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<89:13> [b2BlockAllocator.cpp <89:20 89:20>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<89:13> [b2BlockAllocator.cpp <89:40 89:40>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<89:13> [b2BlockAllocator.cpp <91:19 91:19>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<90:2> [b2BlockAllocator.cpp <90:2 90:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<90:2> [b2BlockAllocator.cpp <92:2 92:2>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<97:40> [b2BlockAllocator.cpp <97:40 97:43>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<97:40> [b2BlockAllocator.cpp <99:6 99:9>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<97:40> [b2BlockAllocator.cpp <102:15 102:18>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<97:40> [b2BlockAllocator.cpp <104:6 104:9>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<97:40> [b2BlockAllocator.cpp <106:18 106:21>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<97:40> [b2BlockAllocator.cpp <109:34 109:37>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<98:1> [b2BlockAllocator.cpp <98:1 98:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.cpp<98:1> [b2BlockAllocator.cpp <153:1 153:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.h<36:1> [b2BlockAllocator.h <36:1 36:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.h<36:1> [b2BlockAllocator.h <60:1 60:1>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.h<42:23> [b2BlockAllocator.h <42:23 42:26>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.h<45:18> [b2BlockAllocator.h <45:18 45:18>]
|
||||
LOCAL_SYMBOL: b2BlockAllocator.h<45:27> [b2BlockAllocator.h <45:27 45:30>]
|
||||
LOCAL_SYMBOL: b2Settings.h<135:21> [b2Settings.h <135:21 135:24>]
|
||||
LOCAL_SYMBOL: b2Settings.h<138:19> [b2Settings.h <138:19 138:21>]
|
||||
LOCAL_SYMBOL: b2Settings.h<141:24> [b2Settings.h <141:24 141:29>]
|
||||
LOCAL_SYMBOL: b2Settings.h<146:1> [b2Settings.h <146:1 146:1>]
|
||||
LOCAL_SYMBOL: b2Settings.h<146:1> [b2Settings.h <150:1 150:1>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <1:1 17:3>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <26:7 26:11>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <27:7 27:11>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <28:7 28:11>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <29:7 29:11>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <30:7 30:11>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <31:7 31:11>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <32:7 32:11>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <33:7 33:11>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <34:7 34:11>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <35:7 35:11>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <36:7 36:12>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <37:7 37:12>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <38:7 38:12>]
|
||||
COMMENT: comment [b2BlockAllocator.cpp <39:7 39:12>]
|
||||
COMMENT: comment [b2BlockAllocator.h <1:1 17:3>]
|
||||
COMMENT: comment [b2BlockAllocator.h <32:1 32:63>]
|
||||
COMMENT: comment [b2BlockAllocator.h <33:1 33:54>]
|
||||
COMMENT: comment [b2BlockAllocator.h <34:1 34:72>]
|
||||
COMMENT: comment [b2BlockAllocator.h <41:2 41:88>]
|
||||
COMMENT: comment [b2BlockAllocator.h <44:2 44:83>]
|
||||
COMMENT: comment [b2Settings.h <1:1 17:3>]
|
||||
COMMENT: comment [b2Settings.h <46:1 46:10>]
|
||||
COMMENT: comment [b2Settings.h <47:1 47:75>]
|
||||
COMMENT: comment [b2Settings.h <48:1 48:4>]
|
||||
COMMENT: comment [b2Settings.h <50:1 50:13>]
|
||||
COMMENT: comment [b2Settings.h <52:1 52:71>]
|
||||
COMMENT: comment [b2Settings.h <53:1 53:27>]
|
||||
COMMENT: comment [b2Settings.h <56:1 56:76>]
|
||||
COMMENT: comment [b2Settings.h <57:1 57:70>]
|
||||
COMMENT: comment [b2Settings.h <60:1 60:74>]
|
||||
COMMENT: comment [b2Settings.h <61:1 61:68>]
|
||||
COMMENT: comment [b2Settings.h <62:1 62:23>]
|
||||
COMMENT: comment [b2Settings.h <65:1 65:78>]
|
||||
COMMENT: comment [b2Settings.h <66:1 66:59>]
|
||||
COMMENT: comment [b2Settings.h <67:1 67:40>]
|
||||
COMMENT: comment [b2Settings.h <70:1 70:79>]
|
||||
COMMENT: comment [b2Settings.h <71:1 71:70>]
|
||||
COMMENT: comment [b2Settings.h <74:1 74:78>]
|
||||
COMMENT: comment [b2Settings.h <75:1 75:70>]
|
||||
COMMENT: comment [b2Settings.h <78:1 78:83>]
|
||||
COMMENT: comment [b2Settings.h <79:1 79:91>]
|
||||
COMMENT: comment [b2Settings.h <80:1 80:64>]
|
||||
COMMENT: comment [b2Settings.h <83:1 83:78>]
|
||||
COMMENT: comment [b2Settings.h <87:1 87:12>]
|
||||
COMMENT: comment [b2Settings.h <89:1 89:68>]
|
||||
COMMENT: comment [b2Settings.h <92:1 92:86>]
|
||||
COMMENT: comment [b2Settings.h <93:1 93:64>]
|
||||
COMMENT: comment [b2Settings.h <96:1 96:88>]
|
||||
COMMENT: comment [b2Settings.h <97:1 97:23>]
|
||||
COMMENT: comment [b2Settings.h <100:1 100:89>]
|
||||
COMMENT: comment [b2Settings.h <101:1 101:23>]
|
||||
COMMENT: comment [b2Settings.h <104:1 104:80>]
|
||||
COMMENT: comment [b2Settings.h <105:1 105:70>]
|
||||
COMMENT: comment [b2Settings.h <109:1 109:81>]
|
||||
COMMENT: comment [b2Settings.h <110:1 110:70>]
|
||||
COMMENT: comment [b2Settings.h <114:1 114:88>]
|
||||
COMMENT: comment [b2Settings.h <115:1 115:89>]
|
||||
COMMENT: comment [b2Settings.h <116:1 116:18>]
|
||||
COMMENT: comment [b2Settings.h <121:1 121:9>]
|
||||
COMMENT: comment [b2Settings.h <123:1 123:67>]
|
||||
COMMENT: comment [b2Settings.h <126:1 126:72>]
|
||||
COMMENT: comment [b2Settings.h <129:1 129:73>]
|
||||
COMMENT: comment [b2Settings.h <132:1 132:21>]
|
||||
COMMENT: comment [b2Settings.h <134:1 134:62>]
|
||||
COMMENT: comment [b2Settings.h <137:1 137:71>]
|
||||
COMMENT: comment [b2Settings.h <140:1 140:22>]
|
||||
COMMENT: comment [b2Settings.h <143:1 143:30>]
|
||||
COMMENT: comment [b2Settings.h <144:1 144:57>]
|
||||
COMMENT: comment [b2Settings.h <147:16 147:40>]
|
||||
COMMENT: comment [b2Settings.h <148:16 148:40>]
|
||||
COMMENT: comment [b2Settings.h <149:19 149:33>]
|
||||
COMMENT: comment [b2Settings.h <152:1 152:21>]
|
||||
-2289
File diff suppressed because it is too large
Load Diff
-2369
File diff suppressed because it is too large
Load Diff
-231
@@ -1,231 +0,0 @@
|
||||
FILE: b2Settings.cpp
|
||||
FILE: b2Settings.h
|
||||
FILE: stddef.h non-indexed
|
||||
FILE: corecrt.h non-indexed
|
||||
FILE: vcruntime.h non-indexed
|
||||
FILE: sal.h non-indexed
|
||||
FILE: concurrencysal.h non-indexed
|
||||
FILE: vadefs.h non-indexed
|
||||
FILE: assert.h non-indexed
|
||||
FILE: float.h non-indexed
|
||||
FILE: stdio.h non-indexed
|
||||
FILE: corecrt_wstdio.h non-indexed
|
||||
FILE: corecrt_stdio_config.h non-indexed
|
||||
FILE: stdarg.h non-indexed
|
||||
FILE: stdlib.h non-indexed
|
||||
FILE: corecrt_malloc.h non-indexed
|
||||
FILE: corecrt_search.h non-indexed
|
||||
FILE: corecrt_wstdlib.h non-indexed
|
||||
FILE: limits.h non-indexed
|
||||
SYMBOL_MACRO: B2_SETTINGS_H [b2Settings.h <20:9 20:21>]
|
||||
SYMBOL_MACRO: b2DEBUG [b2Settings.h <27:10 27:16>]
|
||||
SYMBOL_MACRO: B2_NOT_USED [b2Settings.h <30:9 <30:9 30:19> 30:33>]
|
||||
SYMBOL_MACRO: b2Assert [b2Settings.h <31:9 <31:9 31:16> 31:28>]
|
||||
SYMBOL_MACRO: b2_maxFloat [b2Settings.h <42:9 <42:9 42:19> 42:21>]
|
||||
SYMBOL_MACRO: b2_epsilon [b2Settings.h <43:9 <43:9 43:18> 43:20>]
|
||||
SYMBOL_MACRO: b2_pi [b2Settings.h <44:9 <44:9 44:13> 44:16>]
|
||||
SYMBOL_MACRO: b2_maxManifoldPoints [b2Settings.h <54:9 <54:9 54:28> 54:29>]
|
||||
SYMBOL_MACRO: b2_maxPolygonVertices [b2Settings.h <58:9 <58:9 58:29> 58:30>]
|
||||
SYMBOL_MACRO: b2_aabbExtension [b2Settings.h <63:9 <63:9 63:24> 63:26>]
|
||||
SYMBOL_MACRO: b2_aabbMultiplier [b2Settings.h <68:9 <68:9 68:25> 68:27>]
|
||||
SYMBOL_MACRO: b2_linearSlop [b2Settings.h <72:9 <72:9 72:21> 72:24>]
|
||||
SYMBOL_MACRO: b2_angularSlop [b2Settings.h <76:9 <76:9 76:22> 76:47>]
|
||||
SYMBOL_MACRO: b2_polygonRadius [b2Settings.h <81:9 <81:9 81:24> 81:47>]
|
||||
SYMBOL_MACRO: b2_maxSubSteps [b2Settings.h <84:9 <84:9 84:22> 84:25>]
|
||||
SYMBOL_MACRO: b2_maxTOIContacts [b2Settings.h <90:9 <90:9 90:25> 90:28>]
|
||||
SYMBOL_MACRO: b2_velocityThreshold [b2Settings.h <94:9 <94:9 94:28> 94:30>]
|
||||
SYMBOL_MACRO: b2_maxLinearCorrection [b2Settings.h <98:9 <98:9 98:30> 98:32>]
|
||||
SYMBOL_MACRO: b2_maxAngularCorrection [b2Settings.h <102:9 <102:9 102:31> 102:55>]
|
||||
SYMBOL_MACRO: b2_maxTranslation [b2Settings.h <106:9 <106:9 106:25> 106:28>]
|
||||
SYMBOL_MACRO: b2_maxTranslationSquared [b2Settings.h <107:9 <107:9 107:32> 107:71>]
|
||||
SYMBOL_MACRO: b2_maxRotation [b2Settings.h <111:9 <111:9 111:22> 111:39>]
|
||||
SYMBOL_MACRO: b2_maxRotationSquared [b2Settings.h <112:9 <112:9 112:29> 112:63>]
|
||||
SYMBOL_MACRO: b2_baumgarte [b2Settings.h <117:9 <117:9 117:20> 117:24>]
|
||||
SYMBOL_MACRO: b2_toiBaugarte [b2Settings.h <118:9 <118:9 118:22> 118:26>]
|
||||
SYMBOL_MACRO: b2_timeToSleep [b2Settings.h <124:9 <124:9 124:22> 124:26>]
|
||||
SYMBOL_MACRO: b2_linearSleepTolerance [b2Settings.h <127:9 <127:9 127:31> 127:33>]
|
||||
SYMBOL_MACRO: b2_angularSleepTolerance [b2Settings.h <130:9 <130:9 130:32> 130:55>]
|
||||
SYMBOL_TYPEDEF: int8 [b2Settings.h <33:21 33:24>]
|
||||
SYMBOL_BUILTIN_TYPE: signed char
|
||||
SYMBOL_TYPEDEF: int16 [b2Settings.h <34:22 34:26>]
|
||||
SYMBOL_BUILTIN_TYPE: short
|
||||
SYMBOL_TYPEDEF: int32 [b2Settings.h <35:20 35:24>]
|
||||
SYMBOL_BUILTIN_TYPE: int
|
||||
SYMBOL_TYPEDEF: uint8 [b2Settings.h <36:23 36:27>]
|
||||
SYMBOL_BUILTIN_TYPE: unsigned char
|
||||
SYMBOL_TYPEDEF: uint16 [b2Settings.h <37:24 37:29>]
|
||||
SYMBOL_BUILTIN_TYPE: unsigned short
|
||||
SYMBOL_TYPEDEF: uint32 [b2Settings.h <38:22 38:27>]
|
||||
SYMBOL_BUILTIN_TYPE: unsigned int
|
||||
SYMBOL_TYPEDEF: float32 [b2Settings.h <39:15 39:21>]
|
||||
SYMBOL_BUILTIN_TYPE: float
|
||||
SYMBOL_TYPEDEF: float64 [b2Settings.h <40:16 40:22>]
|
||||
SYMBOL_BUILTIN_TYPE: double
|
||||
SYMBOL_FUNCTION: void * b2Alloc(int32) [b2Settings.cpp <27:1 <27:7 27:13> 30:1>]
|
||||
SYMBOL_FUNCTION: void * b2Alloc(int32) [b2Settings.h <135:1 <135:7 135:13> 135:25>]
|
||||
SYMBOL_BUILTIN_TYPE: void
|
||||
SYMBOL_FUNCTION: void b2Free(void *) [b2Settings.cpp <32:1 <32:6 32:11> 35:1>]
|
||||
SYMBOL_FUNCTION: void b2Free(void *) [b2Settings.h <138:1 <138:6 138:11> 138:22>]
|
||||
SYMBOL_FUNCTION: void b2Log(const char *) [b2Settings.cpp <38:1 <38:6 38:10> 44:1>]
|
||||
SYMBOL_FUNCTION: void b2Log(const char *) [b2Settings.h <141:1 <141:6 141:10> 141:35>]
|
||||
SYMBOL_BUILTIN_TYPE: char
|
||||
SYMBOL_STRUCT: b2Version [b2Settings.h <145:1 <145:8 145:16> 150:1>]
|
||||
SYMBOL_FIELD: public int32 b2Version::major [b2Settings.h <147:8 147:12>]
|
||||
SYMBOL_FIELD: public int32 b2Version::minor [b2Settings.h <148:8 148:12>]
|
||||
SYMBOL_FIELD: public int32 b2Version::revision [b2Settings.h <149:8 149:15>]
|
||||
SYMBOL_GLOBAL_VARIABLE: b2Version b2_version [b2Settings.cpp <24:11 24:20>]
|
||||
SYMBOL_GLOBAL_VARIABLE: b2Version b2_version [b2Settings.h <153:18 153:27>]
|
||||
SYMBOL_FUNCTION: void * malloc(size_t)
|
||||
SYMBOL_FUNCTION: void free(void *)
|
||||
SYMBOL_FUNCTION: void __vcrt_assert_va_start_is_not_reference<const char *>::__vcrt_assert_va_start_is_not_reference()
|
||||
SYMBOL_FUNCTION: int vprintf(const char * const, va_list)
|
||||
REFERENCE_INCLUDE: b2Settings.cpp -> b2Settings.h [b2Settings.cpp <19:10 19:36>]
|
||||
REFERENCE_MACRO_USAGE: b2Settings.h -> B2_SETTINGS_H [b2Settings.h <19:9 19:21>]
|
||||
REFERENCE_INCLUDE: b2Settings.h -> stddef.h [b2Settings.h <22:10 22:19>]
|
||||
REFERENCE_INCLUDE: stddef.h -> corecrt.h [stddef.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: corecrt.h -> vcruntime.h [corecrt.h <10:10 10:22>]
|
||||
REFERENCE_INCLUDE: vcruntime.h -> sal.h [vcruntime.h <47:10 47:16>]
|
||||
REFERENCE_INCLUDE: sal.h -> concurrencysal.h [sal.h <2990:10 2990:27>]
|
||||
REFERENCE_INCLUDE: vcruntime.h -> vadefs.h [vcruntime.h <48:10 48:19>]
|
||||
REFERENCE_INCLUDE: b2Settings.h -> assert.h [b2Settings.h <23:10 23:19>]
|
||||
REFERENCE_INCLUDE: assert.h -> corecrt.h [assert.h <12:10 12:20>]
|
||||
REFERENCE_INCLUDE: b2Settings.h -> float.h [b2Settings.h <24:10 24:18>]
|
||||
REFERENCE_INCLUDE: float.h -> corecrt.h [float.h <12:10 12:20>]
|
||||
REFERENCE_MACRO_USAGE: b2Settings.h -> NDEBUG [b2Settings.h <26:14 26:19>]
|
||||
REFERENCE_INCLUDE: b2Settings.cpp -> stdio.h [b2Settings.cpp <20:10 20:18>]
|
||||
REFERENCE_INCLUDE: stdio.h -> corecrt.h [stdio.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: stdio.h -> corecrt_wstdio.h [stdio.h <12:10 12:27>]
|
||||
REFERENCE_INCLUDE: corecrt_wstdio.h -> corecrt.h [corecrt_wstdio.h <12:10 12:20>]
|
||||
REFERENCE_INCLUDE: corecrt_wstdio.h -> corecrt_stdio_config.h [corecrt_wstdio.h <13:10 13:33>]
|
||||
REFERENCE_INCLUDE: corecrt_stdio_config.h -> corecrt.h [corecrt_stdio_config.h <10:10 10:20>]
|
||||
REFERENCE_INCLUDE: b2Settings.cpp -> stdarg.h [b2Settings.cpp <21:10 21:19>]
|
||||
REFERENCE_INCLUDE: stdarg.h -> vcruntime.h [stdarg.h <11:10 11:22>]
|
||||
REFERENCE_INCLUDE: b2Settings.cpp -> stdlib.h [b2Settings.cpp <22:10 22:19>]
|
||||
REFERENCE_INCLUDE: stdlib.h -> corecrt.h [stdlib.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: stdlib.h -> corecrt_malloc.h [stdlib.h <12:10 12:27>]
|
||||
REFERENCE_INCLUDE: corecrt_malloc.h -> corecrt.h [corecrt_malloc.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: stdlib.h -> corecrt_search.h [stdlib.h <13:10 13:27>]
|
||||
REFERENCE_INCLUDE: corecrt_search.h -> corecrt.h [corecrt_search.h <13:10 13:20>]
|
||||
REFERENCE_INCLUDE: corecrt_search.h -> stddef.h [corecrt_search.h <14:10 14:19>]
|
||||
REFERENCE_INCLUDE: stdlib.h -> corecrt_wstdlib.h [stdlib.h <14:10 14:28>]
|
||||
REFERENCE_INCLUDE: corecrt_wstdlib.h -> corecrt.h [corecrt_wstdlib.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: stdlib.h -> limits.h [stdlib.h <15:10 15:19>]
|
||||
REFERENCE_INCLUDE: limits.h -> vcruntime.h [limits.h <11:10 11:22>]
|
||||
REFERENCE_MACRO_USAGE: b2Settings.cpp -> va_start [b2Settings.cpp <41:2 41:9>]
|
||||
REFERENCE_MACRO_USAGE: b2Settings.cpp -> va_end [b2Settings.cpp <43:2 43:7>]
|
||||
REFERENCE_TYPE_USAGE: int8 -> signed char [b2Settings.h <33:9 33:14>]
|
||||
REFERENCE_TYPE_USAGE: int16 -> short [b2Settings.h <34:9 34:14>]
|
||||
REFERENCE_TYPE_USAGE: int32 -> int [b2Settings.h <35:9 35:14>]
|
||||
REFERENCE_TYPE_USAGE: uint8 -> unsigned char [b2Settings.h <36:9 36:16>]
|
||||
REFERENCE_TYPE_USAGE: uint16 -> unsigned short [b2Settings.h <37:9 37:16>]
|
||||
REFERENCE_TYPE_USAGE: uint32 -> unsigned int [b2Settings.h <38:9 38:16>]
|
||||
REFERENCE_TYPE_USAGE: float32 -> float [b2Settings.h <39:9 39:13>]
|
||||
REFERENCE_TYPE_USAGE: float64 -> double [b2Settings.h <40:9 40:14>]
|
||||
REFERENCE_TYPE_USAGE: void * b2Alloc(int32) -> void [b2Settings.cpp <27:1 27:4>]
|
||||
REFERENCE_TYPE_USAGE: void * b2Alloc(int32) -> void [b2Settings.h <135:1 135:4>]
|
||||
REFERENCE_TYPE_USAGE: void * b2Alloc(int32) -> int32 [b2Settings.cpp <27:15 27:19>]
|
||||
REFERENCE_TYPE_USAGE: void * b2Alloc(int32) -> int32 [b2Settings.h <135:15 135:19>]
|
||||
REFERENCE_TYPE_USAGE: void b2Free(void *) -> void [b2Settings.cpp <32:1 32:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2Free(void *) -> void [b2Settings.cpp <32:13 32:16>]
|
||||
REFERENCE_TYPE_USAGE: void b2Free(void *) -> void [b2Settings.h <138:1 138:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2Free(void *) -> void [b2Settings.h <138:13 138:16>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> void [b2Settings.cpp <38:1 38:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> void [b2Settings.cpp <41:2 41:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> void [b2Settings.cpp <43:2 43:7>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> void [b2Settings.h <141:1 141:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> char [b2Settings.cpp <38:18 38:21>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> char [b2Settings.cpp <41:2 41:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> char [b2Settings.h <141:18 141:21>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2Version::major -> int32 [b2Settings.h <147:2 147:6>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2Version::minor -> int32 [b2Settings.h <148:2 148:6>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2Version::revision -> int32 [b2Settings.h <149:2 149:6>]
|
||||
REFERENCE_TYPE_USAGE: b2Version b2_version -> b2Version [b2Settings.cpp <24:1 24:9>]
|
||||
REFERENCE_TYPE_USAGE: b2Version b2_version -> b2Version [b2Settings.h <153:8 153:16>]
|
||||
REFERENCE_CALL: void * b2Alloc(int32) -> void * malloc(size_t) [b2Settings.cpp <29:9 29:14>]
|
||||
REFERENCE_CALL: void b2Free(void *) -> void free(void *) [b2Settings.cpp <34:2 34:5>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> va_list [b2Settings.cpp <40:2 40:8>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> va_list [b2Settings.cpp <41:2 41:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> va_list [b2Settings.cpp <43:2 43:7>]
|
||||
REFERENCE_CALL: void b2Log(const char *) -> void __vcrt_assert_va_start_is_not_reference<const char *>::__vcrt_assert_va_start_is_not_reference() [b2Settings.cpp <41:2 41:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> __vcrt_assert_va_start_is_not_reference<const char *> [b2Settings.cpp <41:2 41:9>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> int [b2Settings.cpp <41:2 41:9>]
|
||||
REFERENCE_CALL: void b2Log(const char *) -> int vprintf(const char * const, va_list) [b2Settings.cpp <42:2 42:8>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<24:24> [b2Settings.cpp <24:24 24:24>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<24:24> [b2Settings.cpp <24:32 24:32>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<27:21> [b2Settings.cpp <27:21 27:24>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<27:21> [b2Settings.cpp <29:16 29:19>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<28:1> [b2Settings.cpp <28:1 28:1>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<28:1> [b2Settings.cpp <30:1 30:1>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<32:19> [b2Settings.cpp <32:19 32:21>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<32:19> [b2Settings.cpp <34:7 34:9>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<33:1> [b2Settings.cpp <33:1 33:1>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<33:1> [b2Settings.cpp <35:1 35:1>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<38:24> [b2Settings.cpp <38:24 38:29>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<38:24> [b2Settings.cpp <41:17 41:22>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<38:24> [b2Settings.cpp <42:10 42:15>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<39:1> [b2Settings.cpp <39:1 39:1>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<39:1> [b2Settings.cpp <44:1 44:1>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<40:10> [b2Settings.cpp <40:10 40:13>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<40:10> [b2Settings.cpp <41:11 41:14>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<40:10> [b2Settings.cpp <42:18 42:21>]
|
||||
LOCAL_SYMBOL: b2Settings.cpp<40:10> [b2Settings.cpp <43:9 43:12>]
|
||||
LOCAL_SYMBOL: b2Settings.h<135:21> [b2Settings.h <135:21 135:24>]
|
||||
LOCAL_SYMBOL: b2Settings.h<138:19> [b2Settings.h <138:19 138:21>]
|
||||
LOCAL_SYMBOL: b2Settings.h<141:24> [b2Settings.h <141:24 141:29>]
|
||||
LOCAL_SYMBOL: b2Settings.h<146:1> [b2Settings.h <146:1 146:1>]
|
||||
LOCAL_SYMBOL: b2Settings.h<146:1> [b2Settings.h <150:1 150:1>]
|
||||
COMMENT: comment [b2Settings.cpp <1:1 17:3>]
|
||||
COMMENT: comment [b2Settings.cpp <26:1 26:62>]
|
||||
COMMENT: comment [b2Settings.cpp <37:1 37:53>]
|
||||
COMMENT: comment [b2Settings.h <1:1 17:3>]
|
||||
COMMENT: comment [b2Settings.h <46:1 46:10>]
|
||||
COMMENT: comment [b2Settings.h <47:1 47:75>]
|
||||
COMMENT: comment [b2Settings.h <48:1 48:4>]
|
||||
COMMENT: comment [b2Settings.h <50:1 50:13>]
|
||||
COMMENT: comment [b2Settings.h <52:1 52:71>]
|
||||
COMMENT: comment [b2Settings.h <53:1 53:27>]
|
||||
COMMENT: comment [b2Settings.h <56:1 56:76>]
|
||||
COMMENT: comment [b2Settings.h <57:1 57:70>]
|
||||
COMMENT: comment [b2Settings.h <60:1 60:74>]
|
||||
COMMENT: comment [b2Settings.h <61:1 61:68>]
|
||||
COMMENT: comment [b2Settings.h <62:1 62:23>]
|
||||
COMMENT: comment [b2Settings.h <65:1 65:78>]
|
||||
COMMENT: comment [b2Settings.h <66:1 66:59>]
|
||||
COMMENT: comment [b2Settings.h <67:1 67:40>]
|
||||
COMMENT: comment [b2Settings.h <70:1 70:79>]
|
||||
COMMENT: comment [b2Settings.h <71:1 71:70>]
|
||||
COMMENT: comment [b2Settings.h <74:1 74:78>]
|
||||
COMMENT: comment [b2Settings.h <75:1 75:70>]
|
||||
COMMENT: comment [b2Settings.h <78:1 78:83>]
|
||||
COMMENT: comment [b2Settings.h <79:1 79:91>]
|
||||
COMMENT: comment [b2Settings.h <80:1 80:64>]
|
||||
COMMENT: comment [b2Settings.h <83:1 83:78>]
|
||||
COMMENT: comment [b2Settings.h <87:1 87:12>]
|
||||
COMMENT: comment [b2Settings.h <89:1 89:68>]
|
||||
COMMENT: comment [b2Settings.h <92:1 92:86>]
|
||||
COMMENT: comment [b2Settings.h <93:1 93:64>]
|
||||
COMMENT: comment [b2Settings.h <96:1 96:88>]
|
||||
COMMENT: comment [b2Settings.h <97:1 97:23>]
|
||||
COMMENT: comment [b2Settings.h <100:1 100:89>]
|
||||
COMMENT: comment [b2Settings.h <101:1 101:23>]
|
||||
COMMENT: comment [b2Settings.h <104:1 104:80>]
|
||||
COMMENT: comment [b2Settings.h <105:1 105:70>]
|
||||
COMMENT: comment [b2Settings.h <109:1 109:81>]
|
||||
COMMENT: comment [b2Settings.h <110:1 110:70>]
|
||||
COMMENT: comment [b2Settings.h <114:1 114:88>]
|
||||
COMMENT: comment [b2Settings.h <115:1 115:89>]
|
||||
COMMENT: comment [b2Settings.h <116:1 116:18>]
|
||||
COMMENT: comment [b2Settings.h <121:1 121:9>]
|
||||
COMMENT: comment [b2Settings.h <123:1 123:67>]
|
||||
COMMENT: comment [b2Settings.h <126:1 126:72>]
|
||||
COMMENT: comment [b2Settings.h <129:1 129:73>]
|
||||
COMMENT: comment [b2Settings.h <132:1 132:21>]
|
||||
COMMENT: comment [b2Settings.h <134:1 134:62>]
|
||||
COMMENT: comment [b2Settings.h <137:1 137:71>]
|
||||
COMMENT: comment [b2Settings.h <140:1 140:22>]
|
||||
COMMENT: comment [b2Settings.h <143:1 143:30>]
|
||||
COMMENT: comment [b2Settings.h <144:1 144:57>]
|
||||
COMMENT: comment [b2Settings.h <147:16 147:40>]
|
||||
COMMENT: comment [b2Settings.h <148:16 148:40>]
|
||||
COMMENT: comment [b2Settings.h <149:19 149:33>]
|
||||
COMMENT: comment [b2Settings.h <152:1 152:21>]
|
||||
-2265
File diff suppressed because it is too large
Load Diff
-607
@@ -1,607 +0,0 @@
|
||||
FILE: b2Timer.cpp
|
||||
FILE: b2Timer.h
|
||||
FILE: b2Settings.h
|
||||
FILE: stddef.h non-indexed
|
||||
FILE: corecrt.h non-indexed
|
||||
FILE: vcruntime.h non-indexed
|
||||
FILE: sal.h non-indexed
|
||||
FILE: concurrencysal.h non-indexed
|
||||
FILE: vadefs.h non-indexed
|
||||
FILE: assert.h non-indexed
|
||||
FILE: float.h non-indexed
|
||||
FILE: Windows.h non-indexed
|
||||
FILE: winapifamily.h non-indexed
|
||||
FILE: sdkddkver.h non-indexed
|
||||
FILE: excpt.h non-indexed
|
||||
FILE: stdarg.h non-indexed
|
||||
FILE: windef.h non-indexed
|
||||
FILE: minwindef.h non-indexed
|
||||
FILE: specstrings.h non-indexed
|
||||
FILE: specstrings_strict.h non-indexed
|
||||
FILE: specstrings_undef.h non-indexed
|
||||
FILE: driverspecs.h non-indexed
|
||||
FILE: sdv_driverspecs.h non-indexed
|
||||
FILE: winnt.h non-indexed
|
||||
FILE: ctype.h non-indexed
|
||||
FILE: corecrt_wctype.h non-indexed
|
||||
FILE: kernelspecs.h non-indexed
|
||||
FILE: basetsd.h non-indexed
|
||||
FILE: guiddef.h non-indexed
|
||||
FILE: string.h non-indexed
|
||||
FILE: corecrt_memory.h non-indexed
|
||||
FILE: corecrt_memcpy_s.h non-indexed
|
||||
FILE: errno.h non-indexed
|
||||
FILE: vcruntime_string.h non-indexed
|
||||
FILE: corecrt_wstring.h non-indexed
|
||||
FILE: pshpack4.h non-indexed
|
||||
FILE: poppack.h non-indexed
|
||||
FILE: pshpack2.h non-indexed
|
||||
FILE: pshpack8.h non-indexed
|
||||
FILE: apiset.h non-indexed
|
||||
FILE: ktmtypes.h non-indexed
|
||||
FILE: WinBase.h non-indexed
|
||||
FILE: apisetcconv.h non-indexed
|
||||
FILE: minwinbase.h non-indexed
|
||||
FILE: processenv.h non-indexed
|
||||
FILE: fileapi.h non-indexed
|
||||
FILE: debugapi.h non-indexed
|
||||
FILE: utilapiset.h non-indexed
|
||||
FILE: handleapi.h non-indexed
|
||||
FILE: errhandlingapi.h non-indexed
|
||||
FILE: fibersapi.h non-indexed
|
||||
FILE: namedpipeapi.h non-indexed
|
||||
FILE: profileapi.h non-indexed
|
||||
FILE: heapapi.h non-indexed
|
||||
FILE: ioapiset.h non-indexed
|
||||
FILE: synchapi.h non-indexed
|
||||
FILE: interlockedapi.h non-indexed
|
||||
FILE: processthreadsapi.h non-indexed
|
||||
FILE: sysinfoapi.h non-indexed
|
||||
FILE: memoryapi.h non-indexed
|
||||
FILE: threadpoollegacyapiset.h non-indexed
|
||||
FILE: threadpoolapiset.h non-indexed
|
||||
FILE: bemapiset.h non-indexed
|
||||
FILE: jobapi.h non-indexed
|
||||
FILE: wow64apiset.h non-indexed
|
||||
FILE: libloaderapi.h non-indexed
|
||||
FILE: securitybaseapi.h non-indexed
|
||||
FILE: namespaceapi.h non-indexed
|
||||
FILE: systemtopologyapi.h non-indexed
|
||||
FILE: processtopologyapi.h non-indexed
|
||||
FILE: securityappcontainer.h non-indexed
|
||||
FILE: realtimeapiset.h non-indexed
|
||||
FILE: winerror.h non-indexed
|
||||
FILE: timezoneapi.h non-indexed
|
||||
FILE: wingdi.h non-indexed
|
||||
FILE: pshpack1.h non-indexed
|
||||
FILE: WinUser.h non-indexed
|
||||
FILE: tvout.h non-indexed
|
||||
FILE: WinNls.h non-indexed
|
||||
FILE: datetimeapi.h non-indexed
|
||||
FILE: stringapiset.h non-indexed
|
||||
FILE: wincon.h non-indexed
|
||||
FILE: consoleapi.h non-indexed
|
||||
FILE: winver.h non-indexed
|
||||
FILE: verrsrc.h non-indexed
|
||||
FILE: winreg.h non-indexed
|
||||
FILE: reason.h non-indexed
|
||||
FILE: winnetwk.h non-indexed
|
||||
FILE: wnnc.h non-indexed
|
||||
FILE: stralign.h non-indexed
|
||||
FILE: winsvc.h non-indexed
|
||||
FILE: mcx.h non-indexed
|
||||
FILE: imm.h non-indexed
|
||||
FILE: ime_cmodes.h non-indexed
|
||||
SYMBOL_MACRO: B2_TIMER_H [b2Timer.h <20:9 20:18>]
|
||||
SYMBOL_MACRO: B2_SETTINGS_H [b2Settings.h <20:9 20:21>]
|
||||
SYMBOL_MACRO: b2DEBUG [b2Settings.h <27:10 27:16>]
|
||||
SYMBOL_MACRO: B2_NOT_USED [b2Settings.h <30:9 <30:9 30:19> 30:33>]
|
||||
SYMBOL_MACRO: b2Assert [b2Settings.h <31:9 <31:9 31:16> 31:28>]
|
||||
SYMBOL_MACRO: b2_maxFloat [b2Settings.h <42:9 <42:9 42:19> 42:21>]
|
||||
SYMBOL_MACRO: b2_epsilon [b2Settings.h <43:9 <43:9 43:18> 43:20>]
|
||||
SYMBOL_MACRO: b2_pi [b2Settings.h <44:9 <44:9 44:13> 44:16>]
|
||||
SYMBOL_MACRO: b2_maxManifoldPoints [b2Settings.h <54:9 <54:9 54:28> 54:29>]
|
||||
SYMBOL_MACRO: b2_maxPolygonVertices [b2Settings.h <58:9 <58:9 58:29> 58:30>]
|
||||
SYMBOL_MACRO: b2_aabbExtension [b2Settings.h <63:9 <63:9 63:24> 63:26>]
|
||||
SYMBOL_MACRO: b2_aabbMultiplier [b2Settings.h <68:9 <68:9 68:25> 68:27>]
|
||||
SYMBOL_MACRO: b2_linearSlop [b2Settings.h <72:9 <72:9 72:21> 72:24>]
|
||||
SYMBOL_MACRO: b2_angularSlop [b2Settings.h <76:9 <76:9 76:22> 76:47>]
|
||||
SYMBOL_MACRO: b2_polygonRadius [b2Settings.h <81:9 <81:9 81:24> 81:47>]
|
||||
SYMBOL_MACRO: b2_maxSubSteps [b2Settings.h <84:9 <84:9 84:22> 84:25>]
|
||||
SYMBOL_MACRO: b2_maxTOIContacts [b2Settings.h <90:9 <90:9 90:25> 90:28>]
|
||||
SYMBOL_MACRO: b2_velocityThreshold [b2Settings.h <94:9 <94:9 94:28> 94:30>]
|
||||
SYMBOL_MACRO: b2_maxLinearCorrection [b2Settings.h <98:9 <98:9 98:30> 98:32>]
|
||||
SYMBOL_MACRO: b2_maxAngularCorrection [b2Settings.h <102:9 <102:9 102:31> 102:55>]
|
||||
SYMBOL_MACRO: b2_maxTranslation [b2Settings.h <106:9 <106:9 106:25> 106:28>]
|
||||
SYMBOL_MACRO: b2_maxTranslationSquared [b2Settings.h <107:9 <107:9 107:32> 107:71>]
|
||||
SYMBOL_MACRO: b2_maxRotation [b2Settings.h <111:9 <111:9 111:22> 111:39>]
|
||||
SYMBOL_MACRO: b2_maxRotationSquared [b2Settings.h <112:9 <112:9 112:29> 112:63>]
|
||||
SYMBOL_MACRO: b2_baumgarte [b2Settings.h <117:9 <117:9 117:20> 117:24>]
|
||||
SYMBOL_MACRO: b2_toiBaugarte [b2Settings.h <118:9 <118:9 118:22> 118:26>]
|
||||
SYMBOL_MACRO: b2_timeToSleep [b2Settings.h <124:9 <124:9 124:22> 124:26>]
|
||||
SYMBOL_MACRO: b2_linearSleepTolerance [b2Settings.h <127:9 <127:9 127:31> 127:33>]
|
||||
SYMBOL_MACRO: b2_angularSleepTolerance [b2Settings.h <130:9 <130:9 130:32> 130:55>]
|
||||
SYMBOL_MACRO: WIN32_LEAN_AND_MEAN [b2Timer.cpp <26:9 26:27>]
|
||||
SYMBOL_TYPEDEF: int8 [b2Settings.h <33:21 33:24>]
|
||||
SYMBOL_BUILTIN_TYPE: signed char
|
||||
SYMBOL_TYPEDEF: int16 [b2Settings.h <34:22 34:26>]
|
||||
SYMBOL_BUILTIN_TYPE: short
|
||||
SYMBOL_TYPEDEF: int32 [b2Settings.h <35:20 35:24>]
|
||||
SYMBOL_BUILTIN_TYPE: int
|
||||
SYMBOL_TYPEDEF: uint8 [b2Settings.h <36:23 36:27>]
|
||||
SYMBOL_BUILTIN_TYPE: unsigned char
|
||||
SYMBOL_TYPEDEF: uint16 [b2Settings.h <37:24 37:29>]
|
||||
SYMBOL_BUILTIN_TYPE: unsigned short
|
||||
SYMBOL_TYPEDEF: uint32 [b2Settings.h <38:22 38:27>]
|
||||
SYMBOL_BUILTIN_TYPE: unsigned int
|
||||
SYMBOL_TYPEDEF: float32 [b2Settings.h <39:15 39:21>]
|
||||
SYMBOL_BUILTIN_TYPE: float
|
||||
SYMBOL_TYPEDEF: float64 [b2Settings.h <40:16 40:22>]
|
||||
SYMBOL_BUILTIN_TYPE: double
|
||||
SYMBOL_FUNCTION: void * b2Alloc(int32) [b2Settings.h <135:1 <135:7 135:13> 135:25>]
|
||||
SYMBOL_BUILTIN_TYPE: void
|
||||
SYMBOL_FUNCTION: void b2Free(void *) [b2Settings.h <138:1 <138:6 138:11> 138:22>]
|
||||
SYMBOL_FUNCTION: void b2Log(const char *) [b2Settings.h <141:1 <141:6 141:10> 141:35>]
|
||||
SYMBOL_BUILTIN_TYPE: char
|
||||
SYMBOL_STRUCT: b2Version [b2Settings.h <145:1 <145:8 145:16> 150:1>]
|
||||
SYMBOL_FIELD: public int32 b2Version::major [b2Settings.h <147:8 147:12>]
|
||||
SYMBOL_FIELD: public int32 b2Version::minor [b2Settings.h <148:8 148:12>]
|
||||
SYMBOL_FIELD: public int32 b2Version::revision [b2Settings.h <149:8 149:15>]
|
||||
SYMBOL_GLOBAL_VARIABLE: b2Version b2_version [b2Settings.h <153:18 153:27>]
|
||||
QUALIFIER: b2Timer [b2Timer.cpp <23:9 23:15>]
|
||||
QUALIFIER: b2Timer [b2Timer.cpp <31:1 31:7>]
|
||||
QUALIFIER: b2Timer [b2Timer.cpp <49:6 49:12>]
|
||||
QUALIFIER: b2Timer [b2Timer.cpp <56:9 56:15>]
|
||||
SYMBOL_CLASS: b2Timer [b2Timer.h <26:1 <26:7 26:13> 48:1>]
|
||||
SYMBOL_METHOD: public void b2Timer::b2Timer() [b2Timer.cpp <31:1 <31:10 31:16> 47:1>]
|
||||
SYMBOL_METHOD: public void b2Timer::b2Timer() [b2Timer.h <31:1 <31:2 <31:2 31:8> 31:10> 47:1>]
|
||||
SYMBOL_METHOD: public void b2Timer::Reset() [b2Timer.cpp <49:1 <49:15 49:19> 54:1>]
|
||||
SYMBOL_METHOD: public void b2Timer::Reset() [b2Timer.h <34:2 <34:7 34:11> 34:13>]
|
||||
SYMBOL_METHOD: public float32 b2Timer::GetMilliseconds() const [b2Timer.cpp <56:1 <56:18 56:32> 63:1>]
|
||||
SYMBOL_METHOD: public float32 b2Timer::GetMilliseconds() const [b2Timer.h <37:2 <37:10 37:24> 37:32>]
|
||||
SYMBOL_FIELD: private float64 b2Timer::m_start [b2Timer.h <42:10 42:16>]
|
||||
SYMBOL_FIELD: private static float64 b2Timer::s_invFrequency [b2Timer.cpp <23:18 23:31>]
|
||||
SYMBOL_FIELD: private static float64 b2Timer::s_invFrequency [b2Timer.h <43:17 43:30>]
|
||||
SYMBOL_METHOD: public void b2Timer::b2Timer(const b2Timer &) [b2Timer.h <26:7 <26:7 26:13> 26:13>]
|
||||
SYMBOL_METHOD: public void b2Timer::b2Timer(b2Timer &&) [b2Timer.h <26:7 <26:7 26:13> 26:13>]
|
||||
SYMBOL_FUNCTION: void _LARGE_INTEGER::_LARGE_INTEGER()
|
||||
SYMBOL_FUNCTION: BOOL QueryPerformanceFrequency(LARGE_INTEGER *)
|
||||
SYMBOL_FUNCTION: BOOL QueryPerformanceCounter(LARGE_INTEGER *)
|
||||
REFERENCE_INCLUDE: b2Timer.cpp -> b2Timer.h [b2Timer.cpp <19:10 19:33>]
|
||||
REFERENCE_MACRO_USAGE: b2Timer.h -> B2_TIMER_H [b2Timer.h <19:9 19:18>]
|
||||
REFERENCE_INCLUDE: b2Timer.h -> b2Settings.h [b2Timer.h <22:10 22:36>]
|
||||
REFERENCE_MACRO_USAGE: b2Settings.h -> B2_SETTINGS_H [b2Settings.h <19:9 19:21>]
|
||||
REFERENCE_INCLUDE: b2Settings.h -> stddef.h [b2Settings.h <22:10 22:19>]
|
||||
REFERENCE_INCLUDE: stddef.h -> corecrt.h [stddef.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: corecrt.h -> vcruntime.h [corecrt.h <10:10 10:22>]
|
||||
REFERENCE_INCLUDE: vcruntime.h -> sal.h [vcruntime.h <47:10 47:16>]
|
||||
REFERENCE_INCLUDE: sal.h -> concurrencysal.h [sal.h <2990:10 2990:27>]
|
||||
REFERENCE_INCLUDE: vcruntime.h -> vadefs.h [vcruntime.h <48:10 48:19>]
|
||||
REFERENCE_INCLUDE: b2Settings.h -> assert.h [b2Settings.h <23:10 23:19>]
|
||||
REFERENCE_INCLUDE: assert.h -> corecrt.h [assert.h <12:10 12:20>]
|
||||
REFERENCE_INCLUDE: b2Settings.h -> float.h [b2Settings.h <24:10 24:18>]
|
||||
REFERENCE_INCLUDE: float.h -> corecrt.h [float.h <12:10 12:20>]
|
||||
REFERENCE_MACRO_USAGE: b2Settings.h -> NDEBUG [b2Settings.h <26:14 26:19>]
|
||||
REFERENCE_MACRO_USAGE: b2Timer.h -> _WIN32 [b2Timer.h <41:13 41:18>]
|
||||
REFERENCE_MACRO_USAGE: b2Timer.cpp -> _WIN32 [b2Timer.cpp <21:13 21:18>]
|
||||
REFERENCE_MACRO_USAGE: b2Timer.cpp -> WIN32_LEAN_AND_MEAN [b2Timer.cpp <25:9 25:27>]
|
||||
REFERENCE_INCLUDE: b2Timer.cpp -> Windows.h [b2Timer.cpp <29:10 29:20>]
|
||||
REFERENCE_INCLUDE: Windows.h -> winapifamily.h [Windows.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: Windows.h -> sdkddkver.h [Windows.h <22:10 22:22>]
|
||||
REFERENCE_INCLUDE: Windows.h -> excpt.h [Windows.h <160:10 160:18>]
|
||||
REFERENCE_INCLUDE: excpt.h -> vcruntime.h [excpt.h <12:10 12:22>]
|
||||
REFERENCE_INCLUDE: Windows.h -> stdarg.h [Windows.h <161:10 161:19>]
|
||||
REFERENCE_INCLUDE: stdarg.h -> vcruntime.h [stdarg.h <11:10 11:22>]
|
||||
REFERENCE_INCLUDE: Windows.h -> windef.h [Windows.h <164:10 164:19>]
|
||||
REFERENCE_INCLUDE: windef.h -> winapifamily.h [windef.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: windef.h -> minwindef.h [windef.h <24:10 24:22>]
|
||||
REFERENCE_INCLUDE: minwindef.h -> specstrings.h [minwindef.h <14:10 14:24>]
|
||||
REFERENCE_INCLUDE: specstrings.h -> sal.h [specstrings.h <56:10 56:16>]
|
||||
REFERENCE_INCLUDE: specstrings.h -> specstrings_strict.h [specstrings.h <513:10 513:31>]
|
||||
REFERENCE_INCLUDE: specstrings_strict.h -> specstrings_undef.h [specstrings_strict.h <188:10 188:30>]
|
||||
REFERENCE_INCLUDE: specstrings.h -> driverspecs.h [specstrings.h <534:10 534:24>]
|
||||
REFERENCE_INCLUDE: driverspecs.h -> sdv_driverspecs.h [driverspecs.h <125:10 125:28>]
|
||||
REFERENCE_INCLUDE: driverspecs.h -> concurrencysal.h [driverspecs.h <126:10 126:27>]
|
||||
REFERENCE_INCLUDE: minwindef.h -> winapifamily.h [minwindef.h <16:10 16:25>]
|
||||
REFERENCE_INCLUDE: minwindef.h -> winnt.h [minwindef.h <182:10 182:18>]
|
||||
REFERENCE_INCLUDE: winnt.h -> ctype.h [winnt.h <31:10 31:18>]
|
||||
REFERENCE_INCLUDE: ctype.h -> corecrt.h [ctype.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: ctype.h -> corecrt_wctype.h [ctype.h <12:10 12:27>]
|
||||
REFERENCE_INCLUDE: corecrt_wctype.h -> corecrt.h [corecrt_wctype.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: winnt.h -> winapifamily.h [winnt.h <32:10 32:25>]
|
||||
REFERENCE_INCLUDE: winnt.h -> specstrings.h [winnt.h <82:10 82:24>]
|
||||
REFERENCE_INCLUDE: winnt.h -> kernelspecs.h [winnt.h <83:10 83:24>]
|
||||
REFERENCE_INCLUDE: kernelspecs.h -> driverspecs.h [kernelspecs.h <36:10 36:24>]
|
||||
REFERENCE_INCLUDE: winnt.h -> basetsd.h [winnt.h <171:10 171:20>]
|
||||
REFERENCE_INCLUDE: winnt.h -> guiddef.h [winnt.h <1083:10 1083:20>]
|
||||
REFERENCE_INCLUDE: guiddef.h -> string.h [guiddef.h <146:10 146:19>]
|
||||
REFERENCE_INCLUDE: string.h -> corecrt.h [string.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: string.h -> corecrt_memory.h [string.h <12:10 12:27>]
|
||||
REFERENCE_INCLUDE: corecrt_memory.h -> corecrt.h [corecrt_memory.h <13:10 13:20>]
|
||||
REFERENCE_INCLUDE: corecrt_memory.h -> corecrt_memcpy_s.h [corecrt_memory.h <14:10 14:29>]
|
||||
REFERENCE_INCLUDE: corecrt_memcpy_s.h -> corecrt.h [corecrt_memcpy_s.h <10:10 10:20>]
|
||||
REFERENCE_INCLUDE: corecrt_memcpy_s.h -> errno.h [corecrt_memcpy_s.h <11:10 11:18>]
|
||||
REFERENCE_INCLUDE: errno.h -> corecrt.h [errno.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: corecrt_memcpy_s.h -> vcruntime_string.h [corecrt_memcpy_s.h <12:10 12:29>]
|
||||
REFERENCE_INCLUDE: vcruntime_string.h -> vcruntime.h [vcruntime_string.h <10:10 10:22>]
|
||||
REFERENCE_INCLUDE: corecrt_memory.h -> vcruntime_string.h [corecrt_memory.h <15:10 15:29>]
|
||||
REFERENCE_INCLUDE: string.h -> corecrt_wstring.h [string.h <13:10 13:28>]
|
||||
REFERENCE_INCLUDE: corecrt_wstring.h -> corecrt.h [corecrt_wstring.h <11:10 11:20>]
|
||||
REFERENCE_INCLUDE: corecrt_wstring.h -> vcruntime_string.h [corecrt_wstring.h <12:10 12:29>]
|
||||
REFERENCE_INCLUDE: string.h -> vcruntime_string.h [string.h <14:10 14:29>]
|
||||
REFERENCE_INCLUDE: winnt.h -> excpt.h [winnt.h <1304:10 1304:18>]
|
||||
REFERENCE_INCLUDE: winnt.h -> sdkddkver.h [winnt.h <1466:10 1466:22>]
|
||||
REFERENCE_INCLUDE: winnt.h -> pshpack4.h [winnt.h <5937:10 5937:21>]
|
||||
REFERENCE_INCLUDE: winnt.h -> pshpack4.h [winnt.h <8835:10 8835:21>]
|
||||
REFERENCE_INCLUDE: winnt.h -> pshpack4.h [winnt.h <9168:10 9168:21>]
|
||||
REFERENCE_INCLUDE: winnt.h -> pshpack4.h [winnt.h <14869:10 14869:21>]
|
||||
REFERENCE_INCLUDE: winnt.h -> poppack.h [winnt.h <6037:10 6037:20>]
|
||||
REFERENCE_INCLUDE: winnt.h -> poppack.h [winnt.h <8935:10 8935:20>]
|
||||
REFERENCE_INCLUDE: winnt.h -> poppack.h [winnt.h <9177:10 9177:20>]
|
||||
REFERENCE_INCLUDE: winnt.h -> poppack.h [winnt.h <14999:10 14999:20>]
|
||||
REFERENCE_INCLUDE: winnt.h -> poppack.h [winnt.h <15579:10 15579:20>]
|
||||
REFERENCE_INCLUDE: winnt.h -> poppack.h [winnt.h <16074:10 16074:20>]
|
||||
REFERENCE_INCLUDE: winnt.h -> poppack.h [winnt.h <16183:10 16183:20>]
|
||||
REFERENCE_INCLUDE: winnt.h -> poppack.h [winnt.h <16764:10 16764:20>]
|
||||
REFERENCE_INCLUDE: winnt.h -> pshpack2.h [winnt.h <14877:10 14877:21>]
|
||||
REFERENCE_INCLUDE: winnt.h -> pshpack2.h [winnt.h <15405:10 15405:21>]
|
||||
REFERENCE_INCLUDE: winnt.h -> pshpack2.h [winnt.h <15568:10 15568:21>]
|
||||
REFERENCE_INCLUDE: winnt.h -> pshpack8.h [winnt.h <16171:10 16171:21>]
|
||||
REFERENCE_INCLUDE: winnt.h -> apiset.h [winnt.h <16892:10 16892:19>]
|
||||
REFERENCE_INCLUDE: winnt.h -> string.h [winnt.h <17464:10 17464:19>]
|
||||
REFERENCE_INCLUDE: winnt.h -> ktmtypes.h [winnt.h <19112:10 19112:21>]
|
||||
REFERENCE_INCLUDE: windef.h -> winnt.h [windef.h <31:10 31:18>]
|
||||
REFERENCE_INCLUDE: Windows.h -> WinBase.h [Windows.h <165:10 165:20>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> winapifamily.h [WinBase.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> apisetcconv.h [WinBase.h <30:10 30:24>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> minwinbase.h [WinBase.h <31:10 31:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> processenv.h [WinBase.h <37:10 37:23>]
|
||||
REFERENCE_INCLUDE: processenv.h -> apiset.h [processenv.h <19:10 19:19>]
|
||||
REFERENCE_INCLUDE: processenv.h -> apisetcconv.h [processenv.h <20:10 20:24>]
|
||||
REFERENCE_INCLUDE: processenv.h -> minwindef.h [processenv.h <23:10 23:22>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> fileapi.h [WinBase.h <38:10 38:20>]
|
||||
REFERENCE_INCLUDE: fileapi.h -> apiset.h [fileapi.h <21:10 21:19>]
|
||||
REFERENCE_INCLUDE: fileapi.h -> apisetcconv.h [fileapi.h <22:10 22:24>]
|
||||
REFERENCE_INCLUDE: fileapi.h -> minwindef.h [fileapi.h <23:10 23:22>]
|
||||
REFERENCE_INCLUDE: fileapi.h -> minwinbase.h [fileapi.h <24:10 24:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> debugapi.h [WinBase.h <39:10 39:21>]
|
||||
REFERENCE_INCLUDE: debugapi.h -> apiset.h [debugapi.h <19:10 19:19>]
|
||||
REFERENCE_INCLUDE: debugapi.h -> apisetcconv.h [debugapi.h <20:10 20:24>]
|
||||
REFERENCE_INCLUDE: debugapi.h -> minwindef.h [debugapi.h <21:10 21:22>]
|
||||
REFERENCE_INCLUDE: debugapi.h -> minwinbase.h [debugapi.h <22:10 22:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> utilapiset.h [WinBase.h <40:10 40:23>]
|
||||
REFERENCE_INCLUDE: utilapiset.h -> apiset.h [utilapiset.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: utilapiset.h -> apisetcconv.h [utilapiset.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: utilapiset.h -> minwindef.h [utilapiset.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> handleapi.h [WinBase.h <41:10 41:22>]
|
||||
REFERENCE_INCLUDE: handleapi.h -> apiset.h [handleapi.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: handleapi.h -> apisetcconv.h [handleapi.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: handleapi.h -> minwindef.h [handleapi.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> errhandlingapi.h [WinBase.h <42:10 42:27>]
|
||||
REFERENCE_INCLUDE: errhandlingapi.h -> apiset.h [errhandlingapi.h <19:10 19:19>]
|
||||
REFERENCE_INCLUDE: errhandlingapi.h -> apisetcconv.h [errhandlingapi.h <20:10 20:24>]
|
||||
REFERENCE_INCLUDE: errhandlingapi.h -> minwindef.h [errhandlingapi.h <21:10 21:22>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> fibersapi.h [WinBase.h <43:10 43:22>]
|
||||
REFERENCE_INCLUDE: fibersapi.h -> apiset.h [fibersapi.h <19:10 19:19>]
|
||||
REFERENCE_INCLUDE: fibersapi.h -> apisetcconv.h [fibersapi.h <20:10 20:24>]
|
||||
REFERENCE_INCLUDE: fibersapi.h -> minwindef.h [fibersapi.h <21:10 21:22>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> namedpipeapi.h [WinBase.h <44:10 44:25>]
|
||||
REFERENCE_INCLUDE: namedpipeapi.h -> apiset.h [namedpipeapi.h <19:10 19:19>]
|
||||
REFERENCE_INCLUDE: namedpipeapi.h -> apisetcconv.h [namedpipeapi.h <20:10 20:24>]
|
||||
REFERENCE_INCLUDE: namedpipeapi.h -> minwindef.h [namedpipeapi.h <21:10 21:22>]
|
||||
REFERENCE_INCLUDE: namedpipeapi.h -> minwinbase.h [namedpipeapi.h <22:10 22:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> profileapi.h [WinBase.h <45:10 45:23>]
|
||||
REFERENCE_INCLUDE: profileapi.h -> apiset.h [profileapi.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: profileapi.h -> apisetcconv.h [profileapi.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: profileapi.h -> minwindef.h [profileapi.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> heapapi.h [WinBase.h <46:10 46:20>]
|
||||
REFERENCE_INCLUDE: heapapi.h -> apiset.h [heapapi.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: heapapi.h -> apisetcconv.h [heapapi.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: heapapi.h -> minwindef.h [heapapi.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: heapapi.h -> minwinbase.h [heapapi.h <20:10 20:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> ioapiset.h [WinBase.h <47:10 47:21>]
|
||||
REFERENCE_INCLUDE: ioapiset.h -> apiset.h [ioapiset.h <19:10 19:19>]
|
||||
REFERENCE_INCLUDE: ioapiset.h -> apisetcconv.h [ioapiset.h <20:10 20:24>]
|
||||
REFERENCE_INCLUDE: ioapiset.h -> minwindef.h [ioapiset.h <21:10 21:22>]
|
||||
REFERENCE_INCLUDE: ioapiset.h -> minwinbase.h [ioapiset.h <22:10 22:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> synchapi.h [WinBase.h <48:10 48:21>]
|
||||
REFERENCE_INCLUDE: synchapi.h -> apiset.h [synchapi.h <20:10 20:19>]
|
||||
REFERENCE_INCLUDE: synchapi.h -> apisetcconv.h [synchapi.h <21:10 21:24>]
|
||||
REFERENCE_INCLUDE: synchapi.h -> minwindef.h [synchapi.h <22:10 22:22>]
|
||||
REFERENCE_INCLUDE: synchapi.h -> minwinbase.h [synchapi.h <23:10 23:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> interlockedapi.h [WinBase.h <49:10 49:27>]
|
||||
REFERENCE_INCLUDE: interlockedapi.h -> apiset.h [interlockedapi.h <19:10 19:19>]
|
||||
REFERENCE_INCLUDE: interlockedapi.h -> apisetcconv.h [interlockedapi.h <20:10 20:24>]
|
||||
REFERENCE_INCLUDE: interlockedapi.h -> minwindef.h [interlockedapi.h <21:10 21:22>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> processthreadsapi.h [WinBase.h <50:10 50:30>]
|
||||
REFERENCE_INCLUDE: processthreadsapi.h -> apiset.h [processthreadsapi.h <20:10 20:19>]
|
||||
REFERENCE_INCLUDE: processthreadsapi.h -> apisetcconv.h [processthreadsapi.h <21:10 21:24>]
|
||||
REFERENCE_INCLUDE: processthreadsapi.h -> minwindef.h [processthreadsapi.h <22:10 22:22>]
|
||||
REFERENCE_INCLUDE: processthreadsapi.h -> minwinbase.h [processthreadsapi.h <23:10 23:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> sysinfoapi.h [WinBase.h <51:10 51:23>]
|
||||
REFERENCE_INCLUDE: sysinfoapi.h -> apiset.h [sysinfoapi.h <21:10 21:19>]
|
||||
REFERENCE_INCLUDE: sysinfoapi.h -> apisetcconv.h [sysinfoapi.h <22:10 22:24>]
|
||||
REFERENCE_INCLUDE: sysinfoapi.h -> minwindef.h [sysinfoapi.h <23:10 23:22>]
|
||||
REFERENCE_INCLUDE: sysinfoapi.h -> minwinbase.h [sysinfoapi.h <24:10 24:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> memoryapi.h [WinBase.h <52:10 52:22>]
|
||||
REFERENCE_INCLUDE: memoryapi.h -> apiset.h [memoryapi.h <20:10 20:19>]
|
||||
REFERENCE_INCLUDE: memoryapi.h -> apisetcconv.h [memoryapi.h <21:10 21:24>]
|
||||
REFERENCE_INCLUDE: memoryapi.h -> minwindef.h [memoryapi.h <22:10 22:22>]
|
||||
REFERENCE_INCLUDE: memoryapi.h -> minwinbase.h [memoryapi.h <23:10 23:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> threadpoollegacyapiset.h [WinBase.h <53:10 53:35>]
|
||||
REFERENCE_INCLUDE: threadpoollegacyapiset.h -> apiset.h [threadpoollegacyapiset.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: threadpoollegacyapiset.h -> apisetcconv.h [threadpoollegacyapiset.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: threadpoollegacyapiset.h -> minwindef.h [threadpoollegacyapiset.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: threadpoollegacyapiset.h -> minwinbase.h [threadpoollegacyapiset.h <20:10 20:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> threadpoolapiset.h [WinBase.h <54:10 54:29>]
|
||||
REFERENCE_INCLUDE: threadpoolapiset.h -> apiset.h [threadpoolapiset.h <18:10 18:19>]
|
||||
REFERENCE_INCLUDE: threadpoolapiset.h -> apisetcconv.h [threadpoolapiset.h <19:10 19:24>]
|
||||
REFERENCE_INCLUDE: threadpoolapiset.h -> minwindef.h [threadpoolapiset.h <20:10 20:22>]
|
||||
REFERENCE_INCLUDE: threadpoolapiset.h -> minwinbase.h [threadpoolapiset.h <21:10 21:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> bemapiset.h [WinBase.h <55:10 55:22>]
|
||||
REFERENCE_INCLUDE: bemapiset.h -> apiset.h [bemapiset.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: bemapiset.h -> apisetcconv.h [bemapiset.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: bemapiset.h -> minwindef.h [bemapiset.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: bemapiset.h -> minwinbase.h [bemapiset.h <20:10 20:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> jobapi.h [WinBase.h <56:10 56:19>]
|
||||
REFERENCE_INCLUDE: jobapi.h -> apiset.h [jobapi.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: jobapi.h -> apisetcconv.h [jobapi.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: jobapi.h -> minwindef.h [jobapi.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: jobapi.h -> minwinbase.h [jobapi.h <20:10 20:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> wow64apiset.h [WinBase.h <57:10 57:24>]
|
||||
REFERENCE_INCLUDE: wow64apiset.h -> apiset.h [wow64apiset.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: wow64apiset.h -> apisetcconv.h [wow64apiset.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: wow64apiset.h -> minwindef.h [wow64apiset.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: wow64apiset.h -> minwinbase.h [wow64apiset.h <20:10 20:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> libloaderapi.h [WinBase.h <58:10 58:25>]
|
||||
REFERENCE_INCLUDE: libloaderapi.h -> apiset.h [libloaderapi.h <20:10 20:19>]
|
||||
REFERENCE_INCLUDE: libloaderapi.h -> apisetcconv.h [libloaderapi.h <21:10 21:24>]
|
||||
REFERENCE_INCLUDE: libloaderapi.h -> minwindef.h [libloaderapi.h <22:10 22:22>]
|
||||
REFERENCE_INCLUDE: libloaderapi.h -> minwinbase.h [libloaderapi.h <23:10 23:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> securitybaseapi.h [WinBase.h <59:10 59:28>]
|
||||
REFERENCE_INCLUDE: securitybaseapi.h -> apiset.h [securitybaseapi.h <19:10 19:19>]
|
||||
REFERENCE_INCLUDE: securitybaseapi.h -> apisetcconv.h [securitybaseapi.h <20:10 20:24>]
|
||||
REFERENCE_INCLUDE: securitybaseapi.h -> minwindef.h [securitybaseapi.h <21:10 21:22>]
|
||||
REFERENCE_INCLUDE: securitybaseapi.h -> minwinbase.h [securitybaseapi.h <22:10 22:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> namespaceapi.h [WinBase.h <60:10 60:25>]
|
||||
REFERENCE_INCLUDE: namespaceapi.h -> apiset.h [namespaceapi.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: namespaceapi.h -> apisetcconv.h [namespaceapi.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: namespaceapi.h -> minwindef.h [namespaceapi.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: namespaceapi.h -> minwinbase.h [namespaceapi.h <20:10 20:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> systemtopologyapi.h [WinBase.h <61:10 61:30>]
|
||||
REFERENCE_INCLUDE: systemtopologyapi.h -> apiset.h [systemtopologyapi.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: systemtopologyapi.h -> apisetcconv.h [systemtopologyapi.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: systemtopologyapi.h -> minwindef.h [systemtopologyapi.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: systemtopologyapi.h -> minwinbase.h [systemtopologyapi.h <20:10 20:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> processtopologyapi.h [WinBase.h <62:10 62:31>]
|
||||
REFERENCE_INCLUDE: processtopologyapi.h -> apiset.h [processtopologyapi.h <18:10 18:19>]
|
||||
REFERENCE_INCLUDE: processtopologyapi.h -> apisetcconv.h [processtopologyapi.h <19:10 19:24>]
|
||||
REFERENCE_INCLUDE: processtopologyapi.h -> minwindef.h [processtopologyapi.h <20:10 20:22>]
|
||||
REFERENCE_INCLUDE: processtopologyapi.h -> minwinbase.h [processtopologyapi.h <21:10 21:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> securityappcontainer.h [WinBase.h <63:10 63:33>]
|
||||
REFERENCE_INCLUDE: securityappcontainer.h -> apiset.h [securityappcontainer.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: securityappcontainer.h -> apisetcconv.h [securityappcontainer.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: securityappcontainer.h -> minwindef.h [securityappcontainer.h <21:10 21:22>]
|
||||
REFERENCE_INCLUDE: securityappcontainer.h -> minwinbase.h [securityappcontainer.h <22:10 22:23>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> realtimeapiset.h [WinBase.h <64:10 64:27>]
|
||||
REFERENCE_INCLUDE: realtimeapiset.h -> apiset.h [realtimeapiset.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: realtimeapiset.h -> apisetcconv.h [realtimeapiset.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: realtimeapiset.h -> minwindef.h [realtimeapiset.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> winerror.h [WinBase.h <7358:10 7358:21>]
|
||||
REFERENCE_INCLUDE: winerror.h -> specstrings.h [winerror.h <24:10 24:24>]
|
||||
REFERENCE_INCLUDE: WinBase.h -> timezoneapi.h [WinBase.h <7359:10 7359:24>]
|
||||
REFERENCE_INCLUDE: timezoneapi.h -> apiset.h [timezoneapi.h <18:10 18:19>]
|
||||
REFERENCE_INCLUDE: timezoneapi.h -> apisetcconv.h [timezoneapi.h <19:10 19:24>]
|
||||
REFERENCE_INCLUDE: timezoneapi.h -> minwindef.h [timezoneapi.h <20:10 20:22>]
|
||||
REFERENCE_INCLUDE: timezoneapi.h -> minwinbase.h [timezoneapi.h <21:10 21:23>]
|
||||
REFERENCE_INCLUDE: Windows.h -> wingdi.h [Windows.h <166:10 166:19>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> winapifamily.h [wingdi.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> pshpack1.h [wingdi.h <611:10 611:21>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> poppack.h [wingdi.h <625:10 625:20>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> poppack.h [wingdi.h <944:10 944:20>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> poppack.h [wingdi.h <1060:10 1060:20>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> poppack.h [wingdi.h <1204:10 1204:20>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> poppack.h [wingdi.h <1295:10 1295:20>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> pshpack2.h [wingdi.h <928:10 928:21>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> pshpack2.h [wingdi.h <1039:10 1039:21>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> pshpack4.h [wingdi.h <1138:10 1138:21>]
|
||||
REFERENCE_INCLUDE: wingdi.h -> pshpack4.h [wingdi.h <1221:10 1221:21>]
|
||||
REFERENCE_INCLUDE: Windows.h -> WinUser.h [Windows.h <167:10 167:20>]
|
||||
REFERENCE_INCLUDE: WinUser.h -> winapifamily.h [WinUser.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: WinUser.h -> stdarg.h [WinUser.h <51:10 51:19>]
|
||||
REFERENCE_INCLUDE: WinUser.h -> libloaderapi.h [WinUser.h <54:10 54:25>]
|
||||
REFERENCE_INCLUDE: WinUser.h -> pshpack2.h [WinUser.h <4686:10 4686:21>]
|
||||
REFERENCE_INCLUDE: WinUser.h -> poppack.h [WinUser.h <4770:10 4770:20>]
|
||||
REFERENCE_INCLUDE: WinUser.h -> tvout.h [WinUser.h <12344:10 12344:18>]
|
||||
REFERENCE_INCLUDE: tvout.h -> winapifamily.h [tvout.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: Windows.h -> WinNls.h [Windows.h <169:10 169:19>]
|
||||
REFERENCE_INCLUDE: WinNls.h -> winapifamily.h [WinNls.h <20:10 20:25>]
|
||||
REFERENCE_INCLUDE: WinNls.h -> datetimeapi.h [WinNls.h <30:10 30:24>]
|
||||
REFERENCE_INCLUDE: datetimeapi.h -> apiset.h [datetimeapi.h <19:10 19:19>]
|
||||
REFERENCE_INCLUDE: datetimeapi.h -> apisetcconv.h [datetimeapi.h <20:10 20:24>]
|
||||
REFERENCE_INCLUDE: datetimeapi.h -> minwindef.h [datetimeapi.h <21:10 21:22>]
|
||||
REFERENCE_INCLUDE: datetimeapi.h -> minwinbase.h [datetimeapi.h <22:10 22:23>]
|
||||
REFERENCE_INCLUDE: WinNls.h -> libloaderapi.h [WinNls.h <31:10 31:25>]
|
||||
REFERENCE_INCLUDE: WinNls.h -> stringapiset.h [WinNls.h <1279:10 1279:25>]
|
||||
REFERENCE_INCLUDE: stringapiset.h -> apiset.h [stringapiset.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: stringapiset.h -> apisetcconv.h [stringapiset.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: stringapiset.h -> minwindef.h [stringapiset.h <19:10 19:22>]
|
||||
REFERENCE_INCLUDE: stringapiset.h -> WinNls.h [stringapiset.h <20:10 20:19>]
|
||||
REFERENCE_INCLUDE: Windows.h -> wincon.h [Windows.h <172:10 172:19>]
|
||||
REFERENCE_INCLUDE: wincon.h -> winapifamily.h [wincon.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: wincon.h -> wingdi.h [wincon.h <34:10 34:19>]
|
||||
REFERENCE_INCLUDE: wincon.h -> consoleapi.h [wincon.h <817:10 817:23>]
|
||||
REFERENCE_INCLUDE: consoleapi.h -> apiset.h [consoleapi.h <17:10 17:19>]
|
||||
REFERENCE_INCLUDE: consoleapi.h -> apisetcconv.h [consoleapi.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: consoleapi.h -> Windows.h [consoleapi.h <21:10 21:20>]
|
||||
REFERENCE_INCLUDE: Windows.h -> winver.h [Windows.h <173:10 173:19>]
|
||||
REFERENCE_INCLUDE: winver.h -> winapifamily.h [winver.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: winver.h -> specstrings.h [winver.h <18:10 18:24>]
|
||||
REFERENCE_INCLUDE: winver.h -> verrsrc.h [winver.h <19:10 19:20>]
|
||||
REFERENCE_INCLUDE: verrsrc.h -> winapifamily.h [verrsrc.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: Windows.h -> winreg.h [Windows.h <176:10 176:19>]
|
||||
REFERENCE_INCLUDE: winreg.h -> winapifamily.h [winreg.h <20:10 20:25>]
|
||||
REFERENCE_INCLUDE: winreg.h -> apiset.h [winreg.h <22:10 22:19>]
|
||||
REFERENCE_INCLUDE: winreg.h -> apisetcconv.h [winreg.h <23:10 23:24>]
|
||||
REFERENCE_INCLUDE: winreg.h -> minwindef.h [winreg.h <24:10 24:22>]
|
||||
REFERENCE_INCLUDE: winreg.h -> minwinbase.h [winreg.h <25:10 25:23>]
|
||||
REFERENCE_INCLUDE: winreg.h -> reason.h [winreg.h <1316:10 1316:19>]
|
||||
REFERENCE_INCLUDE: reason.h -> winapifamily.h [reason.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: Windows.h -> winnetwk.h [Windows.h <179:10 179:21>]
|
||||
REFERENCE_INCLUDE: winnetwk.h -> winapifamily.h [winnetwk.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: winnetwk.h -> wnnc.h [winnetwk.h <43:10 43:17>]
|
||||
REFERENCE_INCLUDE: wnnc.h -> winapifamily.h [wnnc.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: Windows.h -> stralign.h [Windows.h <217:10 217:21>]
|
||||
REFERENCE_INCLUDE: stralign.h -> winapifamily.h [stralign.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: Windows.h -> winsvc.h [Windows.h <230:10 230:19>]
|
||||
REFERENCE_INCLUDE: winsvc.h -> winapifamily.h [winsvc.h <21:10 21:25>]
|
||||
REFERENCE_INCLUDE: Windows.h -> mcx.h [Windows.h <235:10 235:16>]
|
||||
REFERENCE_INCLUDE: Windows.h -> imm.h [Windows.h <239:10 239:16>]
|
||||
REFERENCE_INCLUDE: imm.h -> winapifamily.h [imm.h <1:10 1:25>]
|
||||
REFERENCE_INCLUDE: imm.h -> ime_cmodes.h [imm.h <638:10 638:23>]
|
||||
REFERENCE_TYPE_USAGE: int8 -> signed char [b2Settings.h <33:9 33:14>]
|
||||
REFERENCE_TYPE_USAGE: int16 -> short [b2Settings.h <34:9 34:14>]
|
||||
REFERENCE_TYPE_USAGE: int32 -> int [b2Settings.h <35:9 35:14>]
|
||||
REFERENCE_TYPE_USAGE: uint8 -> unsigned char [b2Settings.h <36:9 36:16>]
|
||||
REFERENCE_TYPE_USAGE: uint16 -> unsigned short [b2Settings.h <37:9 37:16>]
|
||||
REFERENCE_TYPE_USAGE: uint32 -> unsigned int [b2Settings.h <38:9 38:16>]
|
||||
REFERENCE_TYPE_USAGE: float32 -> float [b2Settings.h <39:9 39:13>]
|
||||
REFERENCE_TYPE_USAGE: float64 -> double [b2Settings.h <40:9 40:14>]
|
||||
REFERENCE_TYPE_USAGE: void * b2Alloc(int32) -> void [b2Settings.h <135:1 135:4>]
|
||||
REFERENCE_TYPE_USAGE: void * b2Alloc(int32) -> int32 [b2Settings.h <135:15 135:19>]
|
||||
REFERENCE_TYPE_USAGE: void b2Free(void *) -> void [b2Settings.h <138:1 138:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2Free(void *) -> void [b2Settings.h <138:13 138:16>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> void [b2Settings.h <141:1 141:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2Log(const char *) -> char [b2Settings.h <141:18 141:21>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2Version::major -> int32 [b2Settings.h <147:2 147:6>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2Version::minor -> int32 [b2Settings.h <148:2 148:6>]
|
||||
REFERENCE_TYPE_USAGE: int32 b2Version::revision -> int32 [b2Settings.h <149:2 149:6>]
|
||||
REFERENCE_TYPE_USAGE: b2Version b2_version -> b2Version [b2Settings.h <153:8 153:16>]
|
||||
REFERENCE_TYPE_USAGE: void b2Timer::Reset() -> void [b2Timer.cpp <49:1 49:4>]
|
||||
REFERENCE_TYPE_USAGE: void b2Timer::Reset() -> void [b2Timer.h <34:2 34:5>]
|
||||
REFERENCE_TYPE_USAGE: float32 b2Timer::GetMilliseconds() const -> float32 [b2Timer.cpp <56:1 56:7>]
|
||||
REFERENCE_TYPE_USAGE: float32 b2Timer::GetMilliseconds() const -> float32 [b2Timer.cpp <61:2 61:8>]
|
||||
REFERENCE_TYPE_USAGE: float32 b2Timer::GetMilliseconds() const -> float32 [b2Timer.cpp <61:15 61:21>]
|
||||
REFERENCE_TYPE_USAGE: float32 b2Timer::GetMilliseconds() const -> float32 [b2Timer.h <37:2 37:8>]
|
||||
REFERENCE_TYPE_USAGE: float64 b2Timer::m_start -> float64 [b2Timer.h <42:2 42:8>]
|
||||
REFERENCE_TYPE_USAGE: static float64 b2Timer::s_invFrequency -> float64 [b2Timer.cpp <23:1 23:7>]
|
||||
REFERENCE_TYPE_USAGE: static float64 b2Timer::s_invFrequency -> float64 [b2Timer.h <43:9 43:15>]
|
||||
REFERENCE_TYPE_USAGE: void b2Timer::b2Timer() -> LARGE_INTEGER [b2Timer.cpp <33:2 33:14>]
|
||||
REFERENCE_CALL: void b2Timer::b2Timer() -> void _LARGE_INTEGER::_LARGE_INTEGER() [b2Timer.cpp <33:16 33:27>]
|
||||
REFERENCE_USAGE: void b2Timer::b2Timer() -> static float64 b2Timer::s_invFrequency [b2Timer.cpp <35:6 35:19>]
|
||||
REFERENCE_USAGE: void b2Timer::b2Timer() -> static float64 b2Timer::s_invFrequency [b2Timer.cpp <38:3 38:16>]
|
||||
REFERENCE_USAGE: void b2Timer::b2Timer() -> static float64 b2Timer::s_invFrequency [b2Timer.cpp <39:7 39:20>]
|
||||
REFERENCE_USAGE: void b2Timer::b2Timer() -> static float64 b2Timer::s_invFrequency [b2Timer.cpp <41:4 41:17>]
|
||||
REFERENCE_USAGE: void b2Timer::b2Timer() -> static float64 b2Timer::s_invFrequency [b2Timer.cpp <41:31 41:44>]
|
||||
REFERENCE_CALL: void b2Timer::b2Timer() -> BOOL QueryPerformanceFrequency(LARGE_INTEGER *) [b2Timer.cpp <37:3 37:27>]
|
||||
REFERENCE_TYPE_USAGE: void b2Timer::b2Timer() -> float64 [b2Timer.cpp <38:20 38:26>]
|
||||
REFERENCE_TYPE_USAGE: void b2Timer::b2Timer() -> float64 [b2Timer.cpp <46:12 46:18>]
|
||||
REFERENCE_USAGE: void b2Timer::b2Timer() -> LONGLONG _LARGE_INTEGER::QuadPart [b2Timer.cpp <38:41 38:48>]
|
||||
REFERENCE_USAGE: void b2Timer::b2Timer() -> LONGLONG _LARGE_INTEGER::QuadPart [b2Timer.cpp <46:33 46:40>]
|
||||
REFERENCE_CALL: void b2Timer::b2Timer() -> BOOL QueryPerformanceCounter(LARGE_INTEGER *) [b2Timer.cpp <45:2 45:24>]
|
||||
REFERENCE_USAGE: void b2Timer::b2Timer() -> float64 b2Timer::m_start [b2Timer.cpp <46:2 46:8>]
|
||||
REFERENCE_TYPE_USAGE: void b2Timer::Reset() -> LARGE_INTEGER [b2Timer.cpp <51:2 51:14>]
|
||||
REFERENCE_CALL: void b2Timer::Reset() -> void _LARGE_INTEGER::_LARGE_INTEGER() [b2Timer.cpp <51:16 51:27>]
|
||||
REFERENCE_CALL: void b2Timer::Reset() -> BOOL QueryPerformanceCounter(LARGE_INTEGER *) [b2Timer.cpp <52:2 52:24>]
|
||||
REFERENCE_USAGE: void b2Timer::Reset() -> float64 b2Timer::m_start [b2Timer.cpp <53:2 53:8>]
|
||||
REFERENCE_TYPE_USAGE: void b2Timer::Reset() -> float64 [b2Timer.cpp <53:12 53:18>]
|
||||
REFERENCE_USAGE: void b2Timer::Reset() -> LONGLONG _LARGE_INTEGER::QuadPart [b2Timer.cpp <53:33 53:40>]
|
||||
REFERENCE_TYPE_USAGE: float32 b2Timer::GetMilliseconds() const -> LARGE_INTEGER [b2Timer.cpp <58:2 58:14>]
|
||||
REFERENCE_CALL: float32 b2Timer::GetMilliseconds() const -> void _LARGE_INTEGER::_LARGE_INTEGER() [b2Timer.cpp <58:16 58:27>]
|
||||
REFERENCE_CALL: float32 b2Timer::GetMilliseconds() const -> BOOL QueryPerformanceCounter(LARGE_INTEGER *) [b2Timer.cpp <59:2 59:24>]
|
||||
REFERENCE_TYPE_USAGE: float32 b2Timer::GetMilliseconds() const -> float64 [b2Timer.cpp <60:2 60:8>]
|
||||
REFERENCE_TYPE_USAGE: float32 b2Timer::GetMilliseconds() const -> float64 [b2Timer.cpp <60:18 60:24>]
|
||||
REFERENCE_USAGE: float32 b2Timer::GetMilliseconds() const -> LONGLONG _LARGE_INTEGER::QuadPart [b2Timer.cpp <60:39 60:46>]
|
||||
REFERENCE_USAGE: float32 b2Timer::GetMilliseconds() const -> static float64 b2Timer::s_invFrequency [b2Timer.cpp <61:23 61:36>]
|
||||
REFERENCE_USAGE: float32 b2Timer::GetMilliseconds() const -> float64 b2Timer::m_start [b2Timer.cpp <61:49 61:55>]
|
||||
LOCAL_SYMBOL: b2Settings.h<135:21> [b2Settings.h <135:21 135:24>]
|
||||
LOCAL_SYMBOL: b2Settings.h<138:19> [b2Settings.h <138:19 138:21>]
|
||||
LOCAL_SYMBOL: b2Settings.h<141:24> [b2Settings.h <141:24 141:29>]
|
||||
LOCAL_SYMBOL: b2Settings.h<146:1> [b2Settings.h <146:1 146:1>]
|
||||
LOCAL_SYMBOL: b2Settings.h<146:1> [b2Settings.h <150:1 150:1>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<32:1> [b2Timer.cpp <32:1 32:1>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<32:1> [b2Timer.cpp <47:1 47:1>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<33:16> [b2Timer.cpp <33:16 33:27>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<33:16> [b2Timer.cpp <37:30 37:41>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<33:16> [b2Timer.cpp <38:28 38:39>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<33:16> [b2Timer.cpp <45:27 45:38>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<33:16> [b2Timer.cpp <46:20 46:31>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<36:2> [b2Timer.cpp <36:2 36:2>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<36:2> [b2Timer.cpp <43:2 43:2>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<40:3> [b2Timer.cpp <40:3 40:3>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<40:3> [b2Timer.cpp <42:3 42:3>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<50:1> [b2Timer.cpp <50:1 50:1>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<50:1> [b2Timer.cpp <54:1 54:1>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<51:16> [b2Timer.cpp <51:16 51:27>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<51:16> [b2Timer.cpp <52:27 52:38>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<51:16> [b2Timer.cpp <53:20 53:31>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<57:1> [b2Timer.cpp <57:1 57:1>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<57:1> [b2Timer.cpp <63:1 63:1>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<58:16> [b2Timer.cpp <58:16 58:27>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<58:16> [b2Timer.cpp <59:27 59:38>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<58:16> [b2Timer.cpp <60:26 60:37>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<60:10> [b2Timer.cpp <60:10 60:14>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<60:10> [b2Timer.cpp <61:41 61:45>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<61:10> [b2Timer.cpp <61:10 61:11>]
|
||||
LOCAL_SYMBOL: b2Timer.cpp<61:10> [b2Timer.cpp <62:9 62:10>]
|
||||
LOCAL_SYMBOL: b2Timer.h<27:1> [b2Timer.h <27:1 27:1>]
|
||||
LOCAL_SYMBOL: b2Timer.h<27:1> [b2Timer.h <48:1 48:1>]
|
||||
COMMENT: comment [b2Timer.cpp <1:1 17:3>]
|
||||
COMMENT: comment [b2Timer.h <1:1 17:3>]
|
||||
COMMENT: comment [b2Timer.h <24:1 24:65>]
|
||||
COMMENT: comment [b2Timer.h <25:1 25:32>]
|
||||
COMMENT: comment [b2Timer.h <30:2 30:17>]
|
||||
COMMENT: comment [b2Timer.h <33:2 33:22>]
|
||||
COMMENT: comment [b2Timer.h <36:2 36:56>]
|
||||
COMMENT: comment [b2Settings.h <1:1 17:3>]
|
||||
COMMENT: comment [b2Settings.h <46:1 46:10>]
|
||||
COMMENT: comment [b2Settings.h <47:1 47:75>]
|
||||
COMMENT: comment [b2Settings.h <48:1 48:4>]
|
||||
COMMENT: comment [b2Settings.h <50:1 50:13>]
|
||||
COMMENT: comment [b2Settings.h <52:1 52:71>]
|
||||
COMMENT: comment [b2Settings.h <53:1 53:27>]
|
||||
COMMENT: comment [b2Settings.h <56:1 56:76>]
|
||||
COMMENT: comment [b2Settings.h <57:1 57:70>]
|
||||
COMMENT: comment [b2Settings.h <60:1 60:74>]
|
||||
COMMENT: comment [b2Settings.h <61:1 61:68>]
|
||||
COMMENT: comment [b2Settings.h <62:1 62:23>]
|
||||
COMMENT: comment [b2Settings.h <65:1 65:78>]
|
||||
COMMENT: comment [b2Settings.h <66:1 66:59>]
|
||||
COMMENT: comment [b2Settings.h <67:1 67:40>]
|
||||
COMMENT: comment [b2Settings.h <70:1 70:79>]
|
||||
COMMENT: comment [b2Settings.h <71:1 71:70>]
|
||||
COMMENT: comment [b2Settings.h <74:1 74:78>]
|
||||
COMMENT: comment [b2Settings.h <75:1 75:70>]
|
||||
COMMENT: comment [b2Settings.h <78:1 78:83>]
|
||||
COMMENT: comment [b2Settings.h <79:1 79:91>]
|
||||
COMMENT: comment [b2Settings.h <80:1 80:64>]
|
||||
COMMENT: comment [b2Settings.h <83:1 83:78>]
|
||||
COMMENT: comment [b2Settings.h <87:1 87:12>]
|
||||
COMMENT: comment [b2Settings.h <89:1 89:68>]
|
||||
COMMENT: comment [b2Settings.h <92:1 92:86>]
|
||||
COMMENT: comment [b2Settings.h <93:1 93:64>]
|
||||
COMMENT: comment [b2Settings.h <96:1 96:88>]
|
||||
COMMENT: comment [b2Settings.h <97:1 97:23>]
|
||||
COMMENT: comment [b2Settings.h <100:1 100:89>]
|
||||
COMMENT: comment [b2Settings.h <101:1 101:23>]
|
||||
COMMENT: comment [b2Settings.h <104:1 104:80>]
|
||||
COMMENT: comment [b2Settings.h <105:1 105:70>]
|
||||
COMMENT: comment [b2Settings.h <109:1 109:81>]
|
||||
COMMENT: comment [b2Settings.h <110:1 110:70>]
|
||||
COMMENT: comment [b2Settings.h <114:1 114:88>]
|
||||
COMMENT: comment [b2Settings.h <115:1 115:89>]
|
||||
COMMENT: comment [b2Settings.h <116:1 116:18>]
|
||||
COMMENT: comment [b2Settings.h <121:1 121:9>]
|
||||
COMMENT: comment [b2Settings.h <123:1 123:67>]
|
||||
COMMENT: comment [b2Settings.h <126:1 126:72>]
|
||||
COMMENT: comment [b2Settings.h <129:1 129:73>]
|
||||
COMMENT: comment [b2Settings.h <132:1 132:21>]
|
||||
COMMENT: comment [b2Settings.h <134:1 134:62>]
|
||||
COMMENT: comment [b2Settings.h <137:1 137:71>]
|
||||
COMMENT: comment [b2Settings.h <140:1 140:22>]
|
||||
COMMENT: comment [b2Settings.h <143:1 143:30>]
|
||||
COMMENT: comment [b2Settings.h <144:1 144:57>]
|
||||
COMMENT: comment [b2Settings.h <147:16 147:40>]
|
||||
COMMENT: comment [b2Settings.h <148:16 148:40>]
|
||||
COMMENT: comment [b2Settings.h <149:19 149:33>]
|
||||
COMMENT: comment [b2Settings.h <152:1 152:21>]
|
||||
-5591
File diff suppressed because it is too large
Load Diff
-5591
File diff suppressed because it is too large
Load Diff
-5757
File diff suppressed because it is too large
Load Diff
-8243
File diff suppressed because it is too large
Load Diff
-9429
File diff suppressed because it is too large
Load Diff
-5308
File diff suppressed because it is too large
Load Diff
-5308
File diff suppressed because it is too large
Load Diff
-5308
File diff suppressed because it is too large
Load Diff
-5757
File diff suppressed because it is too large
Load Diff
-5426
File diff suppressed because it is too large
Load Diff
-5299
File diff suppressed because it is too large
Load Diff
-6532
File diff suppressed because it is too large
Load Diff
-8916
File diff suppressed because it is too large
Load Diff
-5443
File diff suppressed because it is too large
Load Diff
-5180
File diff suppressed because it is too large
Load Diff
-6510
File diff suppressed because it is too large
Load Diff
-5592
File diff suppressed because it is too large
Load Diff
-6110
File diff suppressed because it is too large
Load Diff
-5286
File diff suppressed because it is too large
Load Diff
-5735
File diff suppressed because it is too large
Load Diff
-5956
File diff suppressed because it is too large
Load Diff
-8295
File diff suppressed because it is too large
Load Diff
-7038
File diff suppressed because it is too large
Load Diff
-8037
File diff suppressed because it is too large
Load Diff
-8653
File diff suppressed because it is too large
Load Diff
-11511
File diff suppressed because it is too large
Load Diff
-4843
File diff suppressed because it is too large
Load Diff
-2960
File diff suppressed because it is too large
Load Diff
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#ifndef BOX2D_H
|
||||
#define BOX2D_H
|
||||
|
||||
/**
|
||||
\mainpage Box2D API Documentation
|
||||
|
||||
\section intro_sec Getting Started
|
||||
|
||||
For documentation please see http://box2d.org/documentation.html
|
||||
|
||||
For discussion please visit http://box2d.org/forum
|
||||
*/
|
||||
|
||||
// These include files constitute the main Box2D API
|
||||
|
||||
#include "Box2D/Common/b2Settings.h"
|
||||
#include "Box2D/Common/b2Draw.h"
|
||||
#include "Box2D/Common/b2Timer.h"
|
||||
|
||||
#include "Box2D/Collision/Shapes/b2CircleShape.h"
|
||||
#include "Box2D/Collision/Shapes/b2EdgeShape.h"
|
||||
#include "Box2D/Collision/Shapes/b2ChainShape.h"
|
||||
#include "Box2D/Collision/Shapes/b2PolygonShape.h"
|
||||
|
||||
#include "Box2D/Collision/b2BroadPhase.h"
|
||||
#include "Box2D/Collision/b2Distance.h"
|
||||
#include "Box2D/Collision/b2DynamicTree.h"
|
||||
#include "Box2D/Collision/b2TimeOfImpact.h"
|
||||
|
||||
#include "Box2D/Dynamics/b2Body.h"
|
||||
#include "Box2D/Dynamics/b2Fixture.h"
|
||||
#include "Box2D/Dynamics/b2WorldCallbacks.h"
|
||||
#include "Box2D/Dynamics/b2TimeStep.h"
|
||||
#include "Box2D/Dynamics/b2World.h"
|
||||
|
||||
#include "Box2D/Dynamics/Contacts/b2Contact.h"
|
||||
|
||||
#include "Box2D/Dynamics/Joints/b2DistanceJoint.h"
|
||||
#include "Box2D/Dynamics/Joints/b2FrictionJoint.h"
|
||||
#include "Box2D/Dynamics/Joints/b2GearJoint.h"
|
||||
#include "Box2D/Dynamics/Joints/b2MotorJoint.h"
|
||||
#include "Box2D/Dynamics/Joints/b2MouseJoint.h"
|
||||
#include "Box2D/Dynamics/Joints/b2PrismaticJoint.h"
|
||||
#include "Box2D/Dynamics/Joints/b2PulleyJoint.h"
|
||||
#include "Box2D/Dynamics/Joints/b2RevoluteJoint.h"
|
||||
#include "Box2D/Dynamics/Joints/b2RopeJoint.h"
|
||||
#include "Box2D/Dynamics/Joints/b2WeldJoint.h"
|
||||
#include "Box2D/Dynamics/Joints/b2WheelJoint.h"
|
||||
|
||||
#endif
|
||||
-198
@@ -1,198 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "Box2D/Collision/Shapes/b2ChainShape.h"
|
||||
#include "Box2D/Collision/Shapes/b2EdgeShape.h"
|
||||
#include <new>
|
||||
#include <string.h>
|
||||
|
||||
b2ChainShape::~b2ChainShape()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
|
||||
void b2ChainShape::Clear()
|
||||
{
|
||||
b2Free(m_vertices);
|
||||
m_vertices = nullptr;
|
||||
m_count = 0;
|
||||
}
|
||||
|
||||
void b2ChainShape::CreateLoop(const b2Vec2* vertices, int32 count)
|
||||
{
|
||||
b2Assert(m_vertices == nullptr && m_count == 0);
|
||||
b2Assert(count >= 3);
|
||||
if (count < 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (int32 i = 1; i < count; ++i)
|
||||
{
|
||||
b2Vec2 v1 = vertices[i-1];
|
||||
b2Vec2 v2 = vertices[i];
|
||||
// If the code crashes here, it means your vertices are too close together.
|
||||
b2Assert(b2DistanceSquared(v1, v2) > b2_linearSlop * b2_linearSlop);
|
||||
}
|
||||
|
||||
m_count = count + 1;
|
||||
m_vertices = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2));
|
||||
memcpy(m_vertices, vertices, count * sizeof(b2Vec2));
|
||||
m_vertices[count] = m_vertices[0];
|
||||
m_prevVertex = m_vertices[m_count - 2];
|
||||
m_nextVertex = m_vertices[1];
|
||||
m_hasPrevVertex = true;
|
||||
m_hasNextVertex = true;
|
||||
}
|
||||
|
||||
void b2ChainShape::CreateChain(const b2Vec2* vertices, int32 count)
|
||||
{
|
||||
b2Assert(m_vertices == nullptr && m_count == 0);
|
||||
b2Assert(count >= 2);
|
||||
for (int32 i = 1; i < count; ++i)
|
||||
{
|
||||
// If the code crashes here, it means your vertices are too close together.
|
||||
b2Assert(b2DistanceSquared(vertices[i-1], vertices[i]) > b2_linearSlop * b2_linearSlop);
|
||||
}
|
||||
|
||||
m_count = count;
|
||||
m_vertices = (b2Vec2*)b2Alloc(count * sizeof(b2Vec2));
|
||||
memcpy(m_vertices, vertices, m_count * sizeof(b2Vec2));
|
||||
|
||||
m_hasPrevVertex = false;
|
||||
m_hasNextVertex = false;
|
||||
|
||||
m_prevVertex.SetZero();
|
||||
m_nextVertex.SetZero();
|
||||
}
|
||||
|
||||
void b2ChainShape::SetPrevVertex(const b2Vec2& prevVertex)
|
||||
{
|
||||
m_prevVertex = prevVertex;
|
||||
m_hasPrevVertex = true;
|
||||
}
|
||||
|
||||
void b2ChainShape::SetNextVertex(const b2Vec2& nextVertex)
|
||||
{
|
||||
m_nextVertex = nextVertex;
|
||||
m_hasNextVertex = true;
|
||||
}
|
||||
|
||||
b2Shape* b2ChainShape::Clone(b2BlockAllocator* allocator) const
|
||||
{
|
||||
void* mem = allocator->Allocate(sizeof(b2ChainShape));
|
||||
b2ChainShape* clone = new (mem) b2ChainShape;
|
||||
clone->CreateChain(m_vertices, m_count);
|
||||
clone->m_prevVertex = m_prevVertex;
|
||||
clone->m_nextVertex = m_nextVertex;
|
||||
clone->m_hasPrevVertex = m_hasPrevVertex;
|
||||
clone->m_hasNextVertex = m_hasNextVertex;
|
||||
return clone;
|
||||
}
|
||||
|
||||
int32 b2ChainShape::GetChildCount() const
|
||||
{
|
||||
// edge count = vertex count - 1
|
||||
return m_count - 1;
|
||||
}
|
||||
|
||||
void b2ChainShape::GetChildEdge(b2EdgeShape* edge, int32 index) const
|
||||
{
|
||||
b2Assert(0 <= index && index < m_count - 1);
|
||||
edge->m_type = b2Shape::e_edge;
|
||||
edge->m_radius = m_radius;
|
||||
|
||||
edge->m_vertex1 = m_vertices[index + 0];
|
||||
edge->m_vertex2 = m_vertices[index + 1];
|
||||
|
||||
if (index > 0)
|
||||
{
|
||||
edge->m_vertex0 = m_vertices[index - 1];
|
||||
edge->m_hasVertex0 = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
edge->m_vertex0 = m_prevVertex;
|
||||
edge->m_hasVertex0 = m_hasPrevVertex;
|
||||
}
|
||||
|
||||
if (index < m_count - 2)
|
||||
{
|
||||
edge->m_vertex3 = m_vertices[index + 2];
|
||||
edge->m_hasVertex3 = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
edge->m_vertex3 = m_nextVertex;
|
||||
edge->m_hasVertex3 = m_hasNextVertex;
|
||||
}
|
||||
}
|
||||
|
||||
bool b2ChainShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const
|
||||
{
|
||||
B2_NOT_USED(xf);
|
||||
B2_NOT_USED(p);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool b2ChainShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
|
||||
const b2Transform& xf, int32 childIndex) const
|
||||
{
|
||||
b2Assert(childIndex < m_count);
|
||||
|
||||
b2EdgeShape edgeShape;
|
||||
|
||||
int32 i1 = childIndex;
|
||||
int32 i2 = childIndex + 1;
|
||||
if (i2 == m_count)
|
||||
{
|
||||
i2 = 0;
|
||||
}
|
||||
|
||||
edgeShape.m_vertex1 = m_vertices[i1];
|
||||
edgeShape.m_vertex2 = m_vertices[i2];
|
||||
|
||||
return edgeShape.RayCast(output, input, xf, 0);
|
||||
}
|
||||
|
||||
void b2ChainShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const
|
||||
{
|
||||
b2Assert(childIndex < m_count);
|
||||
|
||||
int32 i1 = childIndex;
|
||||
int32 i2 = childIndex + 1;
|
||||
if (i2 == m_count)
|
||||
{
|
||||
i2 = 0;
|
||||
}
|
||||
|
||||
b2Vec2 v1 = b2Mul(xf, m_vertices[i1]);
|
||||
b2Vec2 v2 = b2Mul(xf, m_vertices[i2]);
|
||||
|
||||
aabb->lowerBound = b2Min(v1, v2);
|
||||
aabb->upperBound = b2Max(v1, v2);
|
||||
}
|
||||
|
||||
void b2ChainShape::ComputeMass(b2MassData* massData, float32 density) const
|
||||
{
|
||||
B2_NOT_USED(density);
|
||||
|
||||
massData->mass = 0.0f;
|
||||
massData->center.SetZero();
|
||||
massData->I = 0.0f;
|
||||
}
|
||||
-105
@@ -1,105 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#ifndef B2_CHAIN_SHAPE_H
|
||||
#define B2_CHAIN_SHAPE_H
|
||||
|
||||
#include "Box2D/Collision/Shapes/b2Shape.h"
|
||||
|
||||
class b2EdgeShape;
|
||||
|
||||
/// A chain shape is a free form sequence of line segments.
|
||||
/// The chain has two-sided collision, so you can use inside and outside collision.
|
||||
/// Therefore, you may use any winding order.
|
||||
/// Since there may be many vertices, they are allocated using b2Alloc.
|
||||
/// Connectivity information is used to create smooth collisions.
|
||||
/// WARNING: The chain will not collide properly if there are self-intersections.
|
||||
class b2ChainShape : public b2Shape
|
||||
{
|
||||
public:
|
||||
b2ChainShape();
|
||||
|
||||
/// The destructor frees the vertices using b2Free.
|
||||
~b2ChainShape();
|
||||
|
||||
/// Clear all data.
|
||||
void Clear();
|
||||
|
||||
/// Create a loop. This automatically adjusts connectivity.
|
||||
/// @param vertices an array of vertices, these are copied
|
||||
/// @param count the vertex count
|
||||
void CreateLoop(const b2Vec2* vertices, int32 count);
|
||||
|
||||
/// Create a chain with isolated end vertices.
|
||||
/// @param vertices an array of vertices, these are copied
|
||||
/// @param count the vertex count
|
||||
void CreateChain(const b2Vec2* vertices, int32 count);
|
||||
|
||||
/// Establish connectivity to a vertex that precedes the first vertex.
|
||||
/// Don't call this for loops.
|
||||
void SetPrevVertex(const b2Vec2& prevVertex);
|
||||
|
||||
/// Establish connectivity to a vertex that follows the last vertex.
|
||||
/// Don't call this for loops.
|
||||
void SetNextVertex(const b2Vec2& nextVertex);
|
||||
|
||||
/// Implement b2Shape. Vertices are cloned using b2Alloc.
|
||||
b2Shape* Clone(b2BlockAllocator* allocator) const override;
|
||||
|
||||
/// @see b2Shape::GetChildCount
|
||||
int32 GetChildCount() const override;
|
||||
|
||||
/// Get a child edge.
|
||||
void GetChildEdge(b2EdgeShape* edge, int32 index) const;
|
||||
|
||||
/// This always return false.
|
||||
/// @see b2Shape::TestPoint
|
||||
bool TestPoint(const b2Transform& transform, const b2Vec2& p) const override;
|
||||
|
||||
/// Implement b2Shape.
|
||||
bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
|
||||
const b2Transform& transform, int32 childIndex) const override;
|
||||
|
||||
/// @see b2Shape::ComputeAABB
|
||||
void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const override;
|
||||
|
||||
/// Chains have zero mass.
|
||||
/// @see b2Shape::ComputeMass
|
||||
void ComputeMass(b2MassData* massData, float32 density) const override;
|
||||
|
||||
/// The vertices. Owned by this class.
|
||||
b2Vec2* m_vertices;
|
||||
|
||||
/// The vertex count.
|
||||
int32 m_count;
|
||||
|
||||
b2Vec2 m_prevVertex, m_nextVertex;
|
||||
bool m_hasPrevVertex, m_hasNextVertex;
|
||||
};
|
||||
|
||||
inline b2ChainShape::b2ChainShape()
|
||||
{
|
||||
m_type = e_chain;
|
||||
m_radius = b2_polygonRadius;
|
||||
m_vertices = nullptr;
|
||||
m_count = 0;
|
||||
m_hasPrevVertex = false;
|
||||
m_hasNextVertex = false;
|
||||
}
|
||||
|
||||
#endif
|
||||
-99
@@ -1,99 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "Box2D/Collision/Shapes/b2CircleShape.h"
|
||||
#include <new>
|
||||
|
||||
b2Shape* b2CircleShape::Clone(b2BlockAllocator* allocator) const
|
||||
{
|
||||
void* mem = allocator->Allocate(sizeof(b2CircleShape));
|
||||
b2CircleShape* clone = new (mem) b2CircleShape;
|
||||
*clone = *this;
|
||||
return clone;
|
||||
}
|
||||
|
||||
int32 b2CircleShape::GetChildCount() const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool b2CircleShape::TestPoint(const b2Transform& transform, const b2Vec2& p) const
|
||||
{
|
||||
b2Vec2 center = transform.p + b2Mul(transform.q, m_p);
|
||||
b2Vec2 d = p - center;
|
||||
return b2Dot(d, d) <= m_radius * m_radius;
|
||||
}
|
||||
|
||||
// Collision Detection in Interactive 3D Environments by Gino van den Bergen
|
||||
// From Section 3.1.2
|
||||
// x = s + a * r
|
||||
// norm(x) = radius
|
||||
bool b2CircleShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
|
||||
const b2Transform& transform, int32 childIndex) const
|
||||
{
|
||||
B2_NOT_USED(childIndex);
|
||||
|
||||
b2Vec2 position = transform.p + b2Mul(transform.q, m_p);
|
||||
b2Vec2 s = input.p1 - position;
|
||||
float32 b = b2Dot(s, s) - m_radius * m_radius;
|
||||
|
||||
// Solve quadratic equation.
|
||||
b2Vec2 r = input.p2 - input.p1;
|
||||
float32 c = b2Dot(s, r);
|
||||
float32 rr = b2Dot(r, r);
|
||||
float32 sigma = c * c - rr * b;
|
||||
|
||||
// Check for negative discriminant and short segment.
|
||||
if (sigma < 0.0f || rr < b2_epsilon)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Find the point of intersection of the line with the circle.
|
||||
float32 a = -(c + b2Sqrt(sigma));
|
||||
|
||||
// Is the intersection point on the segment?
|
||||
if (0.0f <= a && a <= input.maxFraction * rr)
|
||||
{
|
||||
a /= rr;
|
||||
output->fraction = a;
|
||||
output->normal = s + a * r;
|
||||
output->normal.Normalize();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void b2CircleShape::ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const
|
||||
{
|
||||
B2_NOT_USED(childIndex);
|
||||
|
||||
b2Vec2 p = transform.p + b2Mul(transform.q, m_p);
|
||||
aabb->lowerBound.Set(p.x - m_radius, p.y - m_radius);
|
||||
aabb->upperBound.Set(p.x + m_radius, p.y + m_radius);
|
||||
}
|
||||
|
||||
void b2CircleShape::ComputeMass(b2MassData* massData, float32 density) const
|
||||
{
|
||||
massData->mass = density * b2_pi * m_radius * m_radius;
|
||||
massData->center = m_p;
|
||||
|
||||
// inertia about the local origin
|
||||
massData->I = massData->mass * (0.5f * m_radius * m_radius + b2Dot(m_p, m_p));
|
||||
}
|
||||
-60
@@ -1,60 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#ifndef B2_CIRCLE_SHAPE_H
|
||||
#define B2_CIRCLE_SHAPE_H
|
||||
|
||||
#include "Box2D/Collision/Shapes/b2Shape.h"
|
||||
|
||||
/// A circle shape.
|
||||
class b2CircleShape : public b2Shape
|
||||
{
|
||||
public:
|
||||
b2CircleShape();
|
||||
|
||||
/// Implement b2Shape.
|
||||
b2Shape* Clone(b2BlockAllocator* allocator) const override;
|
||||
|
||||
/// @see b2Shape::GetChildCount
|
||||
int32 GetChildCount() const override;
|
||||
|
||||
/// Implement b2Shape.
|
||||
bool TestPoint(const b2Transform& transform, const b2Vec2& p) const override;
|
||||
|
||||
/// Implement b2Shape.
|
||||
bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
|
||||
const b2Transform& transform, int32 childIndex) const override;
|
||||
|
||||
/// @see b2Shape::ComputeAABB
|
||||
void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const override;
|
||||
|
||||
/// @see b2Shape::ComputeMass
|
||||
void ComputeMass(b2MassData* massData, float32 density) const override;
|
||||
|
||||
/// Position
|
||||
b2Vec2 m_p;
|
||||
};
|
||||
|
||||
inline b2CircleShape::b2CircleShape()
|
||||
{
|
||||
m_type = e_circle;
|
||||
m_radius = 0.0f;
|
||||
m_p.SetZero();
|
||||
}
|
||||
|
||||
#endif
|
||||
-138
@@ -1,138 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "Box2D/Collision/Shapes/b2EdgeShape.h"
|
||||
#include <new>
|
||||
|
||||
void b2EdgeShape::Set(const b2Vec2& v1, const b2Vec2& v2)
|
||||
{
|
||||
m_vertex1 = v1;
|
||||
m_vertex2 = v2;
|
||||
m_hasVertex0 = false;
|
||||
m_hasVertex3 = false;
|
||||
}
|
||||
|
||||
b2Shape* b2EdgeShape::Clone(b2BlockAllocator* allocator) const
|
||||
{
|
||||
void* mem = allocator->Allocate(sizeof(b2EdgeShape));
|
||||
b2EdgeShape* clone = new (mem) b2EdgeShape;
|
||||
*clone = *this;
|
||||
return clone;
|
||||
}
|
||||
|
||||
int32 b2EdgeShape::GetChildCount() const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool b2EdgeShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const
|
||||
{
|
||||
B2_NOT_USED(xf);
|
||||
B2_NOT_USED(p);
|
||||
return false;
|
||||
}
|
||||
|
||||
// p = p1 + t * d
|
||||
// v = v1 + s * e
|
||||
// p1 + t * d = v1 + s * e
|
||||
// s * e - t * d = p1 - v1
|
||||
bool b2EdgeShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
|
||||
const b2Transform& xf, int32 childIndex) const
|
||||
{
|
||||
B2_NOT_USED(childIndex);
|
||||
|
||||
// Put the ray into the edge's frame of reference.
|
||||
b2Vec2 p1 = b2MulT(xf.q, input.p1 - xf.p);
|
||||
b2Vec2 p2 = b2MulT(xf.q, input.p2 - xf.p);
|
||||
b2Vec2 d = p2 - p1;
|
||||
|
||||
b2Vec2 v1 = m_vertex1;
|
||||
b2Vec2 v2 = m_vertex2;
|
||||
b2Vec2 e = v2 - v1;
|
||||
b2Vec2 normal(e.y, -e.x);
|
||||
normal.Normalize();
|
||||
|
||||
// q = p1 + t * d
|
||||
// dot(normal, q - v1) = 0
|
||||
// dot(normal, p1 - v1) + t * dot(normal, d) = 0
|
||||
float32 numerator = b2Dot(normal, v1 - p1);
|
||||
float32 denominator = b2Dot(normal, d);
|
||||
|
||||
if (denominator == 0.0f)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
float32 t = numerator / denominator;
|
||||
if (t < 0.0f || input.maxFraction < t)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
b2Vec2 q = p1 + t * d;
|
||||
|
||||
// q = v1 + s * r
|
||||
// s = dot(q - v1, r) / dot(r, r)
|
||||
b2Vec2 r = v2 - v1;
|
||||
float32 rr = b2Dot(r, r);
|
||||
if (rr == 0.0f)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
float32 s = b2Dot(q - v1, r) / rr;
|
||||
if (s < 0.0f || 1.0f < s)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
output->fraction = t;
|
||||
if (numerator > 0.0f)
|
||||
{
|
||||
output->normal = -b2Mul(xf.q, normal);
|
||||
}
|
||||
else
|
||||
{
|
||||
output->normal = b2Mul(xf.q, normal);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void b2EdgeShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const
|
||||
{
|
||||
B2_NOT_USED(childIndex);
|
||||
|
||||
b2Vec2 v1 = b2Mul(xf, m_vertex1);
|
||||
b2Vec2 v2 = b2Mul(xf, m_vertex2);
|
||||
|
||||
b2Vec2 lower = b2Min(v1, v2);
|
||||
b2Vec2 upper = b2Max(v1, v2);
|
||||
|
||||
b2Vec2 r(m_radius, m_radius);
|
||||
aabb->lowerBound = lower - r;
|
||||
aabb->upperBound = upper + r;
|
||||
}
|
||||
|
||||
void b2EdgeShape::ComputeMass(b2MassData* massData, float32 density) const
|
||||
{
|
||||
B2_NOT_USED(density);
|
||||
|
||||
massData->mass = 0.0f;
|
||||
massData->center = 0.5f * (m_vertex1 + m_vertex2);
|
||||
massData->I = 0.0f;
|
||||
}
|
||||
-74
@@ -1,74 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2010 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#ifndef B2_EDGE_SHAPE_H
|
||||
#define B2_EDGE_SHAPE_H
|
||||
|
||||
#include "Box2D/Collision/Shapes/b2Shape.h"
|
||||
|
||||
/// A line segment (edge) shape. These can be connected in chains or loops
|
||||
/// to other edge shapes. The connectivity information is used to ensure
|
||||
/// correct contact normals.
|
||||
class b2EdgeShape : public b2Shape
|
||||
{
|
||||
public:
|
||||
b2EdgeShape();
|
||||
|
||||
/// Set this as an isolated edge.
|
||||
void Set(const b2Vec2& v1, const b2Vec2& v2);
|
||||
|
||||
/// Implement b2Shape.
|
||||
b2Shape* Clone(b2BlockAllocator* allocator) const override;
|
||||
|
||||
/// @see b2Shape::GetChildCount
|
||||
int32 GetChildCount() const override;
|
||||
|
||||
/// @see b2Shape::TestPoint
|
||||
bool TestPoint(const b2Transform& transform, const b2Vec2& p) const override;
|
||||
|
||||
/// Implement b2Shape.
|
||||
bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
|
||||
const b2Transform& transform, int32 childIndex) const override;
|
||||
|
||||
/// @see b2Shape::ComputeAABB
|
||||
void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const override;
|
||||
|
||||
/// @see b2Shape::ComputeMass
|
||||
void ComputeMass(b2MassData* massData, float32 density) const override;
|
||||
|
||||
/// These are the edge vertices
|
||||
b2Vec2 m_vertex1, m_vertex2;
|
||||
|
||||
/// Optional adjacent vertices. These are used for smooth collision.
|
||||
b2Vec2 m_vertex0, m_vertex3;
|
||||
bool m_hasVertex0, m_hasVertex3;
|
||||
};
|
||||
|
||||
inline b2EdgeShape::b2EdgeShape()
|
||||
{
|
||||
m_type = e_edge;
|
||||
m_radius = b2_polygonRadius;
|
||||
m_vertex0.x = 0.0f;
|
||||
m_vertex0.y = 0.0f;
|
||||
m_vertex3.x = 0.0f;
|
||||
m_vertex3.y = 0.0f;
|
||||
m_hasVertex0 = false;
|
||||
m_hasVertex3 = false;
|
||||
}
|
||||
|
||||
#endif
|
||||
-468
@@ -1,468 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "Box2D/Collision/Shapes/b2PolygonShape.h"
|
||||
#include <new>
|
||||
|
||||
b2Shape* b2PolygonShape::Clone(b2BlockAllocator* allocator) const
|
||||
{
|
||||
void* mem = allocator->Allocate(sizeof(b2PolygonShape));
|
||||
b2PolygonShape* clone = new (mem) b2PolygonShape;
|
||||
*clone = *this;
|
||||
return clone;
|
||||
}
|
||||
|
||||
void b2PolygonShape::SetAsBox(float32 hx, float32 hy)
|
||||
{
|
||||
m_count = 4;
|
||||
m_vertices[0].Set(-hx, -hy);
|
||||
m_vertices[1].Set( hx, -hy);
|
||||
m_vertices[2].Set( hx, hy);
|
||||
m_vertices[3].Set(-hx, hy);
|
||||
m_normals[0].Set(0.0f, -1.0f);
|
||||
m_normals[1].Set(1.0f, 0.0f);
|
||||
m_normals[2].Set(0.0f, 1.0f);
|
||||
m_normals[3].Set(-1.0f, 0.0f);
|
||||
m_centroid.SetZero();
|
||||
}
|
||||
|
||||
void b2PolygonShape::SetAsBox(float32 hx, float32 hy, const b2Vec2& center, float32 angle)
|
||||
{
|
||||
m_count = 4;
|
||||
m_vertices[0].Set(-hx, -hy);
|
||||
m_vertices[1].Set( hx, -hy);
|
||||
m_vertices[2].Set( hx, hy);
|
||||
m_vertices[3].Set(-hx, hy);
|
||||
m_normals[0].Set(0.0f, -1.0f);
|
||||
m_normals[1].Set(1.0f, 0.0f);
|
||||
m_normals[2].Set(0.0f, 1.0f);
|
||||
m_normals[3].Set(-1.0f, 0.0f);
|
||||
m_centroid = center;
|
||||
|
||||
b2Transform xf;
|
||||
xf.p = center;
|
||||
xf.q.Set(angle);
|
||||
|
||||
// Transform vertices and normals.
|
||||
for (int32 i = 0; i < m_count; ++i)
|
||||
{
|
||||
m_vertices[i] = b2Mul(xf, m_vertices[i]);
|
||||
m_normals[i] = b2Mul(xf.q, m_normals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
int32 b2PolygonShape::GetChildCount() const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static b2Vec2 ComputeCentroid(const b2Vec2* vs, int32 count)
|
||||
{
|
||||
b2Assert(count >= 3);
|
||||
|
||||
b2Vec2 c; c.Set(0.0f, 0.0f);
|
||||
float32 area = 0.0f;
|
||||
|
||||
// pRef is the reference point for forming triangles.
|
||||
// It's location doesn't change the result (except for rounding error).
|
||||
b2Vec2 pRef(0.0f, 0.0f);
|
||||
#if 0
|
||||
// This code would put the reference point inside the polygon.
|
||||
for (int32 i = 0; i < count; ++i)
|
||||
{
|
||||
pRef += vs[i];
|
||||
}
|
||||
pRef *= 1.0f / count;
|
||||
#endif
|
||||
|
||||
const float32 inv3 = 1.0f / 3.0f;
|
||||
|
||||
for (int32 i = 0; i < count; ++i)
|
||||
{
|
||||
// Triangle vertices.
|
||||
b2Vec2 p1 = pRef;
|
||||
b2Vec2 p2 = vs[i];
|
||||
b2Vec2 p3 = i + 1 < count ? vs[i+1] : vs[0];
|
||||
|
||||
b2Vec2 e1 = p2 - p1;
|
||||
b2Vec2 e2 = p3 - p1;
|
||||
|
||||
float32 D = b2Cross(e1, e2);
|
||||
|
||||
float32 triangleArea = 0.5f * D;
|
||||
area += triangleArea;
|
||||
|
||||
// Area weighted centroid
|
||||
c += triangleArea * inv3 * (p1 + p2 + p3);
|
||||
}
|
||||
|
||||
// Centroid
|
||||
b2Assert(area > b2_epsilon);
|
||||
c *= 1.0f / area;
|
||||
return c;
|
||||
}
|
||||
|
||||
void b2PolygonShape::Set(const b2Vec2* vertices, int32 count)
|
||||
{
|
||||
b2Assert(3 <= count && count <= b2_maxPolygonVertices);
|
||||
if (count < 3)
|
||||
{
|
||||
SetAsBox(1.0f, 1.0f);
|
||||
return;
|
||||
}
|
||||
|
||||
int32 n = b2Min(count, b2_maxPolygonVertices);
|
||||
|
||||
// Perform welding and copy vertices into local buffer.
|
||||
b2Vec2 ps[b2_maxPolygonVertices];
|
||||
int32 tempCount = 0;
|
||||
for (int32 i = 0; i < n; ++i)
|
||||
{
|
||||
b2Vec2 v = vertices[i];
|
||||
|
||||
bool unique = true;
|
||||
for (int32 j = 0; j < tempCount; ++j)
|
||||
{
|
||||
if (b2DistanceSquared(v, ps[j]) < ((0.5f * b2_linearSlop) * (0.5f * b2_linearSlop)))
|
||||
{
|
||||
unique = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (unique)
|
||||
{
|
||||
ps[tempCount++] = v;
|
||||
}
|
||||
}
|
||||
|
||||
n = tempCount;
|
||||
if (n < 3)
|
||||
{
|
||||
// Polygon is degenerate.
|
||||
b2Assert(false);
|
||||
SetAsBox(1.0f, 1.0f);
|
||||
return;
|
||||
}
|
||||
|
||||
// Create the convex hull using the Gift wrapping algorithm
|
||||
// http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
|
||||
|
||||
// Find the right most point on the hull
|
||||
int32 i0 = 0;
|
||||
float32 x0 = ps[0].x;
|
||||
for (int32 i = 1; i < n; ++i)
|
||||
{
|
||||
float32 x = ps[i].x;
|
||||
if (x > x0 || (x == x0 && ps[i].y < ps[i0].y))
|
||||
{
|
||||
i0 = i;
|
||||
x0 = x;
|
||||
}
|
||||
}
|
||||
|
||||
int32 hull[b2_maxPolygonVertices];
|
||||
int32 m = 0;
|
||||
int32 ih = i0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
b2Assert(m < b2_maxPolygonVertices);
|
||||
hull[m] = ih;
|
||||
|
||||
int32 ie = 0;
|
||||
for (int32 j = 1; j < n; ++j)
|
||||
{
|
||||
if (ie == ih)
|
||||
{
|
||||
ie = j;
|
||||
continue;
|
||||
}
|
||||
|
||||
b2Vec2 r = ps[ie] - ps[hull[m]];
|
||||
b2Vec2 v = ps[j] - ps[hull[m]];
|
||||
float32 c = b2Cross(r, v);
|
||||
if (c < 0.0f)
|
||||
{
|
||||
ie = j;
|
||||
}
|
||||
|
||||
// Collinearity check
|
||||
if (c == 0.0f && v.LengthSquared() > r.LengthSquared())
|
||||
{
|
||||
ie = j;
|
||||
}
|
||||
}
|
||||
|
||||
++m;
|
||||
ih = ie;
|
||||
|
||||
if (ie == i0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (m < 3)
|
||||
{
|
||||
// Polygon is degenerate.
|
||||
b2Assert(false);
|
||||
SetAsBox(1.0f, 1.0f);
|
||||
return;
|
||||
}
|
||||
|
||||
m_count = m;
|
||||
|
||||
// Copy vertices.
|
||||
for (int32 i = 0; i < m; ++i)
|
||||
{
|
||||
m_vertices[i] = ps[hull[i]];
|
||||
}
|
||||
|
||||
// Compute normals. Ensure the edges have non-zero length.
|
||||
for (int32 i = 0; i < m; ++i)
|
||||
{
|
||||
int32 i1 = i;
|
||||
int32 i2 = i + 1 < m ? i + 1 : 0;
|
||||
b2Vec2 edge = m_vertices[i2] - m_vertices[i1];
|
||||
b2Assert(edge.LengthSquared() > b2_epsilon * b2_epsilon);
|
||||
m_normals[i] = b2Cross(edge, 1.0f);
|
||||
m_normals[i].Normalize();
|
||||
}
|
||||
|
||||
// Compute the polygon centroid.
|
||||
m_centroid = ComputeCentroid(m_vertices, m);
|
||||
}
|
||||
|
||||
bool b2PolygonShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const
|
||||
{
|
||||
b2Vec2 pLocal = b2MulT(xf.q, p - xf.p);
|
||||
|
||||
for (int32 i = 0; i < m_count; ++i)
|
||||
{
|
||||
float32 dot = b2Dot(m_normals[i], pLocal - m_vertices[i]);
|
||||
if (dot > 0.0f)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool b2PolygonShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
|
||||
const b2Transform& xf, int32 childIndex) const
|
||||
{
|
||||
B2_NOT_USED(childIndex);
|
||||
|
||||
// Put the ray into the polygon's frame of reference.
|
||||
b2Vec2 p1 = b2MulT(xf.q, input.p1 - xf.p);
|
||||
b2Vec2 p2 = b2MulT(xf.q, input.p2 - xf.p);
|
||||
b2Vec2 d = p2 - p1;
|
||||
|
||||
float32 lower = 0.0f, upper = input.maxFraction;
|
||||
|
||||
int32 index = -1;
|
||||
|
||||
for (int32 i = 0; i < m_count; ++i)
|
||||
{
|
||||
// p = p1 + a * d
|
||||
// dot(normal, p - v) = 0
|
||||
// dot(normal, p1 - v) + a * dot(normal, d) = 0
|
||||
float32 numerator = b2Dot(m_normals[i], m_vertices[i] - p1);
|
||||
float32 denominator = b2Dot(m_normals[i], d);
|
||||
|
||||
if (denominator == 0.0f)
|
||||
{
|
||||
if (numerator < 0.0f)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Note: we want this predicate without division:
|
||||
// lower < numerator / denominator, where denominator < 0
|
||||
// Since denominator < 0, we have to flip the inequality:
|
||||
// lower < numerator / denominator <==> denominator * lower > numerator.
|
||||
if (denominator < 0.0f && numerator < lower * denominator)
|
||||
{
|
||||
// Increase lower.
|
||||
// The segment enters this half-space.
|
||||
lower = numerator / denominator;
|
||||
index = i;
|
||||
}
|
||||
else if (denominator > 0.0f && numerator < upper * denominator)
|
||||
{
|
||||
// Decrease upper.
|
||||
// The segment exits this half-space.
|
||||
upper = numerator / denominator;
|
||||
}
|
||||
}
|
||||
|
||||
// The use of epsilon here causes the assert on lower to trip
|
||||
// in some cases. Apparently the use of epsilon was to make edge
|
||||
// shapes work, but now those are handled separately.
|
||||
//if (upper < lower - b2_epsilon)
|
||||
if (upper < lower)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
b2Assert(0.0f <= lower && lower <= input.maxFraction);
|
||||
|
||||
if (index >= 0)
|
||||
{
|
||||
output->fraction = lower;
|
||||
output->normal = b2Mul(xf.q, m_normals[index]);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void b2PolygonShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const
|
||||
{
|
||||
B2_NOT_USED(childIndex);
|
||||
|
||||
b2Vec2 lower = b2Mul(xf, m_vertices[0]);
|
||||
b2Vec2 upper = lower;
|
||||
|
||||
for (int32 i = 1; i < m_count; ++i)
|
||||
{
|
||||
b2Vec2 v = b2Mul(xf, m_vertices[i]);
|
||||
lower = b2Min(lower, v);
|
||||
upper = b2Max(upper, v);
|
||||
}
|
||||
|
||||
b2Vec2 r(m_radius, m_radius);
|
||||
aabb->lowerBound = lower - r;
|
||||
aabb->upperBound = upper + r;
|
||||
}
|
||||
|
||||
void b2PolygonShape::ComputeMass(b2MassData* massData, float32 density) const
|
||||
{
|
||||
// Polygon mass, centroid, and inertia.
|
||||
// Let rho be the polygon density in mass per unit area.
|
||||
// Then:
|
||||
// mass = rho * int(dA)
|
||||
// centroid.x = (1/mass) * rho * int(x * dA)
|
||||
// centroid.y = (1/mass) * rho * int(y * dA)
|
||||
// I = rho * int((x*x + y*y) * dA)
|
||||
//
|
||||
// We can compute these integrals by summing all the integrals
|
||||
// for each triangle of the polygon. To evaluate the integral
|
||||
// for a single triangle, we make a change of variables to
|
||||
// the (u,v) coordinates of the triangle:
|
||||
// x = x0 + e1x * u + e2x * v
|
||||
// y = y0 + e1y * u + e2y * v
|
||||
// where 0 <= u && 0 <= v && u + v <= 1.
|
||||
//
|
||||
// We integrate u from [0,1-v] and then v from [0,1].
|
||||
// We also need to use the Jacobian of the transformation:
|
||||
// D = cross(e1, e2)
|
||||
//
|
||||
// Simplification: triangle centroid = (1/3) * (p1 + p2 + p3)
|
||||
//
|
||||
// The rest of the derivation is handled by computer algebra.
|
||||
|
||||
b2Assert(m_count >= 3);
|
||||
|
||||
b2Vec2 center; center.Set(0.0f, 0.0f);
|
||||
float32 area = 0.0f;
|
||||
float32 I = 0.0f;
|
||||
|
||||
// s is the reference point for forming triangles.
|
||||
// It's location doesn't change the result (except for rounding error).
|
||||
b2Vec2 s(0.0f, 0.0f);
|
||||
|
||||
// This code would put the reference point inside the polygon.
|
||||
for (int32 i = 0; i < m_count; ++i)
|
||||
{
|
||||
s += m_vertices[i];
|
||||
}
|
||||
s *= 1.0f / m_count;
|
||||
|
||||
const float32 k_inv3 = 1.0f / 3.0f;
|
||||
|
||||
for (int32 i = 0; i < m_count; ++i)
|
||||
{
|
||||
// Triangle vertices.
|
||||
b2Vec2 e1 = m_vertices[i] - s;
|
||||
b2Vec2 e2 = i + 1 < m_count ? m_vertices[i+1] - s : m_vertices[0] - s;
|
||||
|
||||
float32 D = b2Cross(e1, e2);
|
||||
|
||||
float32 triangleArea = 0.5f * D;
|
||||
area += triangleArea;
|
||||
|
||||
// Area weighted centroid
|
||||
center += triangleArea * k_inv3 * (e1 + e2);
|
||||
|
||||
float32 ex1 = e1.x, ey1 = e1.y;
|
||||
float32 ex2 = e2.x, ey2 = e2.y;
|
||||
|
||||
float32 intx2 = ex1*ex1 + ex2*ex1 + ex2*ex2;
|
||||
float32 inty2 = ey1*ey1 + ey2*ey1 + ey2*ey2;
|
||||
|
||||
I += (0.25f * k_inv3 * D) * (intx2 + inty2);
|
||||
}
|
||||
|
||||
// Total mass
|
||||
massData->mass = density * area;
|
||||
|
||||
// Center of mass
|
||||
b2Assert(area > b2_epsilon);
|
||||
center *= 1.0f / area;
|
||||
massData->center = center + s;
|
||||
|
||||
// Inertia tensor relative to the local origin (point s).
|
||||
massData->I = density * I;
|
||||
|
||||
// Shift to center of mass then to original body origin.
|
||||
massData->I += massData->mass * (b2Dot(massData->center, massData->center) - b2Dot(center, center));
|
||||
}
|
||||
|
||||
bool b2PolygonShape::Validate() const
|
||||
{
|
||||
for (int32 i = 0; i < m_count; ++i)
|
||||
{
|
||||
int32 i1 = i;
|
||||
int32 i2 = i < m_count - 1 ? i1 + 1 : 0;
|
||||
b2Vec2 p = m_vertices[i1];
|
||||
b2Vec2 e = m_vertices[i2] - p;
|
||||
|
||||
for (int32 j = 0; j < m_count; ++j)
|
||||
{
|
||||
if (j == i1 || j == i2)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
b2Vec2 v = m_vertices[j] - p;
|
||||
float32 c = b2Cross(e, v);
|
||||
if (c < 0.0f)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
-89
@@ -1,89 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#ifndef B2_POLYGON_SHAPE_H
|
||||
#define B2_POLYGON_SHAPE_H
|
||||
|
||||
#include "Box2D/Collision/Shapes/b2Shape.h"
|
||||
|
||||
/// A convex polygon. It is assumed that the interior of the polygon is to
|
||||
/// the left of each edge.
|
||||
/// Polygons have a maximum number of vertices equal to b2_maxPolygonVertices.
|
||||
/// In most cases you should not need many vertices for a convex polygon.
|
||||
class b2PolygonShape : public b2Shape
|
||||
{
|
||||
public:
|
||||
b2PolygonShape();
|
||||
|
||||
/// Implement b2Shape.
|
||||
b2Shape* Clone(b2BlockAllocator* allocator) const override;
|
||||
|
||||
/// @see b2Shape::GetChildCount
|
||||
int32 GetChildCount() const override;
|
||||
|
||||
/// Create a convex hull from the given array of local points.
|
||||
/// The count must be in the range [3, b2_maxPolygonVertices].
|
||||
/// @warning the points may be re-ordered, even if they form a convex polygon
|
||||
/// @warning collinear points are handled but not removed. Collinear points
|
||||
/// may lead to poor stacking behavior.
|
||||
void Set(const b2Vec2* points, int32 count);
|
||||
|
||||
/// Build vertices to represent an axis-aligned box centered on the local origin.
|
||||
/// @param hx the half-width.
|
||||
/// @param hy the half-height.
|
||||
void SetAsBox(float32 hx, float32 hy);
|
||||
|
||||
/// Build vertices to represent an oriented box.
|
||||
/// @param hx the half-width.
|
||||
/// @param hy the half-height.
|
||||
/// @param center the center of the box in local coordinates.
|
||||
/// @param angle the rotation of the box in local coordinates.
|
||||
void SetAsBox(float32 hx, float32 hy, const b2Vec2& center, float32 angle);
|
||||
|
||||
/// @see b2Shape::TestPoint
|
||||
bool TestPoint(const b2Transform& transform, const b2Vec2& p) const override;
|
||||
|
||||
/// Implement b2Shape.
|
||||
bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
|
||||
const b2Transform& transform, int32 childIndex) const override;
|
||||
|
||||
/// @see b2Shape::ComputeAABB
|
||||
void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const override;
|
||||
|
||||
/// @see b2Shape::ComputeMass
|
||||
void ComputeMass(b2MassData* massData, float32 density) const override;
|
||||
|
||||
/// Validate convexity. This is a very time consuming operation.
|
||||
/// @returns true if valid
|
||||
bool Validate() const;
|
||||
|
||||
b2Vec2 m_centroid;
|
||||
b2Vec2 m_vertices[b2_maxPolygonVertices];
|
||||
b2Vec2 m_normals[b2_maxPolygonVertices];
|
||||
int32 m_count;
|
||||
};
|
||||
|
||||
inline b2PolygonShape::b2PolygonShape()
|
||||
{
|
||||
m_type = e_polygon;
|
||||
m_radius = b2_polygonRadius;
|
||||
m_count = 0;
|
||||
m_centroid.SetZero();
|
||||
}
|
||||
|
||||
#endif
|
||||
-104
@@ -1,104 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#ifndef B2_SHAPE_H
|
||||
#define B2_SHAPE_H
|
||||
|
||||
#include "Box2D/Common/b2BlockAllocator.h"
|
||||
#include "Box2D/Common/b2Math.h"
|
||||
#include "Box2D/Collision/b2Collision.h"
|
||||
|
||||
/// This holds the mass data computed for a shape.
|
||||
struct b2MassData
|
||||
{
|
||||
/// The mass of the shape, usually in kilograms.
|
||||
float32 mass;
|
||||
|
||||
/// The position of the shape's centroid relative to the shape's origin.
|
||||
b2Vec2 center;
|
||||
|
||||
/// The rotational inertia of the shape about the local origin.
|
||||
float32 I;
|
||||
};
|
||||
|
||||
/// A shape is used for collision detection. You can create a shape however you like.
|
||||
/// Shapes used for simulation in b2World are created automatically when a b2Fixture
|
||||
/// is created. Shapes may encapsulate a one or more child shapes.
|
||||
class b2Shape
|
||||
{
|
||||
public:
|
||||
|
||||
enum Type
|
||||
{
|
||||
e_circle = 0,
|
||||
e_edge = 1,
|
||||
e_polygon = 2,
|
||||
e_chain = 3,
|
||||
e_typeCount = 4
|
||||
};
|
||||
|
||||
virtual ~b2Shape() {}
|
||||
|
||||
/// Clone the concrete shape using the provided allocator.
|
||||
virtual b2Shape* Clone(b2BlockAllocator* allocator) const = 0;
|
||||
|
||||
/// Get the type of this shape. You can use this to down cast to the concrete shape.
|
||||
/// @return the shape type.
|
||||
Type GetType() const;
|
||||
|
||||
/// Get the number of child primitives.
|
||||
virtual int32 GetChildCount() const = 0;
|
||||
|
||||
/// Test a point for containment in this shape. This only works for convex shapes.
|
||||
/// @param xf the shape world transform.
|
||||
/// @param p a point in world coordinates.
|
||||
virtual bool TestPoint(const b2Transform& xf, const b2Vec2& p) const = 0;
|
||||
|
||||
/// Cast a ray against a child shape.
|
||||
/// @param output the ray-cast results.
|
||||
/// @param input the ray-cast input parameters.
|
||||
/// @param transform the transform to be applied to the shape.
|
||||
/// @param childIndex the child shape index
|
||||
virtual bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
|
||||
const b2Transform& transform, int32 childIndex) const = 0;
|
||||
|
||||
/// Given a transform, compute the associated axis aligned bounding box for a child shape.
|
||||
/// @param aabb returns the axis aligned box.
|
||||
/// @param xf the world transform of the shape.
|
||||
/// @param childIndex the child shape
|
||||
virtual void ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const = 0;
|
||||
|
||||
/// Compute the mass properties of this shape using its dimensions and density.
|
||||
/// The inertia tensor is computed about the local origin.
|
||||
/// @param massData returns the mass data for this shape.
|
||||
/// @param density the density in kilograms per meter squared.
|
||||
virtual void ComputeMass(b2MassData* massData, float32 density) const = 0;
|
||||
|
||||
Type m_type;
|
||||
|
||||
/// Radius of a shape. For polygonal shapes this must be b2_polygonRadius. There is no support for
|
||||
/// making rounded polygons.
|
||||
float32 m_radius;
|
||||
};
|
||||
|
||||
inline b2Shape::Type b2Shape::GetType() const
|
||||
{
|
||||
return m_type;
|
||||
}
|
||||
|
||||
#endif
|
||||
-119
@@ -1,119 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "Box2D/Collision/b2BroadPhase.h"
|
||||
|
||||
b2BroadPhase::b2BroadPhase()
|
||||
{
|
||||
m_proxyCount = 0;
|
||||
|
||||
m_pairCapacity = 16;
|
||||
m_pairCount = 0;
|
||||
m_pairBuffer = (b2Pair*)b2Alloc(m_pairCapacity * sizeof(b2Pair));
|
||||
|
||||
m_moveCapacity = 16;
|
||||
m_moveCount = 0;
|
||||
m_moveBuffer = (int32*)b2Alloc(m_moveCapacity * sizeof(int32));
|
||||
}
|
||||
|
||||
b2BroadPhase::~b2BroadPhase()
|
||||
{
|
||||
b2Free(m_moveBuffer);
|
||||
b2Free(m_pairBuffer);
|
||||
}
|
||||
|
||||
int32 b2BroadPhase::CreateProxy(const b2AABB& aabb, void* userData)
|
||||
{
|
||||
int32 proxyId = m_tree.CreateProxy(aabb, userData);
|
||||
++m_proxyCount;
|
||||
BufferMove(proxyId);
|
||||
return proxyId;
|
||||
}
|
||||
|
||||
void b2BroadPhase::DestroyProxy(int32 proxyId)
|
||||
{
|
||||
UnBufferMove(proxyId);
|
||||
--m_proxyCount;
|
||||
m_tree.DestroyProxy(proxyId);
|
||||
}
|
||||
|
||||
void b2BroadPhase::MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement)
|
||||
{
|
||||
bool buffer = m_tree.MoveProxy(proxyId, aabb, displacement);
|
||||
if (buffer)
|
||||
{
|
||||
BufferMove(proxyId);
|
||||
}
|
||||
}
|
||||
|
||||
void b2BroadPhase::TouchProxy(int32 proxyId)
|
||||
{
|
||||
BufferMove(proxyId);
|
||||
}
|
||||
|
||||
void b2BroadPhase::BufferMove(int32 proxyId)
|
||||
{
|
||||
if (m_moveCount == m_moveCapacity)
|
||||
{
|
||||
int32* oldBuffer = m_moveBuffer;
|
||||
m_moveCapacity *= 2;
|
||||
m_moveBuffer = (int32*)b2Alloc(m_moveCapacity * sizeof(int32));
|
||||
memcpy(m_moveBuffer, oldBuffer, m_moveCount * sizeof(int32));
|
||||
b2Free(oldBuffer);
|
||||
}
|
||||
|
||||
m_moveBuffer[m_moveCount] = proxyId;
|
||||
++m_moveCount;
|
||||
}
|
||||
|
||||
void b2BroadPhase::UnBufferMove(int32 proxyId)
|
||||
{
|
||||
for (int32 i = 0; i < m_moveCount; ++i)
|
||||
{
|
||||
if (m_moveBuffer[i] == proxyId)
|
||||
{
|
||||
m_moveBuffer[i] = e_nullProxy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This is called from b2DynamicTree::Query when we are gathering pairs.
|
||||
bool b2BroadPhase::QueryCallback(int32 proxyId)
|
||||
{
|
||||
// A proxy cannot form a pair with itself.
|
||||
if (proxyId == m_queryProxyId)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Grow the pair buffer as needed.
|
||||
if (m_pairCount == m_pairCapacity)
|
||||
{
|
||||
b2Pair* oldBuffer = m_pairBuffer;
|
||||
m_pairCapacity *= 2;
|
||||
m_pairBuffer = (b2Pair*)b2Alloc(m_pairCapacity * sizeof(b2Pair));
|
||||
memcpy(m_pairBuffer, oldBuffer, m_pairCount * sizeof(b2Pair));
|
||||
b2Free(oldBuffer);
|
||||
}
|
||||
|
||||
m_pairBuffer[m_pairCount].proxyIdA = b2Min(proxyId, m_queryProxyId);
|
||||
m_pairBuffer[m_pairCount].proxyIdB = b2Max(proxyId, m_queryProxyId);
|
||||
++m_pairCount;
|
||||
|
||||
return true;
|
||||
}
|
||||
-257
@@ -1,257 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#ifndef B2_BROAD_PHASE_H
|
||||
#define B2_BROAD_PHASE_H
|
||||
|
||||
#include "Box2D/Common/b2Settings.h"
|
||||
#include "Box2D/Collision/b2Collision.h"
|
||||
#include "Box2D/Collision/b2DynamicTree.h"
|
||||
#include <algorithm>
|
||||
|
||||
struct b2Pair
|
||||
{
|
||||
int32 proxyIdA;
|
||||
int32 proxyIdB;
|
||||
};
|
||||
|
||||
/// The broad-phase is used for computing pairs and performing volume queries and ray casts.
|
||||
/// This broad-phase does not persist pairs. Instead, this reports potentially new pairs.
|
||||
/// It is up to the client to consume the new pairs and to track subsequent overlap.
|
||||
class b2BroadPhase
|
||||
{
|
||||
public:
|
||||
|
||||
enum
|
||||
{
|
||||
e_nullProxy = -1
|
||||
};
|
||||
|
||||
b2BroadPhase();
|
||||
~b2BroadPhase();
|
||||
|
||||
/// Create a proxy with an initial AABB. Pairs are not reported until
|
||||
/// UpdatePairs is called.
|
||||
int32 CreateProxy(const b2AABB& aabb, void* userData);
|
||||
|
||||
/// Destroy a proxy. It is up to the client to remove any pairs.
|
||||
void DestroyProxy(int32 proxyId);
|
||||
|
||||
/// Call MoveProxy as many times as you like, then when you are done
|
||||
/// call UpdatePairs to finalized the proxy pairs (for your time step).
|
||||
void MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement);
|
||||
|
||||
/// Call to trigger a re-processing of it's pairs on the next call to UpdatePairs.
|
||||
void TouchProxy(int32 proxyId);
|
||||
|
||||
/// Get the fat AABB for a proxy.
|
||||
const b2AABB& GetFatAABB(int32 proxyId) const;
|
||||
|
||||
/// Get user data from a proxy. Returns nullptr if the id is invalid.
|
||||
void* GetUserData(int32 proxyId) const;
|
||||
|
||||
/// Test overlap of fat AABBs.
|
||||
bool TestOverlap(int32 proxyIdA, int32 proxyIdB) const;
|
||||
|
||||
/// Get the number of proxies.
|
||||
int32 GetProxyCount() const;
|
||||
|
||||
/// Update the pairs. This results in pair callbacks. This can only add pairs.
|
||||
template <typename T>
|
||||
void UpdatePairs(T* callback);
|
||||
|
||||
/// Query an AABB for overlapping proxies. The callback class
|
||||
/// is called for each proxy that overlaps the supplied AABB.
|
||||
template <typename T>
|
||||
void Query(T* callback, const b2AABB& aabb) const;
|
||||
|
||||
/// Ray-cast against the proxies in the tree. This relies on the callback
|
||||
/// to perform a exact ray-cast in the case were the proxy contains a shape.
|
||||
/// The callback also performs the any collision filtering. This has performance
|
||||
/// roughly equal to k * log(n), where k is the number of collisions and n is the
|
||||
/// number of proxies in the tree.
|
||||
/// @param input the ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1).
|
||||
/// @param callback a callback class that is called for each proxy that is hit by the ray.
|
||||
template <typename T>
|
||||
void RayCast(T* callback, const b2RayCastInput& input) const;
|
||||
|
||||
/// Get the height of the embedded tree.
|
||||
int32 GetTreeHeight() const;
|
||||
|
||||
/// Get the balance of the embedded tree.
|
||||
int32 GetTreeBalance() const;
|
||||
|
||||
/// Get the quality metric of the embedded tree.
|
||||
float32 GetTreeQuality() const;
|
||||
|
||||
/// Shift the world origin. Useful for large worlds.
|
||||
/// The shift formula is: position -= newOrigin
|
||||
/// @param newOrigin the new origin with respect to the old origin
|
||||
void ShiftOrigin(const b2Vec2& newOrigin);
|
||||
|
||||
private:
|
||||
|
||||
friend class b2DynamicTree;
|
||||
|
||||
void BufferMove(int32 proxyId);
|
||||
void UnBufferMove(int32 proxyId);
|
||||
|
||||
bool QueryCallback(int32 proxyId);
|
||||
|
||||
b2DynamicTree m_tree;
|
||||
|
||||
int32 m_proxyCount;
|
||||
|
||||
int32* m_moveBuffer;
|
||||
int32 m_moveCapacity;
|
||||
int32 m_moveCount;
|
||||
|
||||
b2Pair* m_pairBuffer;
|
||||
int32 m_pairCapacity;
|
||||
int32 m_pairCount;
|
||||
|
||||
int32 m_queryProxyId;
|
||||
};
|
||||
|
||||
/// This is used to sort pairs.
|
||||
inline bool b2PairLessThan(const b2Pair& pair1, const b2Pair& pair2)
|
||||
{
|
||||
if (pair1.proxyIdA < pair2.proxyIdA)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (pair1.proxyIdA == pair2.proxyIdA)
|
||||
{
|
||||
return pair1.proxyIdB < pair2.proxyIdB;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
inline void* b2BroadPhase::GetUserData(int32 proxyId) const
|
||||
{
|
||||
return m_tree.GetUserData(proxyId);
|
||||
}
|
||||
|
||||
inline bool b2BroadPhase::TestOverlap(int32 proxyIdA, int32 proxyIdB) const
|
||||
{
|
||||
const b2AABB& aabbA = m_tree.GetFatAABB(proxyIdA);
|
||||
const b2AABB& aabbB = m_tree.GetFatAABB(proxyIdB);
|
||||
return b2TestOverlap(aabbA, aabbB);
|
||||
}
|
||||
|
||||
inline const b2AABB& b2BroadPhase::GetFatAABB(int32 proxyId) const
|
||||
{
|
||||
return m_tree.GetFatAABB(proxyId);
|
||||
}
|
||||
|
||||
inline int32 b2BroadPhase::GetProxyCount() const
|
||||
{
|
||||
return m_proxyCount;
|
||||
}
|
||||
|
||||
inline int32 b2BroadPhase::GetTreeHeight() const
|
||||
{
|
||||
return m_tree.GetHeight();
|
||||
}
|
||||
|
||||
inline int32 b2BroadPhase::GetTreeBalance() const
|
||||
{
|
||||
return m_tree.GetMaxBalance();
|
||||
}
|
||||
|
||||
inline float32 b2BroadPhase::GetTreeQuality() const
|
||||
{
|
||||
return m_tree.GetAreaRatio();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void b2BroadPhase::UpdatePairs(T* callback)
|
||||
{
|
||||
// Reset pair buffer
|
||||
m_pairCount = 0;
|
||||
|
||||
// Perform tree queries for all moving proxies.
|
||||
for (int32 i = 0; i < m_moveCount; ++i)
|
||||
{
|
||||
m_queryProxyId = m_moveBuffer[i];
|
||||
if (m_queryProxyId == e_nullProxy)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// We have to query the tree with the fat AABB so that
|
||||
// we don't fail to create a pair that may touch later.
|
||||
const b2AABB& fatAABB = m_tree.GetFatAABB(m_queryProxyId);
|
||||
|
||||
// Query tree, create pairs and add them pair buffer.
|
||||
m_tree.Query(this, fatAABB);
|
||||
}
|
||||
|
||||
// Reset move buffer
|
||||
m_moveCount = 0;
|
||||
|
||||
// Sort the pair buffer to expose duplicates.
|
||||
std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan);
|
||||
|
||||
// Send the pairs back to the client.
|
||||
int32 i = 0;
|
||||
while (i < m_pairCount)
|
||||
{
|
||||
b2Pair* primaryPair = m_pairBuffer + i;
|
||||
void* userDataA = m_tree.GetUserData(primaryPair->proxyIdA);
|
||||
void* userDataB = m_tree.GetUserData(primaryPair->proxyIdB);
|
||||
|
||||
callback->AddPair(userDataA, userDataB);
|
||||
++i;
|
||||
|
||||
// Skip any duplicate pairs.
|
||||
while (i < m_pairCount)
|
||||
{
|
||||
b2Pair* pair = m_pairBuffer + i;
|
||||
if (pair->proxyIdA != primaryPair->proxyIdA || pair->proxyIdB != primaryPair->proxyIdB)
|
||||
{
|
||||
break;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
// Try to keep the tree balanced.
|
||||
//m_tree.Rebalance(4);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline void b2BroadPhase::Query(T* callback, const b2AABB& aabb) const
|
||||
{
|
||||
m_tree.Query(callback, aabb);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline void b2BroadPhase::RayCast(T* callback, const b2RayCastInput& input) const
|
||||
{
|
||||
m_tree.RayCast(callback, input);
|
||||
}
|
||||
|
||||
inline void b2BroadPhase::ShiftOrigin(const b2Vec2& newOrigin)
|
||||
{
|
||||
m_tree.ShiftOrigin(newOrigin);
|
||||
}
|
||||
|
||||
#endif
|
||||
-154
@@ -1,154 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "Box2D/Collision/b2Collision.h"
|
||||
#include "Box2D/Collision/Shapes/b2CircleShape.h"
|
||||
#include "Box2D/Collision/Shapes/b2PolygonShape.h"
|
||||
|
||||
void b2CollideCircles(
|
||||
b2Manifold* manifold,
|
||||
const b2CircleShape* circleA, const b2Transform& xfA,
|
||||
const b2CircleShape* circleB, const b2Transform& xfB)
|
||||
{
|
||||
manifold->pointCount = 0;
|
||||
|
||||
b2Vec2 pA = b2Mul(xfA, circleA->m_p);
|
||||
b2Vec2 pB = b2Mul(xfB, circleB->m_p);
|
||||
|
||||
b2Vec2 d = pB - pA;
|
||||
float32 distSqr = b2Dot(d, d);
|
||||
float32 rA = circleA->m_radius, rB = circleB->m_radius;
|
||||
float32 radius = rA + rB;
|
||||
if (distSqr > radius * radius)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
manifold->type = b2Manifold::e_circles;
|
||||
manifold->localPoint = circleA->m_p;
|
||||
manifold->localNormal.SetZero();
|
||||
manifold->pointCount = 1;
|
||||
|
||||
manifold->points[0].localPoint = circleB->m_p;
|
||||
manifold->points[0].id.key = 0;
|
||||
}
|
||||
|
||||
void b2CollidePolygonAndCircle(
|
||||
b2Manifold* manifold,
|
||||
const b2PolygonShape* polygonA, const b2Transform& xfA,
|
||||
const b2CircleShape* circleB, const b2Transform& xfB)
|
||||
{
|
||||
manifold->pointCount = 0;
|
||||
|
||||
// Compute circle position in the frame of the polygon.
|
||||
b2Vec2 c = b2Mul(xfB, circleB->m_p);
|
||||
b2Vec2 cLocal = b2MulT(xfA, c);
|
||||
|
||||
// Find the min separating edge.
|
||||
int32 normalIndex = 0;
|
||||
float32 separation = -b2_maxFloat;
|
||||
float32 radius = polygonA->m_radius + circleB->m_radius;
|
||||
int32 vertexCount = polygonA->m_count;
|
||||
const b2Vec2* vertices = polygonA->m_vertices;
|
||||
const b2Vec2* normals = polygonA->m_normals;
|
||||
|
||||
for (int32 i = 0; i < vertexCount; ++i)
|
||||
{
|
||||
float32 s = b2Dot(normals[i], cLocal - vertices[i]);
|
||||
|
||||
if (s > radius)
|
||||
{
|
||||
// Early out.
|
||||
return;
|
||||
}
|
||||
|
||||
if (s > separation)
|
||||
{
|
||||
separation = s;
|
||||
normalIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
// Vertices that subtend the incident face.
|
||||
int32 vertIndex1 = normalIndex;
|
||||
int32 vertIndex2 = vertIndex1 + 1 < vertexCount ? vertIndex1 + 1 : 0;
|
||||
b2Vec2 v1 = vertices[vertIndex1];
|
||||
b2Vec2 v2 = vertices[vertIndex2];
|
||||
|
||||
// If the center is inside the polygon ...
|
||||
if (separation < b2_epsilon)
|
||||
{
|
||||
manifold->pointCount = 1;
|
||||
manifold->type = b2Manifold::e_faceA;
|
||||
manifold->localNormal = normals[normalIndex];
|
||||
manifold->localPoint = 0.5f * (v1 + v2);
|
||||
manifold->points[0].localPoint = circleB->m_p;
|
||||
manifold->points[0].id.key = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// Compute barycentric coordinates
|
||||
float32 u1 = b2Dot(cLocal - v1, v2 - v1);
|
||||
float32 u2 = b2Dot(cLocal - v2, v1 - v2);
|
||||
if (u1 <= 0.0f)
|
||||
{
|
||||
if (b2DistanceSquared(cLocal, v1) > radius * radius)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
manifold->pointCount = 1;
|
||||
manifold->type = b2Manifold::e_faceA;
|
||||
manifold->localNormal = cLocal - v1;
|
||||
manifold->localNormal.Normalize();
|
||||
manifold->localPoint = v1;
|
||||
manifold->points[0].localPoint = circleB->m_p;
|
||||
manifold->points[0].id.key = 0;
|
||||
}
|
||||
else if (u2 <= 0.0f)
|
||||
{
|
||||
if (b2DistanceSquared(cLocal, v2) > radius * radius)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
manifold->pointCount = 1;
|
||||
manifold->type = b2Manifold::e_faceA;
|
||||
manifold->localNormal = cLocal - v2;
|
||||
manifold->localNormal.Normalize();
|
||||
manifold->localPoint = v2;
|
||||
manifold->points[0].localPoint = circleB->m_p;
|
||||
manifold->points[0].id.key = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
b2Vec2 faceCenter = 0.5f * (v1 + v2);
|
||||
float32 s = b2Dot(cLocal - faceCenter, normals[vertIndex1]);
|
||||
if (s > radius)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
manifold->pointCount = 1;
|
||||
manifold->type = b2Manifold::e_faceA;
|
||||
manifold->localNormal = normals[vertIndex1];
|
||||
manifold->localPoint = faceCenter;
|
||||
manifold->points[0].localPoint = circleB->m_p;
|
||||
manifold->points[0].id.key = 0;
|
||||
}
|
||||
}
|
||||
-698
@@ -1,698 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "Box2D/Collision/b2Collision.h"
|
||||
#include "Box2D/Collision/Shapes/b2CircleShape.h"
|
||||
#include "Box2D/Collision/Shapes/b2EdgeShape.h"
|
||||
#include "Box2D/Collision/Shapes/b2PolygonShape.h"
|
||||
|
||||
|
||||
// Compute contact points for edge versus circle.
|
||||
// This accounts for edge connectivity.
|
||||
void b2CollideEdgeAndCircle(b2Manifold* manifold,
|
||||
const b2EdgeShape* edgeA, const b2Transform& xfA,
|
||||
const b2CircleShape* circleB, const b2Transform& xfB)
|
||||
{
|
||||
manifold->pointCount = 0;
|
||||
|
||||
// Compute circle in frame of edge
|
||||
b2Vec2 Q = b2MulT(xfA, b2Mul(xfB, circleB->m_p));
|
||||
|
||||
b2Vec2 A = edgeA->m_vertex1, B = edgeA->m_vertex2;
|
||||
b2Vec2 e = B - A;
|
||||
|
||||
// Barycentric coordinates
|
||||
float32 u = b2Dot(e, B - Q);
|
||||
float32 v = b2Dot(e, Q - A);
|
||||
|
||||
float32 radius = edgeA->m_radius + circleB->m_radius;
|
||||
|
||||
b2ContactFeature cf;
|
||||
cf.indexB = 0;
|
||||
cf.typeB = b2ContactFeature::e_vertex;
|
||||
|
||||
// Region A
|
||||
if (v <= 0.0f)
|
||||
{
|
||||
b2Vec2 P = A;
|
||||
b2Vec2 d = Q - P;
|
||||
float32 dd = b2Dot(d, d);
|
||||
if (dd > radius * radius)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Is there an edge connected to A?
|
||||
if (edgeA->m_hasVertex0)
|
||||
{
|
||||
b2Vec2 A1 = edgeA->m_vertex0;
|
||||
b2Vec2 B1 = A;
|
||||
b2Vec2 e1 = B1 - A1;
|
||||
float32 u1 = b2Dot(e1, B1 - Q);
|
||||
|
||||
// Is the circle in Region AB of the previous edge?
|
||||
if (u1 > 0.0f)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
cf.indexA = 0;
|
||||
cf.typeA = b2ContactFeature::e_vertex;
|
||||
manifold->pointCount = 1;
|
||||
manifold->type = b2Manifold::e_circles;
|
||||
manifold->localNormal.SetZero();
|
||||
manifold->localPoint = P;
|
||||
manifold->points[0].id.key = 0;
|
||||
manifold->points[0].id.cf = cf;
|
||||
manifold->points[0].localPoint = circleB->m_p;
|
||||
return;
|
||||
}
|
||||
|
||||
// Region B
|
||||
if (u <= 0.0f)
|
||||
{
|
||||
b2Vec2 P = B;
|
||||
b2Vec2 d = Q - P;
|
||||
float32 dd = b2Dot(d, d);
|
||||
if (dd > radius * radius)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Is there an edge connected to B?
|
||||
if (edgeA->m_hasVertex3)
|
||||
{
|
||||
b2Vec2 B2 = edgeA->m_vertex3;
|
||||
b2Vec2 A2 = B;
|
||||
b2Vec2 e2 = B2 - A2;
|
||||
float32 v2 = b2Dot(e2, Q - A2);
|
||||
|
||||
// Is the circle in Region AB of the next edge?
|
||||
if (v2 > 0.0f)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
cf.indexA = 1;
|
||||
cf.typeA = b2ContactFeature::e_vertex;
|
||||
manifold->pointCount = 1;
|
||||
manifold->type = b2Manifold::e_circles;
|
||||
manifold->localNormal.SetZero();
|
||||
manifold->localPoint = P;
|
||||
manifold->points[0].id.key = 0;
|
||||
manifold->points[0].id.cf = cf;
|
||||
manifold->points[0].localPoint = circleB->m_p;
|
||||
return;
|
||||
}
|
||||
|
||||
// Region AB
|
||||
float32 den = b2Dot(e, e);
|
||||
b2Assert(den > 0.0f);
|
||||
b2Vec2 P = (1.0f / den) * (u * A + v * B);
|
||||
b2Vec2 d = Q - P;
|
||||
float32 dd = b2Dot(d, d);
|
||||
if (dd > radius * radius)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
b2Vec2 n(-e.y, e.x);
|
||||
if (b2Dot(n, Q - A) < 0.0f)
|
||||
{
|
||||
n.Set(-n.x, -n.y);
|
||||
}
|
||||
n.Normalize();
|
||||
|
||||
cf.indexA = 0;
|
||||
cf.typeA = b2ContactFeature::e_face;
|
||||
manifold->pointCount = 1;
|
||||
manifold->type = b2Manifold::e_faceA;
|
||||
manifold->localNormal = n;
|
||||
manifold->localPoint = A;
|
||||
manifold->points[0].id.key = 0;
|
||||
manifold->points[0].id.cf = cf;
|
||||
manifold->points[0].localPoint = circleB->m_p;
|
||||
}
|
||||
|
||||
// This structure is used to keep track of the best separating axis.
|
||||
struct b2EPAxis
|
||||
{
|
||||
enum Type
|
||||
{
|
||||
e_unknown,
|
||||
e_edgeA,
|
||||
e_edgeB
|
||||
};
|
||||
|
||||
Type type;
|
||||
int32 index;
|
||||
float32 separation;
|
||||
};
|
||||
|
||||
// This holds polygon B expressed in frame A.
|
||||
struct b2TempPolygon
|
||||
{
|
||||
b2Vec2 vertices[b2_maxPolygonVertices];
|
||||
b2Vec2 normals[b2_maxPolygonVertices];
|
||||
int32 count;
|
||||
};
|
||||
|
||||
// Reference face used for clipping
|
||||
struct b2ReferenceFace
|
||||
{
|
||||
int32 i1, i2;
|
||||
|
||||
b2Vec2 v1, v2;
|
||||
|
||||
b2Vec2 normal;
|
||||
|
||||
b2Vec2 sideNormal1;
|
||||
float32 sideOffset1;
|
||||
|
||||
b2Vec2 sideNormal2;
|
||||
float32 sideOffset2;
|
||||
};
|
||||
|
||||
// This class collides and edge and a polygon, taking into account edge adjacency.
|
||||
struct b2EPCollider
|
||||
{
|
||||
void Collide(b2Manifold* manifold, const b2EdgeShape* edgeA, const b2Transform& xfA,
|
||||
const b2PolygonShape* polygonB, const b2Transform& xfB);
|
||||
b2EPAxis ComputeEdgeSeparation();
|
||||
b2EPAxis ComputePolygonSeparation();
|
||||
|
||||
enum VertexType
|
||||
{
|
||||
e_isolated,
|
||||
e_concave,
|
||||
e_convex
|
||||
};
|
||||
|
||||
b2TempPolygon m_polygonB;
|
||||
|
||||
b2Transform m_xf;
|
||||
b2Vec2 m_centroidB;
|
||||
b2Vec2 m_v0, m_v1, m_v2, m_v3;
|
||||
b2Vec2 m_normal0, m_normal1, m_normal2;
|
||||
b2Vec2 m_normal;
|
||||
VertexType m_type1, m_type2;
|
||||
b2Vec2 m_lowerLimit, m_upperLimit;
|
||||
float32 m_radius;
|
||||
bool m_front;
|
||||
};
|
||||
|
||||
// Algorithm:
|
||||
// 1. Classify v1 and v2
|
||||
// 2. Classify polygon centroid as front or back
|
||||
// 3. Flip normal if necessary
|
||||
// 4. Initialize normal range to [-pi, pi] about face normal
|
||||
// 5. Adjust normal range according to adjacent edges
|
||||
// 6. Visit each separating axes, only accept axes within the range
|
||||
// 7. Return if _any_ axis indicates separation
|
||||
// 8. Clip
|
||||
void b2EPCollider::Collide(b2Manifold* manifold, const b2EdgeShape* edgeA, const b2Transform& xfA,
|
||||
const b2PolygonShape* polygonB, const b2Transform& xfB)
|
||||
{
|
||||
m_xf = b2MulT(xfA, xfB);
|
||||
|
||||
m_centroidB = b2Mul(m_xf, polygonB->m_centroid);
|
||||
|
||||
m_v0 = edgeA->m_vertex0;
|
||||
m_v1 = edgeA->m_vertex1;
|
||||
m_v2 = edgeA->m_vertex2;
|
||||
m_v3 = edgeA->m_vertex3;
|
||||
|
||||
bool hasVertex0 = edgeA->m_hasVertex0;
|
||||
bool hasVertex3 = edgeA->m_hasVertex3;
|
||||
|
||||
b2Vec2 edge1 = m_v2 - m_v1;
|
||||
edge1.Normalize();
|
||||
m_normal1.Set(edge1.y, -edge1.x);
|
||||
float32 offset1 = b2Dot(m_normal1, m_centroidB - m_v1);
|
||||
float32 offset0 = 0.0f, offset2 = 0.0f;
|
||||
bool convex1 = false, convex2 = false;
|
||||
|
||||
// Is there a preceding edge?
|
||||
if (hasVertex0)
|
||||
{
|
||||
b2Vec2 edge0 = m_v1 - m_v0;
|
||||
edge0.Normalize();
|
||||
m_normal0.Set(edge0.y, -edge0.x);
|
||||
convex1 = b2Cross(edge0, edge1) >= 0.0f;
|
||||
offset0 = b2Dot(m_normal0, m_centroidB - m_v0);
|
||||
}
|
||||
|
||||
// Is there a following edge?
|
||||
if (hasVertex3)
|
||||
{
|
||||
b2Vec2 edge2 = m_v3 - m_v2;
|
||||
edge2.Normalize();
|
||||
m_normal2.Set(edge2.y, -edge2.x);
|
||||
convex2 = b2Cross(edge1, edge2) > 0.0f;
|
||||
offset2 = b2Dot(m_normal2, m_centroidB - m_v2);
|
||||
}
|
||||
|
||||
// Determine front or back collision. Determine collision normal limits.
|
||||
if (hasVertex0 && hasVertex3)
|
||||
{
|
||||
if (convex1 && convex2)
|
||||
{
|
||||
m_front = offset0 >= 0.0f || offset1 >= 0.0f || offset2 >= 0.0f;
|
||||
if (m_front)
|
||||
{
|
||||
m_normal = m_normal1;
|
||||
m_lowerLimit = m_normal0;
|
||||
m_upperLimit = m_normal2;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_normal = -m_normal1;
|
||||
m_lowerLimit = -m_normal1;
|
||||
m_upperLimit = -m_normal1;
|
||||
}
|
||||
}
|
||||
else if (convex1)
|
||||
{
|
||||
m_front = offset0 >= 0.0f || (offset1 >= 0.0f && offset2 >= 0.0f);
|
||||
if (m_front)
|
||||
{
|
||||
m_normal = m_normal1;
|
||||
m_lowerLimit = m_normal0;
|
||||
m_upperLimit = m_normal1;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_normal = -m_normal1;
|
||||
m_lowerLimit = -m_normal2;
|
||||
m_upperLimit = -m_normal1;
|
||||
}
|
||||
}
|
||||
else if (convex2)
|
||||
{
|
||||
m_front = offset2 >= 0.0f || (offset0 >= 0.0f && offset1 >= 0.0f);
|
||||
if (m_front)
|
||||
{
|
||||
m_normal = m_normal1;
|
||||
m_lowerLimit = m_normal1;
|
||||
m_upperLimit = m_normal2;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_normal = -m_normal1;
|
||||
m_lowerLimit = -m_normal1;
|
||||
m_upperLimit = -m_normal0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_front = offset0 >= 0.0f && offset1 >= 0.0f && offset2 >= 0.0f;
|
||||
if (m_front)
|
||||
{
|
||||
m_normal = m_normal1;
|
||||
m_lowerLimit = m_normal1;
|
||||
m_upperLimit = m_normal1;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_normal = -m_normal1;
|
||||
m_lowerLimit = -m_normal2;
|
||||
m_upperLimit = -m_normal0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (hasVertex0)
|
||||
{
|
||||
if (convex1)
|
||||
{
|
||||
m_front = offset0 >= 0.0f || offset1 >= 0.0f;
|
||||
if (m_front)
|
||||
{
|
||||
m_normal = m_normal1;
|
||||
m_lowerLimit = m_normal0;
|
||||
m_upperLimit = -m_normal1;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_normal = -m_normal1;
|
||||
m_lowerLimit = m_normal1;
|
||||
m_upperLimit = -m_normal1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_front = offset0 >= 0.0f && offset1 >= 0.0f;
|
||||
if (m_front)
|
||||
{
|
||||
m_normal = m_normal1;
|
||||
m_lowerLimit = m_normal1;
|
||||
m_upperLimit = -m_normal1;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_normal = -m_normal1;
|
||||
m_lowerLimit = m_normal1;
|
||||
m_upperLimit = -m_normal0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (hasVertex3)
|
||||
{
|
||||
if (convex2)
|
||||
{
|
||||
m_front = offset1 >= 0.0f || offset2 >= 0.0f;
|
||||
if (m_front)
|
||||
{
|
||||
m_normal = m_normal1;
|
||||
m_lowerLimit = -m_normal1;
|
||||
m_upperLimit = m_normal2;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_normal = -m_normal1;
|
||||
m_lowerLimit = -m_normal1;
|
||||
m_upperLimit = m_normal1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_front = offset1 >= 0.0f && offset2 >= 0.0f;
|
||||
if (m_front)
|
||||
{
|
||||
m_normal = m_normal1;
|
||||
m_lowerLimit = -m_normal1;
|
||||
m_upperLimit = m_normal1;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_normal = -m_normal1;
|
||||
m_lowerLimit = -m_normal2;
|
||||
m_upperLimit = m_normal1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_front = offset1 >= 0.0f;
|
||||
if (m_front)
|
||||
{
|
||||
m_normal = m_normal1;
|
||||
m_lowerLimit = -m_normal1;
|
||||
m_upperLimit = -m_normal1;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_normal = -m_normal1;
|
||||
m_lowerLimit = m_normal1;
|
||||
m_upperLimit = m_normal1;
|
||||
}
|
||||
}
|
||||
|
||||
// Get polygonB in frameA
|
||||
m_polygonB.count = polygonB->m_count;
|
||||
for (int32 i = 0; i < polygonB->m_count; ++i)
|
||||
{
|
||||
m_polygonB.vertices[i] = b2Mul(m_xf, polygonB->m_vertices[i]);
|
||||
m_polygonB.normals[i] = b2Mul(m_xf.q, polygonB->m_normals[i]);
|
||||
}
|
||||
|
||||
m_radius = polygonB->m_radius + edgeA->m_radius;
|
||||
|
||||
manifold->pointCount = 0;
|
||||
|
||||
b2EPAxis edgeAxis = ComputeEdgeSeparation();
|
||||
|
||||
// If no valid normal can be found than this edge should not collide.
|
||||
if (edgeAxis.type == b2EPAxis::e_unknown)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (edgeAxis.separation > m_radius)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
b2EPAxis polygonAxis = ComputePolygonSeparation();
|
||||
if (polygonAxis.type != b2EPAxis::e_unknown && polygonAxis.separation > m_radius)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Use hysteresis for jitter reduction.
|
||||
const float32 k_relativeTol = 0.98f;
|
||||
const float32 k_absoluteTol = 0.001f;
|
||||
|
||||
b2EPAxis primaryAxis;
|
||||
if (polygonAxis.type == b2EPAxis::e_unknown)
|
||||
{
|
||||
primaryAxis = edgeAxis;
|
||||
}
|
||||
else if (polygonAxis.separation > k_relativeTol * edgeAxis.separation + k_absoluteTol)
|
||||
{
|
||||
primaryAxis = polygonAxis;
|
||||
}
|
||||
else
|
||||
{
|
||||
primaryAxis = edgeAxis;
|
||||
}
|
||||
|
||||
b2ClipVertex ie[2];
|
||||
b2ReferenceFace rf;
|
||||
if (primaryAxis.type == b2EPAxis::e_edgeA)
|
||||
{
|
||||
manifold->type = b2Manifold::e_faceA;
|
||||
|
||||
// Search for the polygon normal that is most anti-parallel to the edge normal.
|
||||
int32 bestIndex = 0;
|
||||
float32 bestValue = b2Dot(m_normal, m_polygonB.normals[0]);
|
||||
for (int32 i = 1; i < m_polygonB.count; ++i)
|
||||
{
|
||||
float32 value = b2Dot(m_normal, m_polygonB.normals[i]);
|
||||
if (value < bestValue)
|
||||
{
|
||||
bestValue = value;
|
||||
bestIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
int32 i1 = bestIndex;
|
||||
int32 i2 = i1 + 1 < m_polygonB.count ? i1 + 1 : 0;
|
||||
|
||||
ie[0].v = m_polygonB.vertices[i1];
|
||||
ie[0].id.cf.indexA = 0;
|
||||
ie[0].id.cf.indexB = static_cast<uint8>(i1);
|
||||
ie[0].id.cf.typeA = b2ContactFeature::e_face;
|
||||
ie[0].id.cf.typeB = b2ContactFeature::e_vertex;
|
||||
|
||||
ie[1].v = m_polygonB.vertices[i2];
|
||||
ie[1].id.cf.indexA = 0;
|
||||
ie[1].id.cf.indexB = static_cast<uint8>(i2);
|
||||
ie[1].id.cf.typeA = b2ContactFeature::e_face;
|
||||
ie[1].id.cf.typeB = b2ContactFeature::e_vertex;
|
||||
|
||||
if (m_front)
|
||||
{
|
||||
rf.i1 = 0;
|
||||
rf.i2 = 1;
|
||||
rf.v1 = m_v1;
|
||||
rf.v2 = m_v2;
|
||||
rf.normal = m_normal1;
|
||||
}
|
||||
else
|
||||
{
|
||||
rf.i1 = 1;
|
||||
rf.i2 = 0;
|
||||
rf.v1 = m_v2;
|
||||
rf.v2 = m_v1;
|
||||
rf.normal = -m_normal1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
manifold->type = b2Manifold::e_faceB;
|
||||
|
||||
ie[0].v = m_v1;
|
||||
ie[0].id.cf.indexA = 0;
|
||||
ie[0].id.cf.indexB = static_cast<uint8>(primaryAxis.index);
|
||||
ie[0].id.cf.typeA = b2ContactFeature::e_vertex;
|
||||
ie[0].id.cf.typeB = b2ContactFeature::e_face;
|
||||
|
||||
ie[1].v = m_v2;
|
||||
ie[1].id.cf.indexA = 0;
|
||||
ie[1].id.cf.indexB = static_cast<uint8>(primaryAxis.index);
|
||||
ie[1].id.cf.typeA = b2ContactFeature::e_vertex;
|
||||
ie[1].id.cf.typeB = b2ContactFeature::e_face;
|
||||
|
||||
rf.i1 = primaryAxis.index;
|
||||
rf.i2 = rf.i1 + 1 < m_polygonB.count ? rf.i1 + 1 : 0;
|
||||
rf.v1 = m_polygonB.vertices[rf.i1];
|
||||
rf.v2 = m_polygonB.vertices[rf.i2];
|
||||
rf.normal = m_polygonB.normals[rf.i1];
|
||||
}
|
||||
|
||||
rf.sideNormal1.Set(rf.normal.y, -rf.normal.x);
|
||||
rf.sideNormal2 = -rf.sideNormal1;
|
||||
rf.sideOffset1 = b2Dot(rf.sideNormal1, rf.v1);
|
||||
rf.sideOffset2 = b2Dot(rf.sideNormal2, rf.v2);
|
||||
|
||||
// Clip incident edge against extruded edge1 side edges.
|
||||
b2ClipVertex clipPoints1[2];
|
||||
b2ClipVertex clipPoints2[2];
|
||||
int32 np;
|
||||
|
||||
// Clip to box side 1
|
||||
np = b2ClipSegmentToLine(clipPoints1, ie, rf.sideNormal1, rf.sideOffset1, rf.i1);
|
||||
|
||||
if (np < b2_maxManifoldPoints)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Clip to negative box side 1
|
||||
np = b2ClipSegmentToLine(clipPoints2, clipPoints1, rf.sideNormal2, rf.sideOffset2, rf.i2);
|
||||
|
||||
if (np < b2_maxManifoldPoints)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Now clipPoints2 contains the clipped points.
|
||||
if (primaryAxis.type == b2EPAxis::e_edgeA)
|
||||
{
|
||||
manifold->localNormal = rf.normal;
|
||||
manifold->localPoint = rf.v1;
|
||||
}
|
||||
else
|
||||
{
|
||||
manifold->localNormal = polygonB->m_normals[rf.i1];
|
||||
manifold->localPoint = polygonB->m_vertices[rf.i1];
|
||||
}
|
||||
|
||||
int32 pointCount = 0;
|
||||
for (int32 i = 0; i < b2_maxManifoldPoints; ++i)
|
||||
{
|
||||
float32 separation;
|
||||
|
||||
separation = b2Dot(rf.normal, clipPoints2[i].v - rf.v1);
|
||||
|
||||
if (separation <= m_radius)
|
||||
{
|
||||
b2ManifoldPoint* cp = manifold->points + pointCount;
|
||||
|
||||
if (primaryAxis.type == b2EPAxis::e_edgeA)
|
||||
{
|
||||
cp->localPoint = b2MulT(m_xf, clipPoints2[i].v);
|
||||
cp->id = clipPoints2[i].id;
|
||||
}
|
||||
else
|
||||
{
|
||||
cp->localPoint = clipPoints2[i].v;
|
||||
cp->id.cf.typeA = clipPoints2[i].id.cf.typeB;
|
||||
cp->id.cf.typeB = clipPoints2[i].id.cf.typeA;
|
||||
cp->id.cf.indexA = clipPoints2[i].id.cf.indexB;
|
||||
cp->id.cf.indexB = clipPoints2[i].id.cf.indexA;
|
||||
}
|
||||
|
||||
++pointCount;
|
||||
}
|
||||
}
|
||||
|
||||
manifold->pointCount = pointCount;
|
||||
}
|
||||
|
||||
b2EPAxis b2EPCollider::ComputeEdgeSeparation()
|
||||
{
|
||||
b2EPAxis axis;
|
||||
axis.type = b2EPAxis::e_edgeA;
|
||||
axis.index = m_front ? 0 : 1;
|
||||
axis.separation = FLT_MAX;
|
||||
|
||||
for (int32 i = 0; i < m_polygonB.count; ++i)
|
||||
{
|
||||
float32 s = b2Dot(m_normal, m_polygonB.vertices[i] - m_v1);
|
||||
if (s < axis.separation)
|
||||
{
|
||||
axis.separation = s;
|
||||
}
|
||||
}
|
||||
|
||||
return axis;
|
||||
}
|
||||
|
||||
b2EPAxis b2EPCollider::ComputePolygonSeparation()
|
||||
{
|
||||
b2EPAxis axis;
|
||||
axis.type = b2EPAxis::e_unknown;
|
||||
axis.index = -1;
|
||||
axis.separation = -FLT_MAX;
|
||||
|
||||
b2Vec2 perp(-m_normal.y, m_normal.x);
|
||||
|
||||
for (int32 i = 0; i < m_polygonB.count; ++i)
|
||||
{
|
||||
b2Vec2 n = -m_polygonB.normals[i];
|
||||
|
||||
float32 s1 = b2Dot(n, m_polygonB.vertices[i] - m_v1);
|
||||
float32 s2 = b2Dot(n, m_polygonB.vertices[i] - m_v2);
|
||||
float32 s = b2Min(s1, s2);
|
||||
|
||||
if (s > m_radius)
|
||||
{
|
||||
// No collision
|
||||
axis.type = b2EPAxis::e_edgeB;
|
||||
axis.index = i;
|
||||
axis.separation = s;
|
||||
return axis;
|
||||
}
|
||||
|
||||
// Adjacency
|
||||
if (b2Dot(n, perp) >= 0.0f)
|
||||
{
|
||||
if (b2Dot(n - m_upperLimit, m_normal) < -b2_angularSlop)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (b2Dot(n - m_lowerLimit, m_normal) < -b2_angularSlop)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (s > axis.separation)
|
||||
{
|
||||
axis.type = b2EPAxis::e_edgeB;
|
||||
axis.index = i;
|
||||
axis.separation = s;
|
||||
}
|
||||
}
|
||||
|
||||
return axis;
|
||||
}
|
||||
|
||||
void b2CollideEdgeAndPolygon( b2Manifold* manifold,
|
||||
const b2EdgeShape* edgeA, const b2Transform& xfA,
|
||||
const b2PolygonShape* polygonB, const b2Transform& xfB)
|
||||
{
|
||||
b2EPCollider collider;
|
||||
collider.Collide(manifold, edgeA, xfA, polygonB, xfB);
|
||||
}
|
||||
-239
@@ -1,239 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "Box2D/Collision/b2Collision.h"
|
||||
#include "Box2D/Collision/Shapes/b2PolygonShape.h"
|
||||
|
||||
// Find the max separation between poly1 and poly2 using edge normals from poly1.
|
||||
static float32 b2FindMaxSeparation(int32* edgeIndex,
|
||||
const b2PolygonShape* poly1, const b2Transform& xf1,
|
||||
const b2PolygonShape* poly2, const b2Transform& xf2)
|
||||
{
|
||||
int32 count1 = poly1->m_count;
|
||||
int32 count2 = poly2->m_count;
|
||||
const b2Vec2* n1s = poly1->m_normals;
|
||||
const b2Vec2* v1s = poly1->m_vertices;
|
||||
const b2Vec2* v2s = poly2->m_vertices;
|
||||
b2Transform xf = b2MulT(xf2, xf1);
|
||||
|
||||
int32 bestIndex = 0;
|
||||
float32 maxSeparation = -b2_maxFloat;
|
||||
for (int32 i = 0; i < count1; ++i)
|
||||
{
|
||||
// Get poly1 normal in frame2.
|
||||
b2Vec2 n = b2Mul(xf.q, n1s[i]);
|
||||
b2Vec2 v1 = b2Mul(xf, v1s[i]);
|
||||
|
||||
// Find deepest point for normal i.
|
||||
float32 si = b2_maxFloat;
|
||||
for (int32 j = 0; j < count2; ++j)
|
||||
{
|
||||
float32 sij = b2Dot(n, v2s[j] - v1);
|
||||
if (sij < si)
|
||||
{
|
||||
si = sij;
|
||||
}
|
||||
}
|
||||
|
||||
if (si > maxSeparation)
|
||||
{
|
||||
maxSeparation = si;
|
||||
bestIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
*edgeIndex = bestIndex;
|
||||
return maxSeparation;
|
||||
}
|
||||
|
||||
static void b2FindIncidentEdge(b2ClipVertex c[2],
|
||||
const b2PolygonShape* poly1, const b2Transform& xf1, int32 edge1,
|
||||
const b2PolygonShape* poly2, const b2Transform& xf2)
|
||||
{
|
||||
const b2Vec2* normals1 = poly1->m_normals;
|
||||
|
||||
int32 count2 = poly2->m_count;
|
||||
const b2Vec2* vertices2 = poly2->m_vertices;
|
||||
const b2Vec2* normals2 = poly2->m_normals;
|
||||
|
||||
b2Assert(0 <= edge1 && edge1 < poly1->m_count);
|
||||
|
||||
// Get the normal of the reference edge in poly2's frame.
|
||||
b2Vec2 normal1 = b2MulT(xf2.q, b2Mul(xf1.q, normals1[edge1]));
|
||||
|
||||
// Find the incident edge on poly2.
|
||||
int32 index = 0;
|
||||
float32 minDot = b2_maxFloat;
|
||||
for (int32 i = 0; i < count2; ++i)
|
||||
{
|
||||
float32 dot = b2Dot(normal1, normals2[i]);
|
||||
if (dot < minDot)
|
||||
{
|
||||
minDot = dot;
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
|
||||
// Build the clip vertices for the incident edge.
|
||||
int32 i1 = index;
|
||||
int32 i2 = i1 + 1 < count2 ? i1 + 1 : 0;
|
||||
|
||||
c[0].v = b2Mul(xf2, vertices2[i1]);
|
||||
c[0].id.cf.indexA = (uint8)edge1;
|
||||
c[0].id.cf.indexB = (uint8)i1;
|
||||
c[0].id.cf.typeA = b2ContactFeature::e_face;
|
||||
c[0].id.cf.typeB = b2ContactFeature::e_vertex;
|
||||
|
||||
c[1].v = b2Mul(xf2, vertices2[i2]);
|
||||
c[1].id.cf.indexA = (uint8)edge1;
|
||||
c[1].id.cf.indexB = (uint8)i2;
|
||||
c[1].id.cf.typeA = b2ContactFeature::e_face;
|
||||
c[1].id.cf.typeB = b2ContactFeature::e_vertex;
|
||||
}
|
||||
|
||||
// Find edge normal of max separation on A - return if separating axis is found
|
||||
// Find edge normal of max separation on B - return if separation axis is found
|
||||
// Choose reference edge as min(minA, minB)
|
||||
// Find incident edge
|
||||
// Clip
|
||||
|
||||
// The normal points from 1 to 2
|
||||
void b2CollidePolygons(b2Manifold* manifold,
|
||||
const b2PolygonShape* polyA, const b2Transform& xfA,
|
||||
const b2PolygonShape* polyB, const b2Transform& xfB)
|
||||
{
|
||||
manifold->pointCount = 0;
|
||||
float32 totalRadius = polyA->m_radius + polyB->m_radius;
|
||||
|
||||
int32 edgeA = 0;
|
||||
float32 separationA = b2FindMaxSeparation(&edgeA, polyA, xfA, polyB, xfB);
|
||||
if (separationA > totalRadius)
|
||||
return;
|
||||
|
||||
int32 edgeB = 0;
|
||||
float32 separationB = b2FindMaxSeparation(&edgeB, polyB, xfB, polyA, xfA);
|
||||
if (separationB > totalRadius)
|
||||
return;
|
||||
|
||||
const b2PolygonShape* poly1; // reference polygon
|
||||
const b2PolygonShape* poly2; // incident polygon
|
||||
b2Transform xf1, xf2;
|
||||
int32 edge1; // reference edge
|
||||
uint8 flip;
|
||||
const float32 k_tol = 0.1f * b2_linearSlop;
|
||||
|
||||
if (separationB > separationA + k_tol)
|
||||
{
|
||||
poly1 = polyB;
|
||||
poly2 = polyA;
|
||||
xf1 = xfB;
|
||||
xf2 = xfA;
|
||||
edge1 = edgeB;
|
||||
manifold->type = b2Manifold::e_faceB;
|
||||
flip = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
poly1 = polyA;
|
||||
poly2 = polyB;
|
||||
xf1 = xfA;
|
||||
xf2 = xfB;
|
||||
edge1 = edgeA;
|
||||
manifold->type = b2Manifold::e_faceA;
|
||||
flip = 0;
|
||||
}
|
||||
|
||||
b2ClipVertex incidentEdge[2];
|
||||
b2FindIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2);
|
||||
|
||||
int32 count1 = poly1->m_count;
|
||||
const b2Vec2* vertices1 = poly1->m_vertices;
|
||||
|
||||
int32 iv1 = edge1;
|
||||
int32 iv2 = edge1 + 1 < count1 ? edge1 + 1 : 0;
|
||||
|
||||
b2Vec2 v11 = vertices1[iv1];
|
||||
b2Vec2 v12 = vertices1[iv2];
|
||||
|
||||
b2Vec2 localTangent = v12 - v11;
|
||||
localTangent.Normalize();
|
||||
|
||||
b2Vec2 localNormal = b2Cross(localTangent, 1.0f);
|
||||
b2Vec2 planePoint = 0.5f * (v11 + v12);
|
||||
|
||||
b2Vec2 tangent = b2Mul(xf1.q, localTangent);
|
||||
b2Vec2 normal = b2Cross(tangent, 1.0f);
|
||||
|
||||
v11 = b2Mul(xf1, v11);
|
||||
v12 = b2Mul(xf1, v12);
|
||||
|
||||
// Face offset.
|
||||
float32 frontOffset = b2Dot(normal, v11);
|
||||
|
||||
// Side offsets, extended by polytope skin thickness.
|
||||
float32 sideOffset1 = -b2Dot(tangent, v11) + totalRadius;
|
||||
float32 sideOffset2 = b2Dot(tangent, v12) + totalRadius;
|
||||
|
||||
// Clip incident edge against extruded edge1 side edges.
|
||||
b2ClipVertex clipPoints1[2];
|
||||
b2ClipVertex clipPoints2[2];
|
||||
int np;
|
||||
|
||||
// Clip to box side 1
|
||||
np = b2ClipSegmentToLine(clipPoints1, incidentEdge, -tangent, sideOffset1, iv1);
|
||||
|
||||
if (np < 2)
|
||||
return;
|
||||
|
||||
// Clip to negative box side 1
|
||||
np = b2ClipSegmentToLine(clipPoints2, clipPoints1, tangent, sideOffset2, iv2);
|
||||
|
||||
if (np < 2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Now clipPoints2 contains the clipped points.
|
||||
manifold->localNormal = localNormal;
|
||||
manifold->localPoint = planePoint;
|
||||
|
||||
int32 pointCount = 0;
|
||||
for (int32 i = 0; i < b2_maxManifoldPoints; ++i)
|
||||
{
|
||||
float32 separation = b2Dot(normal, clipPoints2[i].v) - frontOffset;
|
||||
|
||||
if (separation <= totalRadius)
|
||||
{
|
||||
b2ManifoldPoint* cp = manifold->points + pointCount;
|
||||
cp->localPoint = b2MulT(xf2, clipPoints2[i].v);
|
||||
cp->id = clipPoints2[i].id;
|
||||
if (flip)
|
||||
{
|
||||
// Swap features
|
||||
b2ContactFeature cf = cp->id.cf;
|
||||
cp->id.cf.indexA = cf.indexB;
|
||||
cp->id.cf.indexB = cf.indexA;
|
||||
cp->id.cf.typeA = cf.typeB;
|
||||
cp->id.cf.typeB = cf.typeA;
|
||||
}
|
||||
++pointCount;
|
||||
}
|
||||
}
|
||||
|
||||
manifold->pointCount = pointCount;
|
||||
}
|
||||
-252
@@ -1,252 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "Box2D/Collision/b2Collision.h"
|
||||
#include "Box2D/Collision/b2Distance.h"
|
||||
|
||||
void b2WorldManifold::Initialize(const b2Manifold* manifold,
|
||||
const b2Transform& xfA, float32 radiusA,
|
||||
const b2Transform& xfB, float32 radiusB)
|
||||
{
|
||||
if (manifold->pointCount == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (manifold->type)
|
||||
{
|
||||
case b2Manifold::e_circles:
|
||||
{
|
||||
normal.Set(1.0f, 0.0f);
|
||||
b2Vec2 pointA = b2Mul(xfA, manifold->localPoint);
|
||||
b2Vec2 pointB = b2Mul(xfB, manifold->points[0].localPoint);
|
||||
if (b2DistanceSquared(pointA, pointB) > b2_epsilon * b2_epsilon)
|
||||
{
|
||||
normal = pointB - pointA;
|
||||
normal.Normalize();
|
||||
}
|
||||
|
||||
b2Vec2 cA = pointA + radiusA * normal;
|
||||
b2Vec2 cB = pointB - radiusB * normal;
|
||||
points[0] = 0.5f * (cA + cB);
|
||||
separations[0] = b2Dot(cB - cA, normal);
|
||||
}
|
||||
break;
|
||||
|
||||
case b2Manifold::e_faceA:
|
||||
{
|
||||
normal = b2Mul(xfA.q, manifold->localNormal);
|
||||
b2Vec2 planePoint = b2Mul(xfA, manifold->localPoint);
|
||||
|
||||
for (int32 i = 0; i < manifold->pointCount; ++i)
|
||||
{
|
||||
b2Vec2 clipPoint = b2Mul(xfB, manifold->points[i].localPoint);
|
||||
b2Vec2 cA = clipPoint + (radiusA - b2Dot(clipPoint - planePoint, normal)) * normal;
|
||||
b2Vec2 cB = clipPoint - radiusB * normal;
|
||||
points[i] = 0.5f * (cA + cB);
|
||||
separations[i] = b2Dot(cB - cA, normal);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case b2Manifold::e_faceB:
|
||||
{
|
||||
normal = b2Mul(xfB.q, manifold->localNormal);
|
||||
b2Vec2 planePoint = b2Mul(xfB, manifold->localPoint);
|
||||
|
||||
for (int32 i = 0; i < manifold->pointCount; ++i)
|
||||
{
|
||||
b2Vec2 clipPoint = b2Mul(xfA, manifold->points[i].localPoint);
|
||||
b2Vec2 cB = clipPoint + (radiusB - b2Dot(clipPoint - planePoint, normal)) * normal;
|
||||
b2Vec2 cA = clipPoint - radiusA * normal;
|
||||
points[i] = 0.5f * (cA + cB);
|
||||
separations[i] = b2Dot(cA - cB, normal);
|
||||
}
|
||||
|
||||
// Ensure normal points from A to B.
|
||||
normal = -normal;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void b2GetPointStates(b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints],
|
||||
const b2Manifold* manifold1, const b2Manifold* manifold2)
|
||||
{
|
||||
for (int32 i = 0; i < b2_maxManifoldPoints; ++i)
|
||||
{
|
||||
state1[i] = b2_nullState;
|
||||
state2[i] = b2_nullState;
|
||||
}
|
||||
|
||||
// Detect persists and removes.
|
||||
for (int32 i = 0; i < manifold1->pointCount; ++i)
|
||||
{
|
||||
b2ContactID id = manifold1->points[i].id;
|
||||
|
||||
state1[i] = b2_removeState;
|
||||
|
||||
for (int32 j = 0; j < manifold2->pointCount; ++j)
|
||||
{
|
||||
if (manifold2->points[j].id.key == id.key)
|
||||
{
|
||||
state1[i] = b2_persistState;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Detect persists and adds.
|
||||
for (int32 i = 0; i < manifold2->pointCount; ++i)
|
||||
{
|
||||
b2ContactID id = manifold2->points[i].id;
|
||||
|
||||
state2[i] = b2_addState;
|
||||
|
||||
for (int32 j = 0; j < manifold1->pointCount; ++j)
|
||||
{
|
||||
if (manifold1->points[j].id.key == id.key)
|
||||
{
|
||||
state2[i] = b2_persistState;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// From Real-time Collision Detection, p179.
|
||||
bool b2AABB::RayCast(b2RayCastOutput* output, const b2RayCastInput& input) const
|
||||
{
|
||||
float32 tmin = -b2_maxFloat;
|
||||
float32 tmax = b2_maxFloat;
|
||||
|
||||
b2Vec2 p = input.p1;
|
||||
b2Vec2 d = input.p2 - input.p1;
|
||||
b2Vec2 absD = b2Abs(d);
|
||||
|
||||
b2Vec2 normal;
|
||||
|
||||
for (int32 i = 0; i < 2; ++i)
|
||||
{
|
||||
if (absD(i) < b2_epsilon)
|
||||
{
|
||||
// Parallel.
|
||||
if (p(i) < lowerBound(i) || upperBound(i) < p(i))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
float32 inv_d = 1.0f / d(i);
|
||||
float32 t1 = (lowerBound(i) - p(i)) * inv_d;
|
||||
float32 t2 = (upperBound(i) - p(i)) * inv_d;
|
||||
|
||||
// Sign of the normal vector.
|
||||
float32 s = -1.0f;
|
||||
|
||||
if (t1 > t2)
|
||||
{
|
||||
b2Swap(t1, t2);
|
||||
s = 1.0f;
|
||||
}
|
||||
|
||||
// Push the min up
|
||||
if (t1 > tmin)
|
||||
{
|
||||
normal.SetZero();
|
||||
normal(i) = s;
|
||||
tmin = t1;
|
||||
}
|
||||
|
||||
// Pull the max down
|
||||
tmax = b2Min(tmax, t2);
|
||||
|
||||
if (tmin > tmax)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Does the ray start inside the box?
|
||||
// Does the ray intersect beyond the max fraction?
|
||||
if (tmin < 0.0f || input.maxFraction < tmin)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Intersection.
|
||||
output->fraction = tmin;
|
||||
output->normal = normal;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Sutherland-Hodgman clipping.
|
||||
int32 b2ClipSegmentToLine(b2ClipVertex vOut[2], const b2ClipVertex vIn[2],
|
||||
const b2Vec2& normal, float32 offset, int32 vertexIndexA)
|
||||
{
|
||||
// Start with no output points
|
||||
int32 numOut = 0;
|
||||
|
||||
// Calculate the distance of end points to the line
|
||||
float32 distance0 = b2Dot(normal, vIn[0].v) - offset;
|
||||
float32 distance1 = b2Dot(normal, vIn[1].v) - offset;
|
||||
|
||||
// If the points are behind the plane
|
||||
if (distance0 <= 0.0f) vOut[numOut++] = vIn[0];
|
||||
if (distance1 <= 0.0f) vOut[numOut++] = vIn[1];
|
||||
|
||||
// If the points are on different sides of the plane
|
||||
if (distance0 * distance1 < 0.0f)
|
||||
{
|
||||
// Find intersection point of edge and plane
|
||||
float32 interp = distance0 / (distance0 - distance1);
|
||||
vOut[numOut].v = vIn[0].v + interp * (vIn[1].v - vIn[0].v);
|
||||
|
||||
// VertexA is hitting edgeB.
|
||||
vOut[numOut].id.cf.indexA = static_cast<uint8>(vertexIndexA);
|
||||
vOut[numOut].id.cf.indexB = vIn[0].id.cf.indexB;
|
||||
vOut[numOut].id.cf.typeA = b2ContactFeature::e_vertex;
|
||||
vOut[numOut].id.cf.typeB = b2ContactFeature::e_face;
|
||||
++numOut;
|
||||
}
|
||||
|
||||
return numOut;
|
||||
}
|
||||
|
||||
bool b2TestOverlap( const b2Shape* shapeA, int32 indexA,
|
||||
const b2Shape* shapeB, int32 indexB,
|
||||
const b2Transform& xfA, const b2Transform& xfB)
|
||||
{
|
||||
b2DistanceInput input;
|
||||
input.proxyA.Set(shapeA, indexA);
|
||||
input.proxyB.Set(shapeB, indexB);
|
||||
input.transformA = xfA;
|
||||
input.transformB = xfB;
|
||||
input.useRadii = true;
|
||||
|
||||
b2SimplexCache cache;
|
||||
cache.count = 0;
|
||||
|
||||
b2DistanceOutput output;
|
||||
|
||||
b2Distance(&output, &cache, &input);
|
||||
|
||||
return output.distance < 10.0f * b2_epsilon;
|
||||
}
|
||||
-277
@@ -1,277 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#ifndef B2_COLLISION_H
|
||||
#define B2_COLLISION_H
|
||||
|
||||
#include "Box2D/Common/b2Math.h"
|
||||
#include <limits.h>
|
||||
|
||||
/// @file
|
||||
/// Structures and functions used for computing contact points, distance
|
||||
/// queries, and TOI queries.
|
||||
|
||||
class b2Shape;
|
||||
class b2CircleShape;
|
||||
class b2EdgeShape;
|
||||
class b2PolygonShape;
|
||||
|
||||
const uint8 b2_nullFeature = UCHAR_MAX;
|
||||
|
||||
/// The features that intersect to form the contact point
|
||||
/// This must be 4 bytes or less.
|
||||
struct b2ContactFeature
|
||||
{
|
||||
enum Type
|
||||
{
|
||||
e_vertex = 0,
|
||||
e_face = 1
|
||||
};
|
||||
|
||||
uint8 indexA; ///< Feature index on shapeA
|
||||
uint8 indexB; ///< Feature index on shapeB
|
||||
uint8 typeA; ///< The feature type on shapeA
|
||||
uint8 typeB; ///< The feature type on shapeB
|
||||
};
|
||||
|
||||
/// Contact ids to facilitate warm starting.
|
||||
union b2ContactID
|
||||
{
|
||||
b2ContactFeature cf;
|
||||
uint32 key; ///< Used to quickly compare contact ids.
|
||||
};
|
||||
|
||||
/// A manifold point is a contact point belonging to a contact
|
||||
/// manifold. It holds details related to the geometry and dynamics
|
||||
/// of the contact points.
|
||||
/// The local point usage depends on the manifold type:
|
||||
/// -e_circles: the local center of circleB
|
||||
/// -e_faceA: the local center of cirlceB or the clip point of polygonB
|
||||
/// -e_faceB: the clip point of polygonA
|
||||
/// This structure is stored across time steps, so we keep it small.
|
||||
/// Note: the impulses are used for internal caching and may not
|
||||
/// provide reliable contact forces, especially for high speed collisions.
|
||||
struct b2ManifoldPoint
|
||||
{
|
||||
b2Vec2 localPoint; ///< usage depends on manifold type
|
||||
float32 normalImpulse; ///< the non-penetration impulse
|
||||
float32 tangentImpulse; ///< the friction impulse
|
||||
b2ContactID id; ///< uniquely identifies a contact point between two shapes
|
||||
};
|
||||
|
||||
/// A manifold for two touching convex shapes.
|
||||
/// Box2D supports multiple types of contact:
|
||||
/// - clip point versus plane with radius
|
||||
/// - point versus point with radius (circles)
|
||||
/// The local point usage depends on the manifold type:
|
||||
/// -e_circles: the local center of circleA
|
||||
/// -e_faceA: the center of faceA
|
||||
/// -e_faceB: the center of faceB
|
||||
/// Similarly the local normal usage:
|
||||
/// -e_circles: not used
|
||||
/// -e_faceA: the normal on polygonA
|
||||
/// -e_faceB: the normal on polygonB
|
||||
/// We store contacts in this way so that position correction can
|
||||
/// account for movement, which is critical for continuous physics.
|
||||
/// All contact scenarios must be expressed in one of these types.
|
||||
/// This structure is stored across time steps, so we keep it small.
|
||||
struct b2Manifold
|
||||
{
|
||||
enum Type
|
||||
{
|
||||
e_circles,
|
||||
e_faceA,
|
||||
e_faceB
|
||||
};
|
||||
|
||||
b2ManifoldPoint points[b2_maxManifoldPoints]; ///< the points of contact
|
||||
b2Vec2 localNormal; ///< not use for Type::e_points
|
||||
b2Vec2 localPoint; ///< usage depends on manifold type
|
||||
Type type;
|
||||
int32 pointCount; ///< the number of manifold points
|
||||
};
|
||||
|
||||
/// This is used to compute the current state of a contact manifold.
|
||||
struct b2WorldManifold
|
||||
{
|
||||
/// Evaluate the manifold with supplied transforms. This assumes
|
||||
/// modest motion from the original state. This does not change the
|
||||
/// point count, impulses, etc. The radii must come from the shapes
|
||||
/// that generated the manifold.
|
||||
void Initialize(const b2Manifold* manifold,
|
||||
const b2Transform& xfA, float32 radiusA,
|
||||
const b2Transform& xfB, float32 radiusB);
|
||||
|
||||
b2Vec2 normal; ///< world vector pointing from A to B
|
||||
b2Vec2 points[b2_maxManifoldPoints]; ///< world contact point (point of intersection)
|
||||
float32 separations[b2_maxManifoldPoints]; ///< a negative value indicates overlap, in meters
|
||||
};
|
||||
|
||||
/// This is used for determining the state of contact points.
|
||||
enum b2PointState
|
||||
{
|
||||
b2_nullState, ///< point does not exist
|
||||
b2_addState, ///< point was added in the update
|
||||
b2_persistState, ///< point persisted across the update
|
||||
b2_removeState ///< point was removed in the update
|
||||
};
|
||||
|
||||
/// Compute the point states given two manifolds. The states pertain to the transition from manifold1
|
||||
/// to manifold2. So state1 is either persist or remove while state2 is either add or persist.
|
||||
void b2GetPointStates(b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints],
|
||||
const b2Manifold* manifold1, const b2Manifold* manifold2);
|
||||
|
||||
/// Used for computing contact manifolds.
|
||||
struct b2ClipVertex
|
||||
{
|
||||
b2Vec2 v;
|
||||
b2ContactID id;
|
||||
};
|
||||
|
||||
/// Ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1).
|
||||
struct b2RayCastInput
|
||||
{
|
||||
b2Vec2 p1, p2;
|
||||
float32 maxFraction;
|
||||
};
|
||||
|
||||
/// Ray-cast output data. The ray hits at p1 + fraction * (p2 - p1), where p1 and p2
|
||||
/// come from b2RayCastInput.
|
||||
struct b2RayCastOutput
|
||||
{
|
||||
b2Vec2 normal;
|
||||
float32 fraction;
|
||||
};
|
||||
|
||||
/// An axis aligned bounding box.
|
||||
struct b2AABB
|
||||
{
|
||||
/// Verify that the bounds are sorted.
|
||||
bool IsValid() const;
|
||||
|
||||
/// Get the center of the AABB.
|
||||
b2Vec2 GetCenter() const
|
||||
{
|
||||
return 0.5f * (lowerBound + upperBound);
|
||||
}
|
||||
|
||||
/// Get the extents of the AABB (half-widths).
|
||||
b2Vec2 GetExtents() const
|
||||
{
|
||||
return 0.5f * (upperBound - lowerBound);
|
||||
}
|
||||
|
||||
/// Get the perimeter length
|
||||
float32 GetPerimeter() const
|
||||
{
|
||||
float32 wx = upperBound.x - lowerBound.x;
|
||||
float32 wy = upperBound.y - lowerBound.y;
|
||||
return 2.0f * (wx + wy);
|
||||
}
|
||||
|
||||
/// Combine an AABB into this one.
|
||||
void Combine(const b2AABB& aabb)
|
||||
{
|
||||
lowerBound = b2Min(lowerBound, aabb.lowerBound);
|
||||
upperBound = b2Max(upperBound, aabb.upperBound);
|
||||
}
|
||||
|
||||
/// Combine two AABBs into this one.
|
||||
void Combine(const b2AABB& aabb1, const b2AABB& aabb2)
|
||||
{
|
||||
lowerBound = b2Min(aabb1.lowerBound, aabb2.lowerBound);
|
||||
upperBound = b2Max(aabb1.upperBound, aabb2.upperBound);
|
||||
}
|
||||
|
||||
/// Does this aabb contain the provided AABB.
|
||||
bool Contains(const b2AABB& aabb) const
|
||||
{
|
||||
bool result = true;
|
||||
result = result && lowerBound.x <= aabb.lowerBound.x;
|
||||
result = result && lowerBound.y <= aabb.lowerBound.y;
|
||||
result = result && aabb.upperBound.x <= upperBound.x;
|
||||
result = result && aabb.upperBound.y <= upperBound.y;
|
||||
return result;
|
||||
}
|
||||
|
||||
bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input) const;
|
||||
|
||||
b2Vec2 lowerBound; ///< the lower vertex
|
||||
b2Vec2 upperBound; ///< the upper vertex
|
||||
};
|
||||
|
||||
/// Compute the collision manifold between two circles.
|
||||
void b2CollideCircles(b2Manifold* manifold,
|
||||
const b2CircleShape* circleA, const b2Transform& xfA,
|
||||
const b2CircleShape* circleB, const b2Transform& xfB);
|
||||
|
||||
/// Compute the collision manifold between a polygon and a circle.
|
||||
void b2CollidePolygonAndCircle(b2Manifold* manifold,
|
||||
const b2PolygonShape* polygonA, const b2Transform& xfA,
|
||||
const b2CircleShape* circleB, const b2Transform& xfB);
|
||||
|
||||
/// Compute the collision manifold between two polygons.
|
||||
void b2CollidePolygons(b2Manifold* manifold,
|
||||
const b2PolygonShape* polygonA, const b2Transform& xfA,
|
||||
const b2PolygonShape* polygonB, const b2Transform& xfB);
|
||||
|
||||
/// Compute the collision manifold between an edge and a circle.
|
||||
void b2CollideEdgeAndCircle(b2Manifold* manifold,
|
||||
const b2EdgeShape* polygonA, const b2Transform& xfA,
|
||||
const b2CircleShape* circleB, const b2Transform& xfB);
|
||||
|
||||
/// Compute the collision manifold between an edge and a circle.
|
||||
void b2CollideEdgeAndPolygon(b2Manifold* manifold,
|
||||
const b2EdgeShape* edgeA, const b2Transform& xfA,
|
||||
const b2PolygonShape* circleB, const b2Transform& xfB);
|
||||
|
||||
/// Clipping for contact manifolds.
|
||||
int32 b2ClipSegmentToLine(b2ClipVertex vOut[2], const b2ClipVertex vIn[2],
|
||||
const b2Vec2& normal, float32 offset, int32 vertexIndexA);
|
||||
|
||||
/// Determine if two generic shapes overlap.
|
||||
bool b2TestOverlap( const b2Shape* shapeA, int32 indexA,
|
||||
const b2Shape* shapeB, int32 indexB,
|
||||
const b2Transform& xfA, const b2Transform& xfB);
|
||||
|
||||
// ---------------- Inline Functions ------------------------------------------
|
||||
|
||||
inline bool b2AABB::IsValid() const
|
||||
{
|
||||
b2Vec2 d = upperBound - lowerBound;
|
||||
bool valid = d.x >= 0.0f && d.y >= 0.0f;
|
||||
valid = valid && lowerBound.IsValid() && upperBound.IsValid();
|
||||
return valid;
|
||||
}
|
||||
|
||||
inline bool b2TestOverlap(const b2AABB& a, const b2AABB& b)
|
||||
{
|
||||
b2Vec2 d1, d2;
|
||||
d1 = b.lowerBound - a.upperBound;
|
||||
d2 = a.lowerBound - b.upperBound;
|
||||
|
||||
if (d1.x > 0.0f || d1.y > 0.0f)
|
||||
return false;
|
||||
|
||||
if (d2.x > 0.0f || d2.y > 0.0f)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
||||
-589
@@ -1,589 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007-2009 Erin Catto http://www.box2d.org
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would be
|
||||
* appreciated but is not required.
|
||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||
* misrepresented as being the original software.
|
||||
* 3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "Box2D/Collision/b2Distance.h"
|
||||
#include "Box2D/Collision/Shapes/b2CircleShape.h"
|
||||
#include "Box2D/Collision/Shapes/b2EdgeShape.h"
|
||||
#include "Box2D/Collision/Shapes/b2ChainShape.h"
|
||||
#include "Box2D/Collision/Shapes/b2PolygonShape.h"
|
||||
|
||||
// GJK using Voronoi regions (Christer Ericson) and Barycentric coordinates.
|
||||
int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters;
|
||||
|
||||
void b2DistanceProxy::Set(const b2Shape* shape, int32 index)
|
||||
{
|
||||
switch (shape->GetType())
|
||||
{
|
||||
case b2Shape::e_circle:
|
||||
{
|
||||
const b2CircleShape* circle = static_cast<const b2CircleShape*>(shape);
|
||||
m_vertices = &circle->m_p;
|
||||
m_count = 1;
|
||||
m_radius = circle->m_radius;
|
||||
}
|
||||
break;
|
||||
|
||||
case b2Shape::e_polygon:
|
||||
{
|
||||
const b2PolygonShape* polygon = static_cast<const b2PolygonShape*>(shape);
|
||||
m_vertices = polygon->m_vertices;
|
||||
m_count = polygon->m_count;
|
||||
m_radius = polygon->m_radius;
|
||||
}
|
||||
break;
|
||||
|
||||
case b2Shape::e_chain:
|
||||
{
|
||||
const b2ChainShape* chain = static_cast<const b2ChainShape*>(shape);
|
||||
b2Assert(0 <= index && index < chain->m_count);
|
||||
|
||||
m_buffer[0] = chain->m_vertices[index];
|
||||
if (index + 1 < chain->m_count)
|
||||
{
|
||||
m_buffer[1] = chain->m_vertices[index + 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
m_buffer[1] = chain->m_vertices[0];
|
||||
}
|
||||
|
||||
m_vertices = m_buffer;
|
||||
m_count = 2;
|
||||
m_radius = chain->m_radius;
|
||||
}
|
||||
break;
|
||||
|
||||
case b2Shape::e_edge:
|
||||
{
|
||||
const b2EdgeShape* edge = static_cast<const b2EdgeShape*>(shape);
|
||||
m_vertices = &edge->m_vertex1;
|
||||
m_count = 2;
|
||||
m_radius = edge->m_radius;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
b2Assert(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
struct b2SimplexVertex
|
||||
{
|
||||
b2Vec2 wA; // support point in proxyA
|
||||
b2Vec2 wB; // support point in proxyB
|
||||
b2Vec2 w; // wB - wA
|
||||
float32 a; // barycentric coordinate for closest point
|
||||
int32 indexA; // wA index
|
||||
int32 indexB; // wB index
|
||||
};
|
||||
|
||||
struct b2Simplex
|
||||
{
|
||||
void ReadCache( const b2SimplexCache* cache,
|
||||
const b2DistanceProxy* proxyA, const b2Transform& transformA,
|
||||
const b2DistanceProxy* proxyB, const b2Transform& transformB)
|
||||
{
|
||||
b2Assert(cache->count <= 3);
|
||||
|
||||
// Copy data from cache.
|
||||
m_count = cache->count;
|
||||
b2SimplexVertex* vertices = &m_v1;
|
||||
for (int32 i = 0; i < m_count; ++i)
|
||||
{
|
||||
b2SimplexVertex* v = vertices + i;
|
||||
v->indexA = cache->indexA[i];
|
||||
v->indexB = cache->indexB[i];
|
||||
b2Vec2 wALocal = proxyA->GetVertex(v->indexA);
|
||||
b2Vec2 wBLocal = proxyB->GetVertex(v->indexB);
|
||||
v->wA = b2Mul(transformA, wALocal);
|
||||
v->wB = b2Mul(transformB, wBLocal);
|
||||
v->w = v->wB - v->wA;
|
||||
v->a = 0.0f;
|
||||
}
|
||||
|
||||
// Compute the new simplex metric, if it is substantially different than
|
||||
// old metric then flush the simplex.
|
||||
if (m_count > 1)
|
||||
{
|
||||
float32 metric1 = cache->metric;
|
||||
float32 metric2 = GetMetric();
|
||||
if (metric2 < 0.5f * metric1 || 2.0f * metric1 < metric2 || metric2 < b2_epsilon)
|
||||
{
|
||||
// Reset the simplex.
|
||||
m_count = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// If the cache is empty or invalid ...
|
||||
if (m_count == 0)
|
||||
{
|
||||
b2SimplexVertex* v = vertices + 0;
|
||||
v->indexA = 0;
|
||||
v->indexB = 0;
|
||||
b2Vec2 wALocal = proxyA->GetVertex(0);
|
||||
b2Vec2 wBLocal = proxyB->GetVertex(0);
|
||||
v->wA = b2Mul(transformA, wALocal);
|
||||
v->wB = b2Mul(transformB, wBLocal);
|
||||
v->w = v->wB - v->wA;
|
||||
v->a = 1.0f;
|
||||
m_count = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void WriteCache(b2SimplexCache* cache) const
|
||||
{
|
||||
cache->metric = GetMetric();
|
||||
cache->count = uint16(m_count);
|
||||
const b2SimplexVertex* vertices = &m_v1;
|
||||
for (int32 i = 0; i < m_count; ++i)
|
||||
{
|
||||
cache->indexA[i] = uint8(vertices[i].indexA);
|
||||
cache->indexB[i] = uint8(vertices[i].indexB);
|
||||
}
|
||||
}
|
||||
|
||||
b2Vec2 GetSearchDirection() const
|
||||
{
|
||||
switch (m_count)
|
||||
{
|
||||
case 1:
|
||||
return -m_v1.w;
|
||||
|
||||
case 2:
|
||||
{
|
||||
b2Vec2 e12 = m_v2.w - m_v1.w;
|
||||
float32 sgn = b2Cross(e12, -m_v1.w);
|
||||
if (sgn > 0.0f)
|
||||
{
|
||||
// Origin is left of e12.
|
||||
return b2Cross(1.0f, e12);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Origin is right of e12.
|
||||
return b2Cross(e12, 1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
b2Assert(false);
|
||||
return b2Vec2_zero;
|
||||
}
|
||||
}
|
||||
|
||||
b2Vec2 GetClosestPoint() const
|
||||
{
|
||||
switch (m_count)
|
||||
{
|
||||
case 0:
|
||||
b2Assert(false);
|
||||
return b2Vec2_zero;
|
||||
|
||||
case 1:
|
||||
return m_v1.w;
|
||||
|
||||
case 2:
|
||||
return m_v1.a * m_v1.w + m_v2.a * m_v2.w;
|
||||
|
||||
case 3:
|
||||
return b2Vec2_zero;
|
||||
|
||||
default:
|
||||
b2Assert(false);
|
||||
return b2Vec2_zero;
|
||||
}
|
||||
}
|
||||
|
||||
void GetWitnessPoints(b2Vec2* pA, b2Vec2* pB) const
|
||||
{
|
||||
switch (m_count)
|
||||
{
|
||||
case 0:
|
||||
b2Assert(false);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
*pA = m_v1.wA;
|
||||
*pB = m_v1.wB;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
*pA = m_v1.a * m_v1.wA + m_v2.a * m_v2.wA;
|
||||
*pB = m_v1.a * m_v1.wB + m_v2.a * m_v2.wB;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
*pA = m_v1.a * m_v1.wA + m_v2.a * m_v2.wA + m_v3.a * m_v3.wA;
|
||||
*pB = *pA;
|
||||
break;
|
||||
|
||||
default:
|
||||
b2Assert(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
float32 GetMetric() const
|
||||
{
|
||||
switch (m_count)
|
||||
{
|
||||
case 0:
|
||||
b2Assert(false);
|
||||
return 0.0f;
|
||||
|
||||
case 1:
|
||||
return 0.0f;
|
||||
|
||||
case 2:
|
||||
return b2Distance(m_v1.w, m_v2.w);
|
||||
|
||||
case 3:
|
||||
return b2Cross(m_v2.w - m_v1.w, m_v3.w - m_v1.w);
|
||||
|
||||
default:
|
||||
b2Assert(false);
|
||||
return 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void Solve2();
|
||||
void Solve3();
|
||||
|
||||
b2SimplexVertex m_v1, m_v2, m_v3;
|
||||
int32 m_count;
|
||||
};
|
||||
|
||||
|
||||
// Solve a line segment using barycentric coordinates.
|
||||
//
|
||||
// p = a1 * w1 + a2 * w2
|
||||
// a1 + a2 = 1
|
||||
//
|
||||
// The vector from the origin to the closest point on the line is
|
||||
// perpendicular to the line.
|
||||
// e12 = w2 - w1
|
||||
// dot(p, e) = 0
|
||||
// a1 * dot(w1, e) + a2 * dot(w2, e) = 0
|
||||
//
|
||||
// 2-by-2 linear system
|
||||
// [1 1 ][a1] = [1]
|
||||
// [w1.e12 w2.e12][a2] = [0]
|
||||
//
|
||||
// Define
|
||||
// d12_1 = dot(w2, e12)
|
||||
// d12_2 = -dot(w1, e12)
|
||||
// d12 = d12_1 + d12_2
|
||||
//
|
||||
// Solution
|
||||
// a1 = d12_1 / d12
|
||||
// a2 = d12_2 / d12
|
||||
void b2Simplex::Solve2()
|
||||
{
|
||||
b2Vec2 w1 = m_v1.w;
|
||||
b2Vec2 w2 = m_v2.w;
|
||||
b2Vec2 e12 = w2 - w1;
|
||||
|
||||
// w1 region
|
||||
float32 d12_2 = -b2Dot(w1, e12);
|
||||
if (d12_2 <= 0.0f)
|
||||
{
|
||||
// a2 <= 0, so we clamp it to 0
|
||||
m_v1.a = 1.0f;
|
||||
m_count = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
// w2 region
|
||||
float32 d12_1 = b2Dot(w2, e12);
|
||||
if (d12_1 <= 0.0f)
|
||||
{
|
||||
// a1 <= 0, so we clamp it to 0
|
||||
m_v2.a = 1.0f;
|
||||
m_count = 1;
|
||||
m_v1 = m_v2;
|
||||
return;
|
||||
}
|
||||
|
||||
// Must be in e12 region.
|
||||
float32 inv_d12 = 1.0f / (d12_1 + d12_2);
|
||||
m_v1.a = d12_1 * inv_d12;
|
||||
m_v2.a = d12_2 * inv_d12;
|
||||
m_count = 2;
|
||||
}
|
||||
|
||||
// Possible regions:
|
||||
// - points[2]
|
||||
// - edge points[0]-points[2]
|
||||
// - edge points[1]-points[2]
|
||||
// - inside the triangle
|
||||
void b2Simplex::Solve3()
|
||||
{
|
||||
b2Vec2 w1 = m_v1.w;
|
||||
b2Vec2 w2 = m_v2.w;
|
||||
b2Vec2 w3 = m_v3.w;
|
||||
|
||||
// Edge12
|
||||
// [1 1 ][a1] = [1]
|
||||
// [w1.e12 w2.e12][a2] = [0]
|
||||
// a3 = 0
|
||||
b2Vec2 e12 = w2 - w1;
|
||||
float32 w1e12 = b2Dot(w1, e12);
|
||||
float32 w2e12 = b2Dot(w2, e12);
|
||||
float32 d12_1 = w2e12;
|
||||
float32 d12_2 = -w1e12;
|
||||
|
||||
// Edge13
|
||||
// [1 1 ][a1] = [1]
|
||||
// [w1.e13 w3.e13][a3] = [0]
|
||||
// a2 = 0
|
||||
b2Vec2 e13 = w3 - w1;
|
||||
float32 w1e13 = b2Dot(w1, e13);
|
||||
float32 w3e13 = b2Dot(w3, e13);
|
||||
float32 d13_1 = w3e13;
|
||||
float32 d13_2 = -w1e13;
|
||||
|
||||
// Edge23
|
||||
// [1 1 ][a2] = [1]
|
||||
// [w2.e23 w3.e23][a3] = [0]
|
||||
// a1 = 0
|
||||
b2Vec2 e23 = w3 - w2;
|
||||
float32 w2e23 = b2Dot(w2, e23);
|
||||
float32 w3e23 = b2Dot(w3, e23);
|
||||
float32 d23_1 = w3e23;
|
||||
float32 d23_2 = -w2e23;
|
||||
|
||||
// Triangle123
|
||||
float32 n123 = b2Cross(e12, e13);
|
||||
|
||||
float32 d123_1 = n123 * b2Cross(w2, w3);
|
||||
float32 d123_2 = n123 * b2Cross(w3, w1);
|
||||
float32 d123_3 = n123 * b2Cross(w1, w2);
|
||||
|
||||
// w1 region
|
||||
if (d12_2 <= 0.0f && d13_2 <= 0.0f)
|
||||
{
|
||||
m_v1.a = 1.0f;
|
||||
m_count = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
// e12
|
||||
if (d12_1 > 0.0f && d12_2 > 0.0f && d123_3 <= 0.0f)
|
||||
{
|
||||
float32 inv_d12 = 1.0f / (d12_1 + d12_2);
|
||||
m_v1.a = d12_1 * inv_d12;
|
||||
m_v2.a = d12_2 * inv_d12;
|
||||
m_count = 2;
|
||||
return;
|
||||
}
|
||||
|
||||
// e13
|
||||
if (d13_1 > 0.0f && d13_2 > 0.0f && d123_2 <= 0.0f)
|
||||
{
|
||||
float32 inv_d13 = 1.0f / (d13_1 + d13_2);
|
||||
m_v1.a = d13_1 * inv_d13;
|
||||
m_v3.a = d13_2 * inv_d13;
|
||||
m_count = 2;
|
||||
m_v2 = m_v3;
|
||||
return;
|
||||
}
|
||||
|
||||
// w2 region
|
||||
if (d12_1 <= 0.0f && d23_2 <= 0.0f)
|
||||
{
|
||||
m_v2.a = 1.0f;
|
||||
m_count = 1;
|
||||
m_v1 = m_v2;
|
||||
return;
|
||||
}
|
||||
|
||||
// w3 region
|
||||
if (d13_1 <= 0.0f && d23_1 <= 0.0f)
|
||||
{
|
||||
m_v3.a = 1.0f;
|
||||
m_count = 1;
|
||||
m_v1 = m_v3;
|
||||
return;
|
||||
}
|
||||
|
||||
// e23
|
||||
if (d23_1 > 0.0f && d23_2 > 0.0f && d123_1 <= 0.0f)
|
||||
{
|
||||
float32 inv_d23 = 1.0f / (d23_1 + d23_2);
|
||||
m_v2.a = d23_1 * inv_d23;
|
||||
m_v3.a = d23_2 * inv_d23;
|
||||
m_count = 2;
|
||||
m_v1 = m_v3;
|
||||
return;
|
||||
}
|
||||
|
||||
// Must be in triangle123
|
||||
float32 inv_d123 = 1.0f / (d123_1 + d123_2 + d123_3);
|
||||
m_v1.a = d123_1 * inv_d123;
|
||||
m_v2.a = d123_2 * inv_d123;
|
||||
m_v3.a = d123_3 * inv_d123;
|
||||
m_count = 3;
|
||||
}
|
||||
|
||||
void b2Distance(b2DistanceOutput* output,
|
||||
b2SimplexCache* cache,
|
||||
const b2DistanceInput* input)
|
||||
{
|
||||
++b2_gjkCalls;
|
||||
|
||||
const b2DistanceProxy* proxyA = &input->proxyA;
|
||||
const b2DistanceProxy* proxyB = &input->proxyB;
|
||||
|
||||
b2Transform transformA = input->transformA;
|
||||
b2Transform transformB = input->transformB;
|
||||
|
||||
// Initialize the simplex.
|
||||
b2Simplex simplex;
|
||||
simplex.ReadCache(cache, proxyA, transformA, proxyB, transformB);
|
||||
|
||||
// Get simplex vertices as an array.
|
||||
b2SimplexVertex* vertices = &simplex.m_v1;
|
||||
const int32 k_maxIters = 20;
|
||||
|
||||
// These store the vertices of the last simplex so that we
|
||||
// can check for duplicates and prevent cycling.
|
||||
int32 saveA[3], saveB[3];
|
||||
int32 saveCount = 0;
|
||||
|
||||
// Main iteration loop.
|
||||
int32 iter = 0;
|
||||
while (iter < k_maxIters)
|
||||
{
|
||||
// Copy simplex so we can identify duplicates.
|
||||
saveCount = simplex.m_count;
|
||||
for (int32 i = 0; i < saveCount; ++i)
|
||||
{
|
||||
saveA[i] = vertices[i].indexA;
|
||||
saveB[i] = vertices[i].indexB;
|
||||
}
|
||||
|
||||
switch (simplex.m_count)
|
||||
{
|
||||
case 1:
|
||||
break;
|
||||
|
||||
case 2:
|
||||
simplex.Solve2();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
simplex.Solve3();
|
||||
break;
|
||||
|
||||
default:
|
||||
b2Assert(false);
|
||||
}
|
||||
|
||||
// If we have 3 points, then the origin is in the corresponding triangle.
|
||||
if (simplex.m_count == 3)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Get search direction.
|
||||
b2Vec2 d = simplex.GetSearchDirection();
|
||||
|
||||
// Ensure the search direction is numerically fit.
|
||||
if (d.LengthSquared() < b2_epsilon * b2_epsilon)
|
||||
{
|
||||
// The origin is probably contained by a line segment
|
||||
// or triangle. Thus the shapes are overlapped.
|
||||
|
||||
// We can't return zero here even though there may be overlap.
|
||||
// In case the simplex is a point, segment, or triangle it is difficult
|
||||
// to determine if the origin is contained in the CSO or very close to it.
|
||||
break;
|
||||
}
|
||||
|
||||
// Compute a tentative new simplex vertex using support points.
|
||||
b2SimplexVertex* vertex = vertices + simplex.m_count;
|
||||
vertex->indexA = proxyA->GetSupport(b2MulT(transformA.q, -d));
|
||||
vertex->wA = b2Mul(transformA, proxyA->GetVertex(vertex->indexA));
|
||||
b2Vec2 wBLocal;
|
||||
vertex->indexB = proxyB->GetSupport(b2MulT(transformB.q, d));
|
||||
vertex->wB = b2Mul(transformB, proxyB->GetVertex(vertex->indexB));
|
||||
vertex->w = vertex->wB - vertex->wA;
|
||||
|
||||
// Iteration count is equated to the number of support point calls.
|
||||
++iter;
|
||||
++b2_gjkIters;
|
||||
|
||||
// Check for duplicate support points. This is the main termination criteria.
|
||||
bool duplicate = false;
|
||||
for (int32 i = 0; i < saveCount; ++i)
|
||||
{
|
||||
if (vertex->indexA == saveA[i] && vertex->indexB == saveB[i])
|
||||
{
|
||||
duplicate = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// If we found a duplicate support point we must exit to avoid cycling.
|
||||
if (duplicate)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// New vertex is ok and needed.
|
||||
++simplex.m_count;
|
||||
}
|
||||
|
||||
b2_gjkMaxIters = b2Max(b2_gjkMaxIters, iter);
|
||||
|
||||
// Prepare output.
|
||||
simplex.GetWitnessPoints(&output->pointA, &output->pointB);
|
||||
output->distance = b2Distance(output->pointA, output->pointB);
|
||||
output->iterations = iter;
|
||||
|
||||
// Cache the simplex.
|
||||
simplex.WriteCache(cache);
|
||||
|
||||
// Apply radii if requested.
|
||||
if (input->useRadii)
|
||||
{
|
||||
float32 rA = proxyA->m_radius;
|
||||
float32 rB = proxyB->m_radius;
|
||||
|
||||
if (output->distance > rA + rB && output->distance > b2_epsilon)
|
||||
{
|
||||
// Shapes are still no overlapped.
|
||||
// Move the witness points to the outer surface.
|
||||
output->distance -= rA + rB;
|
||||
b2Vec2 normal = output->pointB - output->pointA;
|
||||
normal.Normalize();
|
||||
output->pointA += rA * normal;
|
||||
output->pointB -= rB * normal;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Shapes are overlapped when radii are considered.
|
||||
// Move the witness points to the middle.
|
||||
b2Vec2 p = 0.5f * (output->pointA + output->pointB);
|
||||
output->pointA = p;
|
||||
output->pointB = p;
|
||||
output->distance = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user