Compare commits

..
104 Commits
Author SHA1 Message Date
Andreas Stallinger 541bed1db2 build: Private beta tag 2015-10-20 17:40:44 +02:00
Andreas Stallinger 5af8800eed build: linux package private beta
update linux package for private beta
2015-10-20 17:12:05 +02:00
malte_langkabel 52494ba402 build: disabled console for release builds on windows
* updated cmake to cause visual studio to open up a console window only when running a debug build.
2015-10-20 16:36:56 +02:00
Eberhard Graether dc39e10858 build: mac bundle fix and other prerelease fixes
* fixed rpath in mac bundle
* added Qt5Network and Qt5DBus frameworks to bundle
* fixed project settings not saved
* fixed preferences not shown on first start
* added coati_manual.pdf
2015-10-20 16:15:17 +02:00
malte_langkabel 73b25c45ff data: cleaning xml tag names
* replaced xml tags that have been written in PascalCase with the underscore_notation throughout all of the settings files.
2015-10-20 11:08:42 +02:00
malte_langkabel a73906252e ui: acknowledgements
* added acknowledgement text to mention the "FH Salzburg".
* fixed alignments in about screen.
2015-10-20 10:25:12 +02:00
malte_langkabel e8a63c9de5 ui: removed horizontal scrollbars in code snippets
* they were still there when running coati on windows.
2015-10-15 16:41:41 +02:00
malte_langkabel b0245f9d7b ui: panning in code view
* Implemented horizontal panning for code snippets by dragging the mouse left and right.
2015-10-15 16:28:55 +02:00
malte_langkabel e1683d047a ui: clickable file scope
* When content that is shown in a snippet is located in the file scope, the snippet's title bar displays the file's name. Clicking this name has the same effect as maximizing the file (the file's entire content is shown but the file symbol is not activated).
2015-10-15 12:24:24 +02:00
Manuel Dobusch 0664f9a81b logic: IDE Communication
Network code and controller added to communicate with IDE plugins. Does not include GUI integration though.
2015-10-14 15:40:10 +02:00
malte_langkabel 4e4cb25540 logic: fallback selection after refresh
* extracted code for translating input messages to token activations from the FeatureController to the helper class ActivationTranslator.
* used ActivationTranslator in UndoRedoController to determine if the symbols that have been selected before refresh are still available after parsing again.
2015-10-14 12:27:05 +02:00
malte_langkabel e61171cc85 data: Template Member Specialization Edge
* Added a new edge that connects a method of an implicitly specialized template class to its definition in the unspecialized template class.
* Added a test case for this.
* Made methods that have an invalid source location stored as undefined.
2015-10-13 13:29:36 +02:00
Eberhard Graether 27bf5108ab data: fixed file clearing to clear only elements with no more source_locations 2015-10-12 11:42:19 +02:00
Eberhard Graether 29afd80673 data: Readded manual element clearing when clearing file nodes 2015-10-09 11:46:27 +02:00
Eberhard Graether 2286e7de1b test: Fixed tests to use new Node construction 2015-10-09 11:28:45 +02:00
Eberhard Graether c553e29ff8 data: save undefined in database field instead of using different node types
* expand toggle also for undefined classes
* changed direction of some template edges
* save same access component to specialized template functions and classes
2015-10-08 23:12:37 +02:00
Eberhard Graether ebeaff2724 build: Fixed Boost version number in cmake find package call 2015-10-08 12:00:37 +02:00
malte_langkabel 87ff089178 build: update dependencies
* updated dependencies for windows
* implemented getFileInfo of TestFileManager as virtual.
2015-10-07 14:35:01 +02:00
Eberhard Graether 0fba3f5cf9 logic: random fixes and improvements
* added new logos to setup ui
* changed wording in status messages and bundle nodes
* removed ununsed Vector.h
* save NameHierarchy to SearchMatch
* fixed NameHierarchyElement retrieval for name elements without parent
* fixed match weight to score last letters higher
2015-10-06 16:21:03 +02:00
Eberhard Graether 8d3112d5a9 data: increased file clearing performance
This change passes all file node ids for clearing to the sqlite storage at once and makes use of ON DELETE CASCADE for
everything else, instead of manally deleting all source locations.
2015-10-05 09:44:27 +02:00
Eberhard Graether f041e69789 test: fixed tests 2015-10-02 18:21:00 +02:00
Eberhard Graether acfbe510fb logic: fixes all over the place
* fixed refreshing to send another ui refresh message after parsing
* keepContent field for MessageBase so that views won't update
* fixed searchmatching to only weigh uppercase letters next to lowercase ones
* fixed file not jumping back to snippets when activating edge
* clicking into empty space deselects active edge
* clear file manager files on every fetch
* added db transaction for file clearing
* use zooming instead of changing font size
2015-10-02 17:07:03 +02:00
Eberhard Graether a855e14ebf logic: make SearchController only listen to MessageActivateTokens
This change makes MessageActivateTokens being used consistently throughout all Controllers. The FeatureController
accepts all incoming activation messages and turns them into MessageActivateTokens, which are then accepted by all
view controllers.
2015-10-02 10:18:17 +02:00
Eberhard Graether 2704d47cd8 logic: multiple fixes and improvements
* showing project name in main window title
* keep reference count visible when maximizing code file
* show first node in db when no main function is available
* log Storage stats after parse
* fixed macro locations saved multiply
* using NameHierarchy when retrieving ids
2015-10-01 19:03:05 +02:00
Eberhard Graether 8fa9bdde5e data: refactored file clearing on reparse to use TaskClearStorage 2015-10-01 13:45:31 +02:00
Eberhard Graether 5b47661a90 build: using directories build_debug and build_release for clang consistently 2015-10-01 10:03:08 +02:00
Eberhard Graether de1af6ce7d data: saving file contents to sqlite db 2015-09-30 02:12:49 +02:00
Eberhard Graether 4782efddcb ui: always show whole file on top when selecting file node 2015-09-29 15:22:00 +02:00
Eberhard Graether 201e6d24a9 ui: new features for the Graph UI
* removed node shadows
* made enums collapsible
* added icons to nodes: enum, typedef, macro, bundle
2015-09-29 15:10:44 +02:00
Eberhard Graether 8777c9874b logic: don't refresh project on reopen 2015-09-29 14:47:36 +02:00
Eberhard Graether eeed22f478 build: updated to new clang and other fixes
* don't save macros from external files
* fixed macro and include saving duplicates
* added NODE_UNDEFINED_MACRO

TIL = You need to cut a 1kg cake about 85 times in half until you have a piece with only a single atom.
2015-09-29 14:22:52 +02:00
Andreas Stallinger e3696df5e1 data: Macro handling
Macros have now edges from Files where they are usesd
2015-09-28 15:25:52 +02:00
Eberhard Graether dd4d74a1d9 ui: precollapse files in code view
This change shows the files in the code view minimized, if more than 5. This greatly improves performance, because code
and annotations won't get loaded until needed. Files including declarations or definitions of the active symbol are
still expanded. The number of references in each file is now shown in it's title bar. Clicking the title bar allows for
expanding and collapsing as well now.
2015-09-28 15:18:52 +02:00
malte_langkabel 27ed5a0635 data: handling nested type names
* Implemented recursive handling of nested names in CxxTypeNameResolver. For example used when resolving names of dependent template parameters.
2015-09-26 19:18:07 +02:00
Eberhard Graether ae27d8025b ui: show tooltips when hovering nodes and edges 2015-09-24 16:18:23 +02:00
Eberhard Graether b8c95c5a20 logic: removed namespace splitting from GraphController
Namespace splitting is now handled in active token id retrieval from the Storage, so that namespace nodes are not added
to the Graph at all and complexity in the GraphController is reduced.
2015-09-24 15:37:35 +02:00
Eberhard Graether 97e49d9b3f data: added HierarchyCache for storing member relationships
This change introduces the HierarchyCache that caches the member relationships of nodes in memory for faster graph
retrieval. Storing these relationships allows for retrieving nodes and edges as lists from the SqliteStorage at once
which results in a 10 fold speed improvement.
2015-09-24 12:43:49 +02:00
Eberhard Graether 5c06dedf7c data: Fixed inheritance parsing for tests 2015-09-24 10:30:25 +02:00
Eberhard Graether 5825fe77ab ui: switch Graph to bucket grid layouting
This change introduces bucket grid layouting, which sorts the nodes into buckets based on how they are connected. Each
bucket is then layouted individually before they are arranged next to each other. Edges go from left to right, except
for inheritance edges that go from bottom to top.
2015-09-24 03:12:42 +02:00
Eberhard Graether c18bd6a8bc data: fixes for parsing and logging
* readded Storage logs
* turned type name resolver error logs to info logs
* fixed inheritance not parsed in forward declarations
* check file node id before saving source location
* show errors in unparsed files again
2015-09-24 02:39:10 +02:00
Eberhard Graether bb3a8bf351 ui: force refresh option in menu for reloading whole project 2015-09-23 16:44:39 +02:00
Eberhard Graether 502909c789 data: retrieving multiple datums with single queries
* getting all incoming and outgogin edges to children at once in aggregation edge computation
* getting all edges connected to active node at once
* getting all access components for all member edges at once.
2015-09-23 14:32:33 +02:00
Eberhard Graether 391082160c data: saving NameHierarchy directly to Node without TokenComponentName 2015-09-23 12:45:58 +02:00
Eberhard Graether b07bc7ed19 data: readded signature distinction for functions 2015-09-23 12:04:19 +02:00
Eberhard Graether 3d48145e47 data: Fixed edge creation
* reuse edges of same source, origin and type with multiple source locations
* save return type and parameter type uses as type usage for single edge
2015-09-23 10:23:46 +02:00
Eberhard Graether ef54299deb data: increased aggregation edge creation performance 2015-09-23 10:01:28 +02:00
Eberhard Graether 78c1b32797 data: increased parse and graph assembly performance
* removed header search in subdirectories of header search paths
* cache file node ids in Storage for faster lookup
* retrieve node names from SearchIndex
* fixed addNodeAndAllChildren also called for member edges
* added check if node already present in addEdgeAndAllChildren
2015-09-23 09:26:03 +02:00
malte_langkabel e9d45a507a ui: project settings fix
* fixed open folder dialog in project settings.
* changed foreign key relation of component_access from the element to the edge table.
2015-09-17 16:48:05 +02:00
Eberhard Graether 0c7624a5ef data: saving and retrieving access components from and to Storage again 2015-09-17 15:58:10 +02:00
Eberhard Graether 04f24ba63d test: Fixed tests 2015-09-17 15:07:46 +02:00
Andreas Stallinger b36e3fb758 build: gather linux libraries for package automated 2015-09-17 14:10:11 +02:00
Eberhard Graether a596c58b02 data: Fixed performance drop in file path search 2015-09-17 13:53:28 +02:00
Eberhard Graether a14bfaff56 data: saving and loading Storage with sqlite file next to project file 2015-09-17 12:08:25 +02:00
Andreas Stallinger f702b79892 src: fixed headersearchpaths, there where not inlcuded
<description>
2015-09-17 11:31:00 +02:00
Eberhard Graether 05d390fb3f src: some fixes
* fixed field declaration type has no source location
* grouped menu items
* overload edge pointing in right direction
2015-09-17 11:08:04 +02:00
Andreas Stallinger be0eaf9d0d data: forward declaration for storageAccessProxy in FileManager
<description>
2015-09-17 10:47:48 +02:00
malte_langkabel 3d94b78b8c data: refreshing with DB
* database stores modification time of files.
* FileManager updates internal state based on database info.
* reimplemented FileManager's check if a file is in project.
* implemented clearing data of updated or removed files before reparsing the updated and added files.
2015-09-16 18:53:33 +02:00
Andreas Stallinger 73b1b77ca8 data, utility: Fixes to run Opensource Projects
templateSpecializationArgsAsWritten returning null caused a crash
VisitMemberExprInDeclBody for vardecl was missing
subdirectories for headersearchpaths, that the user does not need to add a hugh amount of folders
2015-09-16 17:08:16 +02:00
Eberhard Graether fb5316cb7f ui: toggling view visibility from the view menu 2015-09-11 18:03:44 +02:00
Eberhard Graether 6e835bd5f5 ui: activating multiple overlapping source locations
All overlapping source locations will be activated and the corresponding nodes highlighted, with all of their names
displayed in the search bar.
2015-09-11 14:52:39 +02:00
Eberhard Graether 0fc80d2a52 data: rewrote TicTacToe to work without std libs and split to cpp 2015-09-11 13:00:43 +02:00
Eberhard Graether eaa3fab4ec ui: fixes
* fixed first match in autocompletion not preselected
* fixed maximize file button extending snippets
* changed names of views and setting name of composite view
* fixed number of error locations
2015-09-10 15:49:28 +02:00
Andreas Stallinger 4c0d749a39 build: linux package fix
some linux package fixes and now there is a package option in the build.sh script
2015-09-09 16:39:23 +02:00
Andreas Stallinger baedc3eed1 ui: aboutwindow
changed about window that it is consistent with the other windows
2015-09-09 14:54:51 +02:00
Andreas Stallinger 8c606ef5c4 ui : License Menu
3rd Party Licenses in Menu Help -> Licenses
2015-09-09 14:23:59 +02:00
Eberhard Graether 3eff72340d ui: fixed flickering of search autocompletion box 2015-09-09 12:23:19 +02:00
Eberhard Graether 70283f7610 ui: new style for bundle node 2015-09-09 11:48:16 +02:00
Eberhard Graether 934c70272d ui: new file node style with icon 2015-09-08 17:08:33 +02:00
Eberhard Graether a7ec6772ff data: Fixed aggregation edge creation and display 2015-09-08 14:36:17 +02:00
Andreas Stallinger c8679dabbe build: Linux Package Reworked
New Linux Package, data folder moved to where the user have the rights to edit.
2015-09-07 10:27:34 +02:00
Eberhard Graether 1ba802dd9b ui: added ApplicationSettingsScreen
* opens on first start autmatically
* open from the menu under Preferences
* show version number on splash screen
* added recent projects markup to app settings template
* moved all qt window classes to qt/window
* put common form stuff from project setup and app settings into QtSettingsWindow
2015-09-04 14:38:30 +02:00
Eberhard Graether 5ab627b735 ui: reworked StartScreen and ProjectSettupScreen UI flow
* realigned buttons and elements
* fixed retina styles for mac
* removed MessageLoadSource and subsequent functionality
* edit existing project through menu
* browsing paths from the line item in QtDirectoryListBox
* grow QtDirectoryListBox instead of scroll
* take any file or directory as valid path
* fixed new project setup screen background
* fixed screen handling on cancelation
2015-09-04 10:54:37 +02:00
Eberhard Graether 1b445d4c3a src: removed query syntax
This change removes the query syntax from the QtSmartSearchbox and all its classes. Now it only autocompletes to one
single Token, but the UI functionality for composing a query of multiple elements is still left for later use. The struct
SearchMatch is now used in the whole pipeline for passing search results back and forth.
2015-09-02 11:52:07 +02:00
Eberhard Graether 9bcf7d2f0f data: cleaned up TokenLocation classes
* removed self assiged locationId
* show errors after parse again
2015-08-27 22:14:12 +02:00
Eberhard Graether 2044ff9723 data: cleaned up Graph classes
* removed self assignment of id from Token
* removed FilterableGraph interface from Graph
* creating Nodes and Edges on Graph with addNode and addGraph methods
* removed obsolete Aggregation edge filtering
* fixed clang warnings
* fixed memory leak for Node creation
2015-08-27 17:25:52 +02:00
malte_langkabel e628241b02 data: database storage
* replaced storage by a new version that utilizes sqlite for persistence.
* added SqliteStorage to manage direct access to the database.
* added testsuit for sqlite.
* slimmed down the protected interface of the storage.
* changed tests in StorageTestSuit to avoid using protected methods of the storage.
* added functions to begin and commit a transaction to the storage.
* removed GraphFilterTestSuite.
* removed GraphFilterConductorTestSuite.
* added Node and Edge constructor that takes id as parameter
* added constructor for TokenComponentNameCached that accepts NameHierarchy as parameter
* added TokenLocation constructor that takes locationId as parameter.
* created respective construction functions in TokenLocatonLine, -File and -Collection.

fortune cookie message = Recognition will come from unexpected sources.
2015-08-25 18:07:02 +02:00
malte_langkabel d996cf384d build: qt and version patch for windows.
* added dlls for QT5.5.
* changed version script to find and use the git.exe
2015-08-25 17:56:59 +02:00
Andreas Stallinger fb877e1304 build: fix compiler and cmake warnings
added missing virtual destructor
fixed a warning in token.h: expression with side effects will be evaluated despite being used as an operand to 'typeid'
CMP00043 Cmake warning
added missing override keyword
2015-08-18 14:43:32 +02:00
Andreas Stallinger d8489c0b04 build: versioning
versioning via git tags, commits after tags are displayed in the versionnumber
2015-08-18 11:32:22 +02:00
Eberhard Graether 30c941fcf8 logic: crash fixes
<description>
2015-08-07 00:17:41 +02:00
Eberhard Graether 30b5abd672 ui: added icon colors to ColorScheme
This change introduces the qt utility function colorizePixmap() for colloring icons in different colors for different
color schemes.
2015-08-05 21:02:52 +02:00
Eberhard Graether c0a31fca18 logic: Reloading ProjectSettings on refresh 2015-08-04 16:21:55 +02:00
Eberhard Graether 9c4e3950b6 build: updated Mac build to Qt 5.5 2015-08-04 15:38:12 +02:00
Andreas Stallinger e7a977dd5c UI: ProjectSettingsUI
ProjectSettingsUI for creation of new Projects + StartScreen design update
2015-08-03 17:24:24 +02:00
Eberhard Graether f823d0ddb4 ui: fixed some ui related bugs
* aggregation edges only connect toplevel nodes
* fixed aggregation click for undo and redo
* don't show edge name in search field, because they are not searchable
* clear search field when clicking aggregation
* leave active nodes active when clicking edges
2015-08-03 16:33:29 +02:00
Eberhard Graether 165f32f6a6 logic: MessageFlushUpdates to send new Graph to GraphView when restoring Graph 2015-07-30 20:24:18 +02:00
Eberhard Graether 5f25311389 logic: paths in ProjectSettings relative to file not working directory
This change checks all paths in the ProjectSettings file for relativity and makes them relative to the location of the
ProjectSettings file if necessary. The paths are also correctly saved relative to the file.
2015-07-29 22:20:26 +02:00
malte_langkabel 336df76912 ui: fixed ui refresh crashes
* fixed thread based crashes on refresh by adding functors for the required functionality.
2015-07-20 15:48:02 +02:00
Eberhard Graether 0f9e72d553 src: Fixed refresh of QtUndoRedoView in wrong thread 2015-07-20 15:02:01 +02:00
Eberhard Graether 73aa6080aa ui: clicking snippet title to show full scope
This change lets the user click the snippet title in the CodeView to insert the full scope. The existing snippets are
merged with the new lines accordingly.
2015-07-20 00:57:19 +02:00
Eberhard Graether e5a8609d7a ui: removed namespace nodes from graph
Nodes within namespaces are display their full name including the namespace.
2015-07-18 22:03:13 +02:00
Eberhard Graether 85d2ebc32a logic: removed FilterUndefinedNodesFromGraph setting
because it is confusing and not necessary anymore since we have bundled nodes.
2015-07-18 13:46:03 +02:00
Eberhard Graether 5722b4dc23 ui: color schemes
Put all colors into single xml file. Accessing colors is handled via the singleton class ColorScheme. The default scheme
"bright.xml" holds the original colors. The scheme "dark.xml" is a start, but still a poor alternative. Color schemes
can be switched via the View menu.
2015-07-17 19:50:39 +02:00
Eberhard Graether fb170cbd5d ui: added universal font size setting and shortcuts for changing it
This change adds font size and font family to the ApplicationSettings to have a single point for manipulating them. The
font size can also be changed via the menu or the zoomIn and zoomOut shortcuts on all platforms.
2015-07-15 00:38:10 +02:00
Eberhard Graether 7275082284 logic: correctly undoing graph interactions by replaying actions since last active token change
This change introdoces a classification of commands by order in the undo stack. Undoing the last action will resend the
message of the last active token change and all messages changing the ui after that.
2015-06-24 01:15:31 +02:00
malte_langkabel 3587b487dd ui: Fixed animation crash
* Fixed crash that occurred when resetting the current animation in the QtGraphView.
2015-06-23 16:36:39 +02:00
Eberhard Graether a527a3c34d logic: rewrote messages handling token activation for correct restoring on undo
* saving search query to undo stack with MessageSearch
* saving node and edge with name to undo stack with MessageActivateNode and MessageActivateEdge
* added FeatureController that handels distribution of MessageActivateTokens
* clearing views when refreshing or changing project
* clearing undo stack when changing project
* added StorageCache derived from StorageAccessProxy
2015-06-19 00:20:50 +02:00
Eberhard Graether d6269f9608 ui: bundling nodes in the graph view
This change bundles similar nodes in the graph view together. When the bundled node or it's aggregation edge are clicked,
then the bundle is split. This change also adds an arrow to the aggregation edge based on the direction of it's edges.
2015-06-17 22:47:08 +02:00
Eberhard Graether eb4b82c015 web: added analytics tracking code to mediacube page 2015-06-15 10:47:53 +02:00
Eberhard Graether 3a6c0440f2 test: fixed tests after use of EDGE_TYPE_USAGE for return and parameter types 2015-06-12 12:37:02 +02:00
Eberhard Graether 3c6782d94d data: fixed graph display errors
* fixed Storage saving specialized template functions as undefined function node
* fixed usages of same type in functions in return or parameter not clickable in graph, because the edges are on top
2015-06-11 14:04:20 +02:00
Eberhard Graether 063d972b13 ui: stop old graph animation before starting new one 2015-06-09 23:23:07 +02:00
Eberhard Graether e85b9e7425 ui: fixed jumps in graph navigation
* moved graph postprocessing to GraphController to avoid reprocessing on edge activation
* animat sceneRect of the GraphView to avoid jump at end of animation
2015-06-09 22:51:09 +02:00
Eberhard Graether 0c41aecfc9 ui: reworded file tooltips
* and added sample source
2015-06-09 14:09:12 +02:00
463 changed files with 181526 additions and 8418 deletions
+7 -1
View File
@@ -1,11 +1,13 @@
/build/
/distr/
/bin/app/Debug/
/bin/app/Release/
/bin/app/data/log/
/bin/app/data/projects/
/bin/app/data/ApplicationSettings.xml
/bin/app/data/window_settings.ini
/bin/app/Release/
/bin/app/data/*.sqlite
/bin/lib/
@@ -14,5 +16,9 @@
/bin/test/data/log/
/bin/test/data/temp.xml
/bin/test/data/TestSettings.xml
/bin/test/data/*.sqlite
/setup/Linux/lib/*
.DS_Store
.idea
+105 -84
View File
@@ -1,8 +1,15 @@
cmake_minimum_required(VERSION 2.8.9)
# to get CMP0043 warnings, upgrade to version 3 and change the line above to VERSION 3.0 and remove the line below
if(POLICY CMP0043)
cmake_policy(SET CMP0043 OLD)
endif()
include(cmake/add_files.cmake)
include(cmake/create_source_groups.cmake)
include(cmake/version.cmake)
include(cmake/version_setup.cmake)
include(cmake/licenses.cmake)
# Variables --------------------------------------------------------------------
@@ -25,32 +32,50 @@ endif ()
if (UNIX)
add_definitions(-std=c++11 -Wno-unknown-warning-option -fcolor-diagnostics -DQT_COMPILING_QSTRING_COMPAT_CPP )
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags")
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags")
endif ()
# Project ----------------------------------------------------------------------
project(${PROJECT_NAME})
if (UNIX AND NOT APPLE)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags")
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" )
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" )
#set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m32" )
endif ()
# Clang ------------------------------------------------------------------------
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build/share/llvm/cmake")
if (UNIX)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_release/share/llvm/cmake")
else()
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build_debug/share/llvm/cmake")
endif()
else()
find_package(LLVM REQUIRED PATHS "$ENV{CLANG_DIR}/build/share/llvm/cmake")
endif()
find_package(CLANG REQUIRED PATHS "${CMAKE_SOURCE_DIR}/cmake")
add_definitions(${CLANG_DEFINITIONS})
# Boost ------------------------------------------------------------------------
set(BOOST_ROOT $ENV{BOOST_155_DIR})
set(BOOST_ROOT $ENV{BOOST_159_DIR})
set(Boost_USE_MULTITHREAD ON)
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_STATIC_RUNTIME OFF)
set(BOOST_LIBRARYDIR $ENV{BOOST_155_DIR})
find_package(Boost 1.55 COMPONENTS system filesystem date_time REQUIRED)
Set(Boost_NO_SYSTEM_PATHS ON)
set(BOOST_LIBRARYDIR $ENV{BOOST_159_DIR})
find_package(Boost 1.59 COMPONENTS system filesystem date_time REQUIRED)
# Eigen -------------------------------------------------------------------------
add_definitions(-DEIGEN_MPL2_ONLY)
set(EIGEN_ROOT $ENV{EIGEN_DIR})
# Lib --------------------------------------------------------------------------
@@ -62,12 +87,15 @@ add_subdirectory(src/lib)
add_subdirectory(src/external)
set_source_files_properties(${CLANG_FILES} PROPERTIES COMPILE_FLAGS "-fno-rtti")
set_source_files_properties(${EXTERNAL_FILES} PROPERTIES COMPILE_FLAGS "-w")
set_source_files_properties(${EXTERNAL_C_FILES} PROPERTIES COMPILE_FLAGS "-std=gnu89 -w")
add_library(${LIB_PROJECT_NAME} ${LIB_FILES} ${CLANG_FILES} ${EXTERNAL_FILES})
add_library(${LIB_PROJECT_NAME} ${LIB_FILES} ${CLANG_FILES} ${EXTERNAL_FILES} ${EXTERNAL_C_FILES})
create_source_groups(${LIB_FILES})
create_source_groups(${CLANG_FILES})
create_source_groups(${EXTERNAL_FILES})
create_source_groups(${EXTERNAL_C_FILES})
set_target_properties(
${LIB_PROJECT_NAME}
@@ -80,13 +108,17 @@ set_property(
TARGET ${LIB_PROJECT_NAME}
PROPERTY INCLUDE_DIRECTORIES
"${CMAKE_SOURCE_DIR}/src/lib"
"${CMAKE_SOURCE_DIR}/src/external"
${LLVM_INCLUDE_DIRS}
${CLANG_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${EIGEN_ROOT}
)
target_include_directories(${LIB_PROJECT_NAME} SYSTEM
PUBLIC ${LLVM_INCLUDE_DIRS}
${CLANG_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${EIGEN_ROOT}
"${CMAKE_SOURCE_DIR}/src/external"
)
link_directories(${LLVM_LIBRARY_DIRS} ${CLANG_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS})
target_link_libraries(${LIB_PROJECT_NAME} ${CLANG_LIBRARIES} ${LLVM_AVAILABLE_LIBS} ${Boost_LIBRARIES})
@@ -109,19 +141,59 @@ set(CMAKE_AUTOMOC ON)
# Find the QtWidgets library
set(CMAKE_PREFIX_PATH "$ENV{QT_DIR}/")
set(Qt5Widgets_DIR "$ENV{QT_DIR}/cmake/Qt5Widgets/")
set(Qt5PrintSupport_DIR "$ENV{QT_DIR}/cmake/Qt5PrintSupport/")
find_package(Qt5Widgets)
find_package(Qt5PrintSupport)
find_package(Qt5Network)
if(Qt5Widgets_FOUND)
MESSAGE(STATUS "Found Qt ${Qt5Widgets_VERSION_STRING}")
# FIX: Qt was built with -reduce-relocations
if (Qt5_POSITION_INDEPENDENT_CODE)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
endif()
# target for running versionnumber script
# workaround for running customcommand (ninja dependency cycle)
add_custom_target(
versionnumber ALL
)
if (WIN32)
file(WRITE ${CMAKE_SOURCE_DIR}/build/Coati.rc
"// Icon with lowest ID value placed first to ensure application icon\n"
"// remains consistent on all systems.\n"
"IDI_ICON1 ICON \"${CMAKE_SOURCE_DIR}/build/coati.ico\"\n"
)
add_executable(${APP_PROJECT_NAME} ${APP_FILES} ${CMAKE_SOURCE_DIR}/build/Coati.rc)
add_executable(${APP_PROJECT_NAME} ${APP_FILES} ${CMAKE_SOURCE_DIR}/build/Coati.rc ${CMAKE_SOURCE_DIR}/build/src/app/version.h)
# hide the console when running a release build.
set_target_properties(${APP_PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE")
set_target_properties(${APP_PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE")
set_target_properties(${APP_PROJECT_NAME} PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE")
set_target_properties(${APP_PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_RELWITHDEBINFO "_CONSOLE")
set_target_properties(${APP_PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/ENTRY:\"mainCRTStartup\" /SUBSYSTEM:WINDOWS")
set_target_properties(${APP_PROJECT_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
else ()
add_executable(${APP_PROJECT_NAME} ${APP_FILES})
add_executable(${APP_PROJECT_NAME} ${APP_FILES} ${CMAKE_SOURCE_DIR}/build/src/app/version.h)
endif ()
# command for versioning script
add_custom_command(
TARGET versionnumber
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/version.cmake
BYPRODUCTS ${PROJECT_SOURCE_DIR}/build/src/app/version.h
DEPENDS ${APP_PROJECT_NAME}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "check/update version number"
)
add_dependencies(${APP_PROJECT_NAME} versionnumber)
create_source_groups(${APP_FILES})
target_link_libraries(${APP_PROJECT_NAME} ${LIB_PROJECT_NAME})
@@ -132,12 +204,16 @@ set_property(
"${CMAKE_SOURCE_DIR}/src/lib"
"${CMAKE_SOURCE_DIR}/src/app"
"${CMAKE_SOURCE_DIR}/build/src/app"
"${CMAKE_SOURCE_DIR}/src/external"
${Boost_INCLUDE_DIRS}
)
target_include_directories(${APP_PROJECT_NAME} SYSTEM
PUBLIC "${CMAKE_SOURCE_DIR}/src/external"
PUBLIC ${Boost_INCLUDE_DIRS}
)
# Use the Widgets module from Qt 5.
qt5_use_modules(${APP_PROJECT_NAME} Widgets)
qt5_use_modules(${APP_PROJECT_NAME} Network)
# configure platform specific include file
configure_file(
@@ -145,6 +221,12 @@ configure_file(
"${PROJECT_SOURCE_DIR}/build/src/app/includes.h"
)
#configure the versioning file
configure_file(
${CMAKE_SOURCE_DIR}/src/app/version.h.in
${CMAKE_SOURCE_DIR}/build/src/app/version.h
)
# add platform specific libraries
if (APPLE)
find_library(CORE_FOUNDATION CoreFoundation)
@@ -160,7 +242,7 @@ if (APPLE)
set(MACOSX_BUNDLE_NAME ${PROJECT_NAME})
set(MACOSX_BINARY_NAME ${APP_PROJECT_NAME})
set(MACOSX_DYNAMIC_LIBRARIES ${Boost_LIBRARIES} "${LLVM_LIBRARY_DIRS}/libLTO.dylib")
set(MACOSX_DYNAMIC_LIBRARIES ${Boost_LIBRARIES} "${LLVM_LIBRARY_DIRS}/libLTO.3.8.dylib")
string(REPLACE ";" " " MACOSX_DYNAMIC_LIBRARIES "${MACOSX_DYNAMIC_LIBRARIES}")
get_property(QT_CORE_PATH TARGET ${Qt5Core_LIBRARIES} PROPERTY LOCATION)
@@ -175,7 +257,10 @@ if (APPLE)
get_property(QT_PRINT_PATH TARGET ${Qt5PrintSupport_LIBRARIES} PROPERTY LOCATION)
get_filename_component(QT_PRINT_PATH ${QT_PRINT_PATH} REALPATH)
list(APPEND MACOSX_QT_FRAMEWORKS ${QT_CORE_PATH} ${QT_GUI_PATH} ${QT_WIDGETS_PATH} ${QT_PRINT_PATH})
get_property(QT_NETWORK_PATH TARGET ${Qt5Network_LIBRARIES} PROPERTY LOCATION)
get_filename_component(QT_NETWORK_PATH ${QT_NETWORK_PATH} REALPATH)
list(APPEND MACOSX_QT_FRAMEWORKS ${QT_CORE_PATH} ${QT_GUI_PATH} ${QT_WIDGETS_PATH} ${QT_PRINT_PATH} ${QT_NETWORK_PATH})
string(REPLACE ";" " " MACOSX_QT_FRAMEWORKS "${MACOSX_QT_FRAMEWORKS}")
set(MACOSX_QT_DIR "$ENV{QT_DIR}")
@@ -263,74 +348,10 @@ endif ()
# Visual Leak Detector ---------------------------------------------------------
if (WIN32)
include_directories($ENV{VLD_DIR}/include)
endif ()
# Linux package
if(UNIX AND NOT APPLE)
INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/bin/app/data
DESTINATION share/coati
)
INSTALL(FILES ${CMAKE_SOURCE_DIR}/setup/Linux/coati.desktop
DESTINATION share/applications
)
INSTALL(FILES ${CMAKE_SOURCE_DIR}/bin/app/data/gui/icon/logo_1024_1024.png
DESTINATION share/icons
RENAME coati.png)
INSTALL(FILES
${CMAKE_SOURCE_DIR}/setup/Linux/libedit.so.0.0.52
${CMAKE_SOURCE_DIR}/setup/Linux/libboost_filesystem.so.1.55.0
${CMAKE_SOURCE_DIR}/setup/Linux/libboost_system.so.1.55.0
${CMAKE_SOURCE_DIR}/setup/Linux/libboost_date_time.so.1.55.0
${CMAKE_SOURCE_DIR}/setup/Linux/libstdc++.so.6
${CMAKE_SOURCE_DIR}/setup/Linux/libpng16.so.16
${CMAKE_SOURCE_DIR}/setup/Linux/libQt5Core.so.5
${CMAKE_SOURCE_DIR}/setup/Linux/libQt5DBus.so.5
${CMAKE_SOURCE_DIR}/setup/Linux/libQt5Gui.so.5
${CMAKE_SOURCE_DIR}/setup/Linux/libQt5Widgets.so.5
${CMAKE_SOURCE_DIR}/setup/Linux/libicui18n.so.54
${CMAKE_SOURCE_DIR}/setup/Linux/libicuuc.so.54
${CMAKE_SOURCE_DIR}/setup/Linux/libpcre16.so.0
${CMAKE_SOURCE_DIR}/setup/Linux/libsystemd.so.0
${CMAKE_SOURCE_DIR}/setup/Linux/libicudata.so.54
${CMAKE_SOURCE_DIR}/setup/Linux/liblz4.so.1
${CMAKE_SOURCE_DIR}/setup/Linux/libgcrypt.so.20
${CMAKE_SOURCE_DIR}/setup/Linux/libgpg-error.so.0
DESTINATION share/coati/lib
)
INSTALL(FILES
${CMAKE_SOURCE_DIR}/setup/Linux/libqxcb.so
DESTINATION share/coati/platforms
)
INSTALL(PROGRAMS
${CMAKE_SOURCE_DIR}/setup/Linux/Coati.sh
DESTINATION share/coati
)
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
INSTALL(TARGETS ${APP_PROJECT_NAME}
DESTINATION share/coati
)
SET(CPACK_GENERATOR "DEB;TGZ")
# DEBIAN PACKAGE
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Andreas Stallinger <astallinger.mmt-m2013@fh-salzburg.ac.at>")
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
SET(CPACK_PACKAGE_NAME "Coati")
SET(CPACK_PACKAGE_VERSION_MAJOR 0)
SET(CPACK_PACKAGE_VERSION_MINOR 1)
SET(CPACK_PACKAGE_VERSION_PATCH 2)
SET(CPACK_PACKAGE_EXECUTABLES "Coati")
INCLUDE(CPack)
include(cmake/LinuxPackage.cmake)
endif ()
+31 -5
View File
@@ -4,25 +4,51 @@
##### External Software
* QT 5.2.1
* QT 5.5
* CxxTest 4.3
* Valgrind 3.9.0(linux, macOS)
* Valgrind 3.9.0 (linux)
* Clang & LLVM (installation guide http://clang.llvm.org/docs/LibASTMatchersTutorial.html)
* Boost 1.55 ()
* Eigen 3.2.3
* Boost 1.59
* Eigen 3.2.6
##### Environment Variables
* QT_DIR - ...\Qt\Qt5.2.1\5.2.1\<IDE>\
* CXX_TEST_DIR - .../cxxtest-4.3/
* CLANG_DIR - .../clang-llvm/
* BOOST_155_DIR - .../boost_1_55_0
* BOOST_159_DIR - .../boost_1_59_0
* EIGEN_DIR - .../eigen
For Win32:
* VLD_DIR - .../Visual Leak Detector
* path - apped path to git.exe
##### Settings
Run setup script:
$ ./script/setup.sh
##### Updating Clang on UNIX
$ cd .../clang_llvm
$ cd llvm
$ git pull origin master
$ cd tools/clang
$ git pull origin master
$ cd tools/extra/
$ git pull origin master
$ cd ../../../../../build_debug
$ cmake -G Ninja ../llvm
$ ninja -j4 check-all
$ cd ../release_build
$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ../llvm
$ ninja -j4 check-all
##### Remarks
* Boost lib dir: rename library directory for your system (e.g.: 'lib32-msvc-12.0') to 'lib'
+24 -92
View File
@@ -7,30 +7,31 @@
<!-- COLOR: int int int int - rgba e.g. 125 125 125 255 -->
<config>
<StartupProject><!-- STRING: path to project settings xml file --></StartupProject>
<FilterUndefinedNodesFromGraph><!-- BOOL: filter out undefined nodes in graph --></FilterUndefinedNodesFromGraph>
<startup_project><!-- STRING: path to project settings xml file --></startup_project>
<source>
<CompilerFlags>
<CompilerFlag><!-- STRING: compiler flag, including the dash e.g. -v --></CompilerFlag>
</CompilerFlags>
<compiler_flags>
<compiler_flag><!-- STRING: compiler flag, including the dash e.g. -v --></compiler_flag>
</compiler_flags>
<HeaderSearchPaths>
<HeaderSearchPath><!-- STRING: header search path for each path a HeaderSearchPath element --></HeaderSearchPath>
</HeaderSearchPaths>
<header_search_paths>
<header_search_path><!-- STRING: header search path for each path a header_search_path element --></header_search_path>
</header_search_paths>
<!-- MAC ONLY -->
<FrameworkSearchPaths>
<FrameworkSearchPath><!-- STRING: framework search path --></FrameworkSearchPath>
</FrameworkSearchPaths>
<framework_search_paths>
<framework_search_path><!-- STRING: framework search path --></framework_search_path>
</framework_search_paths>
</source>
<code>
<TabWidth><!-- INTEGER: number of spaces to represent a tab in code files --></TabWidth>
<application>
<font_name><!-- STRING: font name --></font_name>
<font_size><!-- INTEGER: font size in pt --></font_size>
<color_scheme><!-- STRING: color scheme path --></color_scheme>
</application>
<FontName><!-- STRING: name of the font used for source view --></FontName> <!-- DEPRECATED -->
<FontSize><!-- INTEGER: size of the font in the source view --></FontSize> <!-- DEPRECATED -->
<code>
<tab_width><!-- INTEGER: number of spaces to represent a tab in code files --></tab_width>
<snippet>
<snap_range><!-- INTEGER: max amount of lines that the current snippet will be extended to snap to scope start/end --></snap_range>
@@ -38,80 +39,11 @@
</snippet>
</code>
<colors>
<!-- QueryNodeType -->
<command>
<normal>#8FBC92</normal>
<hover>#5EA071</hover>
</command>
<operator>
<normal>#FCA47E</normal>
<hover>#F97A4E</hover>
</operator>
<!-- NodeType -->
<class>
<normal>#ededed</normal>
<hover>#ededed</hover>
</class>
<struct>
<normal>#ededed</normal>
<hover>#ededed</hover>
</struct>
<enum>
<normal>#ededed</normal>
<hover>#ededed</hover>
</enum>
<function>
<normal>#F4D07D</normal>
<hover>#F4BC3D</hover>
</function>
<method>
<normal>#F4D07D</normal>
<hover>#F4BC3D</hover>
</method>
<field>
<normal>#7BB5D4</normal>
<hover>#42A1D4</hover>
</field>
<global>
<normal>#7BB5D4</normal>
<hover>#42A1D4</hover>
</global>
<undefined>
<normal>#00000000</normal>
<hover>#00000000</hover>
</undefined>
<undefined_variable>
<normal>#7BB5D4</normal>
<hover>#42A1D4</hover>
</undefined_variable>
<undefined_function>
<normal>#F4D07D</normal>
<hover>#F4BC3D</hover>
</undefined_function>
<undefined_type>
<normal>#ededed</normal>
<hover>#ededed</hover>
</undefined_type>
<namespace>
<normal>#00000000</normal>
<hover>#00000000</hover>
</namespace>
<typedef>
<normal>#ededed</normal>
<hover>#ededed</hover>
</typedef>
<enum_constant>
<normal>#7BB5D4</normal>
<hover>#42A1D4</hover>
</enum_constant>
<template_parameter_type>
<normal>#ededed</normal>
<hover>#ededed</hover>
</template_parameter_type>
<file>
<normal>#88BAB3</normal>
<hover>#6AA39B</hover>
</file>
</colors>
<user>
<has_seen_settings><!-- BOOL: if the user was already asked to enter app settings --></has_seen_settings>
<recent_projects>
<recent_project><!-- STRING: recent project path --></recent_project>
</recent_projects>
</user>
</config>
+16 -16
View File
@@ -8,27 +8,27 @@
<config>
<source>
<SourcePaths>
<SourcePath><!-- STRING: path to source file or directory, also used as header search path --></SourcePath>
</SourcePaths>
<source_paths>
<source_path><!-- STRING: path to source file or directory, also used as header search path --></source_path>
</source_paths>
<CompilerFlags>
<CompilerFlag><!-- STRING: compiler flag, including the dash e.g. -v --></CompilerFlag>
</CompilerFlags>
<compiler_flags>
<compiler_flag><!-- STRING: compiler flag, including the dash e.g. -v --></compiler_flag>
</compiler_flags>
<HeaderSearchPaths>
<HeaderSearchPath><!-- STRING: header search path for each path a HeaderSearchPath element --></HeaderSearchPath>
</HeaderSearchPaths>
<header_search_paths>
<header_search_path><!-- STRING: header search path for each path a header_search_path element --></header_search_path>
</header_search_paths>
<!-- MAC ONLY -->
<FrameworkSearchPaths>
<FrameworkSearchPath><!-- STRING: framework search path --></FrameworkSearchPath>
</FrameworkSearchPaths>
<framework_search_paths>
<framework_search_path><!-- STRING: framework search path --></framework_search_path>
</framework_search_paths>
<Extensions>
<HeaderExtensions><!-- STRING: extension for header/include e.g. .h --></HeaderExtensions>
<SourceExtensions><!-- STRING: extension for source e.g. .cpp --></SourceExtensions>
</Extensions>
<extensions>
<header_extensions><!-- STRING: extension for header/include e.g. .h --></header_extensions>
<source_extensions><!-- STRING: extension for source e.g. .cpp --></source_extensions>
</extensions>
</source>
</config>
+258
View File
@@ -0,0 +1,258 @@
<?xml version="1.0" encoding="utf-8"?>
<config>
<search>
<background>white</background>
<button>
<normal>#E0E0E0</normal>
<hover>#B2B2B2</hover>
<press>#626262</press>
<disabled>#F4F4F4</disabled>
<icon>white</icon>
</button>
<field>
<text>black</text>
<background>#E0E0E0</background>
<highlight>#B2B2B2</highlight>
</field>
<popup>
<text>black</text>
<by_text>#A0A0A0</by_text>
<background>white</background>
<highlight>#B2B2B2</highlight>
</popup>
<query>
<none>
<normal>white</normal>
<hover>#F5F5F5</hover>
</none>
<command>
<normal>#8FBC92</normal>
<hover>#5EA071</hover>
</command>
<operator>
<normal>#FCA47E</normal>
<hover>#F97A4E</hover>
</operator>
</query>
</search>
<code>
<background>white</background>
<file>
<background>#E0E0E0</background>
<title>
<text>black</text>
<normal>#E0E0E0</normal>
<hover>#B2B2B2</hover>
<press>#626262</press>
<icon>black</icon>
</title>
<ref_count>
<text>black</text>
<background>white</background>
</ref_count>
</file>
<snippet>
<background>transparent</background>
<title>
<text>#A0A0A0</text>
<background>transparent</background>
<hover>#F5F5F5</hover>
</title>
<line_number>
<text>black</text>
<background>transparent</background>
</line_number>
<syntax>
<normal>black</normal>
<directive>#1B8856</directive>
<keyword>#1B8856</keyword>
<type>#C1492D</type>
<comment>#A0A0A4</comment>
<number>#C1315E</number>
<quotation>#865F9E</quotation>
<function>#CC9533</function>
</syntax>
<highlight>
<location>
<normal>#90EBEBEB</normal>
<hover>#90B6D1DD</hover>
</location>
<scope>
<normal>#60E4EEF2</normal>
<hover>#90E4EEF2</hover>
</scope>
<error>
<normal>#80FF0000</normal>
<hover>#FFFF0000</hover>
</error>
</highlight>
</snippet>
</code>
<graph>
<text>black</text>
<background>white</background>
<border>#3C3C3C</border>
<icon>black</icon>
<hatching>white</hatching>
<node>
<type>
<normal>#ededed</normal>
<hover>#ededed</hover>
</type>
<class>
<normal>#ededed</normal>
<hover>#ededed</hover>
</class>
<struct>
<normal>#ededed</normal>
<hover>#ededed</hover>
</struct>
<enum>
<normal>#ededed</normal>
<hover>#ededed</hover>
</enum>
<typedef>
<normal>#ededed</normal>
<hover>#ededed</hover>
</typedef>
<template_parameter_type>
<normal>#ededed</normal>
<hover>#ededed</hover>
</template_parameter_type>
<function>
<normal>#F4D07D</normal>
<hover>#F4BC3D</hover>
</function>
<method>
<normal>#F4D07D</normal>
<hover>#F4BC3D</hover>
</method>
<field>
<normal>#7BB5D4</normal>
<hover>#42A1D4</hover>
</field>
<global_variable>
<normal>#7BB5D4</normal>
<hover>#42A1D4</hover>
</global_variable>
<enum_constant>
<normal>#7BB5D4</normal>
<hover>#42A1D4</hover>
</enum_constant>
<undefined>
<normal>#CC8D91</normal>
<hover>#CC8D91</hover>
</undefined>
<namespace>
<normal>#CC8D91</normal>
<hover>#CC8D91</hover>
</namespace>
<file>
<normal>#DDD</normal>
<hover>#CCC</hover>
</file>
<macro>
<normal>#DDD</normal>
<hover>#CCC</hover>
</macro>
</node>
<edge>
<type_of>
<normal>#878787</normal>
<hover>#878787</hover>
</type_of>
<return_type>
<normal>#878787</normal>
<hover>#878787</hover>
</return_type>
<parameter_type>
<normal>#878787</normal>
<hover>#878787</hover>
</parameter_type>
<type_use>
<normal>#878787</normal>
<hover>#878787</hover>
</type_use>
<inheritance>
<normal>#878787</normal>
<hover>#878787</hover>
</inheritance>
<typedef>
<normal>#878787</normal>
<hover>#878787</hover>
</typedef>
<override>
<normal>#CC5E89</normal>
<hover>#CC5E89</hover>
</override>
<call>
<normal>#F4BC3D</normal>
<hover>#F4BC3D</hover>
</call>
<use>
<normal>#3190BA</normal>
<hover>#3190BA</hover>
</use>
<template_parameter>
<normal>#C1305D</normal>
<hover>#C1305D</hover>
</template_parameter>
<template_argument>
<normal>#C1305D</normal>
<hover>#C1305D</hover>
</template_argument>
<template_default_argument>
<normal>#C1305D</normal>
<hover>#C1305D</hover>
</template_default_argument>
<template_specialization>
<normal>#C1305D</normal>
<hover>#C1305D</hover>
</template_specialization>
<include>
<normal>#878787</normal>
<hover>#878787</hover>
</include>
<aggregation>
<normal>#EEE</normal>
<hover>#DDD</hover>
</aggregation>
<macro_use>
<normal>#878787</normal>
<hover>#878787</hover>
</macro_use>
</edge>
</graph>
<tool_tip>
<text>black</text>
<background>#E0E0E0</background>
</tool_tip>
</config>
+258
View File
@@ -0,0 +1,258 @@
<?xml version="1.0" encoding="utf-8"?>
<config>
<search>
<background>#272728</background>
<button>
<normal>#777777</normal>
<hover>#555555</hover>
<press>#444444</press>
<disabled>#333333</disabled>
<icon>white</icon>
</button>
<field>
<text>#F7F7F7</text>
<background>#777777</background>
<highlight>#555555</highlight>
</field>
<popup>
<text>#F7F7F7</text>
<by_text>#A0A0A0</by_text>
<background>#272728</background>
<highlight>#555555</highlight>
</popup>
<query>
<none>
<normal>#2F2F2F</normal>
<hover>black</hover>
</none>
<command>
<normal>#406D4D</normal>
<hover>#4E855E</hover>
</command>
<operator>
<normal>#7D2724</normal>
<hover>#8C2B29</hover>
</operator>
</query>
</search>
<code>
<background>#272728</background>
<file>
<background>#777777</background>
<title>
<text>#F7F7F7</text>
<normal>#777777</normal>
<hover>#555555</hover>
<press>#444444</press>
<icon>white</icon>
</title>
<ref_count>
<text>#F7F7F7</text>
<background>#272728</background>
</ref_count>
</file>
<snippet>
<background>transparent</background>
<title>
<text>#A0A0A0</text>
<background>transparent</background>
<hover>#2F2F2F</hover>
</title>
<line_number>
<text>#F7F7F7</text>
<background>transparent</background>
</line_number>
<syntax>
<normal>#F7F7F7</normal>
<directive>#1F9C62</directive>
<keyword>#1F9C62</keyword>
<type>#D95233</type>
<comment>#A0A0A4</comment>
<number>#CC3463</number>
<quotation>#9368AD</quotation>
<function>#D69C36</function>
</syntax>
<highlight>
<location>
<normal>#20EBEBEB</normal>
<hover>#40B6D1DD</hover>
</location>
<scope>
<normal>#10E4EEF2</normal>
<hover>#18E4EEF2</hover>
</scope>
<error>
<normal>#A0FF0000</normal>
<hover>#FFFF0000</hover>
</error>
</highlight>
</snippet>
</code>
<graph>
<text>#F7F7F7</text>
<border>#C3C3C3</border>
<background>#272728</background>
<icon>#F7F7F7</icon>
<hatching>#272728</hatching>
<node>
<type>
<normal>#4D4D4D</normal>
<hover>#4D4D4D</hover>
</type>
<class>
<normal>#4D4D4D</normal>
<hover>#4D4D4D</hover>
</class>
<struct>
<normal>#4D4D4D</normal>
<hover>#4D4D4D</hover>
</struct>
<enum>
<normal>#4D4D4D</normal>
<hover>#4D4D4D</hover>
</enum>
<typedef>
<normal>#4D4D4D</normal>
<hover>#4D4D4D</hover>
</typedef>
<template_parameter_type>
<normal>#4D4D4D</normal>
<hover>#4D4D4D</hover>
</template_parameter_type>
<function>
<normal>#7A681F</normal>
<hover>#9C8528</hover>
</function>
<method>
<normal>#7A681F</normal>
<hover>#9C8528</hover>
</method>
<field>
<normal>#21516B</normal>
<hover>#2A6484</hover>
</field>
<global_variable>
<normal>#21516B</normal>
<hover>#2A6484</hover>
</global_variable>
<enum_constant>
<normal>#21516B</normal>
<hover>#2A6484</hover>
</enum_constant>
<undefined>
<normal>#78282D</normal>
<hover>#78282D</hover>
</undefined>
<namespace>
<normal>#78282D</normal>
<hover>#78282D</hover>
</namespace>
<file>
<normal>#1B564E</normal>
<hover>#247368</hover>
</file>
<macro>
<normal>#1B564E</normal>
<hover>#247368</hover>
</macro>
</node>
<edge>
<type_of>
<normal>#797979</normal>
<hover>#797979</hover>
</type_of>
<return_type>
<normal>#797979</normal>
<hover>#797979</hover>
</return_type>
<parameter_type>
<normal>#797979</normal>
<hover>#797979</hover>
</parameter_type>
<type_use>
<normal>#797979</normal>
<hover>#797979</hover>
</type_use>
<inheritance>
<normal>#797979</normal>
<hover>#797979</hover>
</inheritance>
<typedef>
<normal>#797979</normal>
<hover>#797979</hover>
</typedef>
<override>
<normal>#CC5E89</normal>
<hover>#CC5E89</hover>
</override>
<call>
<normal>#9C8528</normal>
<hover>#9C8528</hover>
</call>
<use>
<normal>#2A6484</normal>
<hover>#2A6484</hover>
</use>
<template_parameter>
<normal>#C1305D</normal>
<hover>#C1305D</hover>
</template_parameter>
<template_argument>
<normal>#C1305D</normal>
<hover>#C1305D</hover>
</template_argument>
<template_default_argument>
<normal>#C1305D</normal>
<hover>#C1305D</hover>
</template_default_argument>
<template_specialization>
<normal>#C1305D</normal>
<hover>#C1305D</hover>
</template_specialization>
<include>
<normal>#247368</normal>
<hover>#247368</hover>
</include>
<aggregation>
<normal>#5D5D5D</normal>
<hover>#6D6D6D</hover>
</aggregation>
<macro_use>
<normal>#247368</normal>
<hover>#247368</hover>
</macro_use>
</edge>
</graph>
<tool_tip>
<text>#F7F7F7</text>
<background>#777777</background>
</tool_tip>
</config>
+59 -30
View File
@@ -1,42 +1,58 @@
#code_file_list {
background-color: white;
#code_file_list_base, #code_file_list {
background-color: <color:code/background>;
}
* {
font-size: <setting:font_size>pt;
}
#code_file {
background-color: white;
border: 2px solid #E0E0E0;
background-color: <color:code/snippet/background>;
border: 2px solid <color:code/file/background>;
border-radius: 14px;
}
#code_file #title_widget {
background-color: #E0E0E0;
background-color: <color:code/file/background>;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
margin-bottom: 5px;
min-height: 28px;
padding-right: 5px;
}
#code_file #title_label {
background: none;
background-color: <color:code/file/title/normal>;
border: none;
border-radius: 3px;
font-size: 14px;
color: <color:code/file/title/text>;
padding: 2px 4px;
margin: 2px 8px;
margin: 1px 8px 3px;
}
#code_file #title_label:hover {
background-color: #D0D0D0;
background-color: <color:code/file/title/hover>;
}
#code_file #title_label:disabled {
color: black;
#code_file #title_label:pressed {
background-color: <color:code/file/title/press>;
}
#code_file #code_snippet{
border-top: 2px solid #E0E0E0;
padding-top: 2px;
#code_file #references_label {
background-color: <color:code/file/ref_count/background>;
border: none;
border-radius: 10px;
color: <color:code/file/ref_count/text>;
font-size: <setting:font_size-2>pt;
padding: 0px 3px;
margin: 4px 0px 4px;
}
#code_file #code_snippet {
background-color: <color:code/snippet/background>;
border-top: 2px solid <color:code/file/background>;
}
#code_file #code_snippet * {
font-family: "<setting:font_name>";
}
#code_file #code_snippet[isFirst=true] {
@@ -44,32 +60,45 @@
padding-top: 0px;
}
#code_file #code_snippet[isLast=true] {
border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
}
#code_file #code_snippet #scope_name, #code_file #code_snippet #dots {
background: none;
color: gray;
background-color: <color:code/snippet/title/background>;
color: <color:code/snippet/title/text>;
border: none;
font-family: "Source Code Pro";
font-size: 14px;
}
#code_file #code_snippet #scope_name:hover {
background-color: <color:code/snippet/title/hover>;
}
#code_file #code_snippet #dots {
background-color: <color:code/snippet/line_number/background>;
padding-right: 13px;
text-align: right;
}
#code_file #code_snippet #scope_name {
padding-left: 4px;
text-align: left;
}
#code_file #code_snippet #line_number_area {
background-color: <color:code/snippet/line_number/background>;
border: none;
color: <color:code/snippet/line_number/text>;
}
#code_file #code_snippet[isLast=true] #line_number_area {
border-bottom-left-radius: 12px;
}
#code_area {
background-color: transparent;
font-family: "Source Code Pro";
font-size: 14px;
}
#code_area #line_number_area {
font-family: "Source Code Pro";
font-size: 14px;
color: <color:code/snippet/syntax/normal>;
}
#code_file #maximize_button, #code_file #snippet_button, #code_file #minimize_button {
@@ -103,7 +132,7 @@
}
QToolTip {
background-color: rgb(204, 204, 204);
border: 1px solid rgb(0, 0, 0);
color: rgb(0, 0, 0);
background-color: <color:tool_tip/background>;
color: <color:tool_tip/text>;
font-size: <setting:font_size>pt;
}
@@ -0,0 +1,9 @@
QGraphicsView, QGraphicsScene {
background-color: <color:graph/background>;
}
QToolTip {
background-color: <color:tool_tip/background>;
color: <color:tool_tip/text>;
font-size: <setting:font_size>pt;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

@@ -1,20 +1,20 @@
#refresh_bar {
background: white;
background: transparent;
}
QPushButton {
background: #E0E0E0;
background: <color:search/button/normal>;
border: none;
height: 30px;
width: 30px;
}
QPushButton:hover, QPushButton:checked {
background: #B2B2B2;
background: <color:search/button/hover>;
}
QPushButton:pressed {
background: #626262;
background: <color:search/button/press>;
}
#refresh_button {
@@ -29,7 +29,7 @@ QPushButton:pressed {
}
QToolTip {
background-color: rgb(204, 204, 204);
border: 1px solid rgb(0, 0, 0);
color: rgb(0, 0, 0);
background-color: <color:tool_tip/background>;
color: <color:tool_tip/text>;
font-size: <setting:font_size>pt;
}
@@ -1,8 +0,0 @@
QPushButton {
border: none;
font-family: "Source Code Pro";
font-size: 16px;
height: 20px;
padding-left: 4px;
padding-right: 4px;
}
+25 -32
View File
@@ -1,9 +1,18 @@
* {
font-size: <setting:font_size>pt;
}
#search_box, #search_box * {
font-family: "<setting:font_name>";
font-size: <setting:font_size+2>pt;
}
#search_bar {
background: white;
background-color: transparent;
}
QWidget#search_box_container {
background: #E0E0E0;
background: <color:search/field/background>;
border: none;
border-bottom-left-radius: 12px;
border-top-left-radius: 12px;
@@ -11,62 +20,46 @@ QWidget#search_box_container {
}
QLineEdit#search_box {
background: #E0E0E0;
background-color: transparent;
border: none;
font-family: "Source Code Pro";
font-size: 16px;
height: 24px;
selection-background-color: #B2B2B2;
color: <color:search/field/text>;
selection-background-color: <color:search/field/highlight>;
}
QWidget#search_box_highlight {
background: #B2B2B2;
background-color: <color:search/field/highlight>;
border: none;
height: 24px;
}
QAbstractItemView#search_box_popup {
background-color: white;
background-color: <color:search/popup/background>;
border: none;
font-family: "Source Code Pro";
font-size: 14pt;
color: <color:search/popup/text>;
font-family: "<setting:font_name>";
margin: 8px 0 0;
min-height: 26px;
selection-background-color: #B2B2B2;
selection-background-color: <color:search/popup/highlight>;
}
QPushButton#search_button {
background: #E0E0E0;
background: <color:search/button/normal>;
border: none;
border-bottom-right-radius: 12px;
border-top-right-radius: 12px;
background-position: 15px 5px;
height: 30px;
width: 30px;
}
#search_button:hover {
background: #B2B2B2;
background: <color:search/button/hover>;
}
#search_button:pressed {
background: #626262;
background: <color:search/button/press>;
}
/*QPushButton#case_sensitive_button {
border: none;
border-image: url(data/gui/search_view/images/button_case_sensitive_inactive.png);
height: 26px;
width: 26px;
margin-left: 4px;
}
QPushButton#case_sensitive_button:checked {
border-image: url(data/gui/search_view/images/button_case_sensitive_active.png);
}*/
QToolTip {
background-color: rgb(204, 204, 204);
border: 1px solid rgb(0, 0, 0);
color: rgb(0, 0, 0);
background-color: <color:tool_tip/background>;
color: <color:tool_tip/text>;
font-size: <setting:font_size>pt;
}
@@ -0,0 +1,64 @@
QtDirectoryListBox {
background-color: rgba(255, 255, 255, 200);
border: 1px solid lightgray;
border-radius: 12px;
}
QListWidget {
background: transparent;
border: none;
margin: 2px 0 2px 0;
}
QListWidget::item {
border-bottom: 1px solid lightgray;
height: 20px;
}
QListWidget::item:selected {
background-color: #EEE;
}
QtListItemWidget #field {
background-color: transparent;
border: none;
font-size: 12px;
margin-top: 2px;
}
QtListItemWidget #button {
border: 1px solid lightgray;
border-radius: 8px;
font-size: 12px;
margin-top: 2px;
margin-right: 2px;
width: 20px;
}
QtListItemWidget #button:hover {
color: white;
background: #2D3F85;
}
#bar {
border-top: 1px solid lightgray;
}
#roundedButton {
background: dimgray;
border-radius: 8px;
color: white;
font-size: 15px;
height: 16px;
margin-right: 3px;
width: 16px;
}
#roundedButton:hover {
background: gray;
}
#dropInfo {
color: lightgray;
}
@@ -0,0 +1,63 @@
#titleLabel {
color: black;
font-size: 16pt;
font-weight: bold;
}
QLineEdit {
background-color: rgba(255, 255, 255, 200);
border-radius: 10px;
border: 1px solid lightgrey;
padding-left: 5px;
padding-right: 5px;
}
QLineEdit:disabled {
border: 1px solid lightgrey;
}
#formArea {
background-color: transparent;
border: none;
border-top: 1px solid lightgrey;
border-bottom: 1px solid lightgrey;
}
#form {
background-color: rgba(255, 255, 255, 150);
}
#form QLabel {
font-weight: bold;
}
#moreButton {
background-color: rgba(255, 255, 255, 200);
border: 1px solid lightgray;
border-radius: 10px;
color: gray;
font-size: 15px;
height: 20px;
margin-left: 10px;
width: 28px;
}
#moreButton:hover {
color: white;
background: #2D3F85;
}
#windowButton {
background: white;
border: 1px solid lightgray;
border-radius: 10px;
color: black;
font-size: 17pt;
height: 30px;
width: 140px;
}
#windowButton:hover {
color: white;
background: #2D3F85;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

@@ -0,0 +1,35 @@
#projectButton {
background: white;
border: 1px solid lightgray;
border-radius: 10px;
font-size: 17pt;
}
#projectButton:hover {
background: #2D3F85;
color: white;
}
#recentButton {
background: none;
border: none;
color: black;
font-size: 12pt;
}
#recentButton:hover {
background-color: rgba(45, 63, 133, 70);
border-radius: 10px;
}
#recentLabel {
color: black;
font-size: 16pt;
font-weight: bold;
}
QToolTip {
background-color: <color:tool_tip/background>;
color: <color:tool_tip/text>;
font-size: <setting:font_size>pt;
}
@@ -1,9 +1,9 @@
#undo_redo_bar {
background: white;
background: transparent;
}
QPushButton {
background: #E0E0E0;
background: <color:search/button/normal>;
border: none;
background-position: 15px 5px;
height: 30px;
@@ -22,19 +22,19 @@ QPushButton {
}
QPushButton:disabled {
background: #F4F4F4;
background: <color:search/button/disabled>;
}
QPushButton:hover {
background: #B2B2B2;
background: <color:search/button/hover>;
}
QPushButton:pressed {
background: #626262;
background: <color:search/button/press>;
}
QToolTip {
background-color: rgb(204, 204, 204);
border: 1px solid rgb(0, 0, 0);
color: rgb(0, 0, 0);
background-color: <color:tool_tip/background>;
color: <color:tool_tip/text>;
font-size: <setting:font_size>pt;
}
+129
View File
@@ -0,0 +1,129 @@
class Point
{
public:
Point(int x, int y)
: x(x)
, y(y)
{
}
int x;
int y;
};
class Shape
{
public:
virtual void draw() = 0;
};
class Line
: public Shape
{
public:
Line(Point start, Point end)
: start(start)
, end(end)
{
}
void draw()
{
// line drawing
}
private:
Point start;
Point end;
};
class Circle
: public Shape
{
public:
Circle(Point center, int radius)
: center(center)
, radius(radius)
{}
void draw()
{
// circle drawing
}
private:
Point center;
int radius;
};
class Image
{
public:
Image(int width, int height)
: width(width)
, height(height)
, idx(0)
{
shapes = new Shape*[10];
}
~Image()
{
for (int i = 0; i < idx; i++)
{
delete shapes[i];
}
delete [] shapes;
}
void addShape(Shape* shape)
{
if (idx < 10)
{
shapes[idx] = shape;
idx++;
}
}
void draw()
{
for (int i = 0; i < idx; i++)
{
shapes[i]->draw();
}
}
private:
Shape** shapes;
int idx;
int width;
int height;
};
void drawStickMan()
{
Image stickman(100, 200);
// head
stickman.addShape(new Circle(Point(50, 50), 25));
// torso
stickman.addShape(new Line(Point(50, 75), Point(50, 180)));
// arms
stickman.addShape(new Line(Point(50, 100), Point(10, 125)));
stickman.addShape(new Line(Point(50, 100), Point(90, 125)));
// legs
stickman.addShape(new Line(Point(50, 100), Point(10, 125)));
stickman.addShape(new Line(Point(50, 100), Point(90, 125)));
stickman.draw();
}
+3
View File
@@ -0,0 +1,3 @@
// nothing here
// except for text
+197
View File
@@ -0,0 +1,197 @@
int number = 3;
int calculate();
int calculate(long i)
{
int a = 1 + 2;
return a;
}
int calculate()
{
int a = 1 + 2;
return a;
}
int calculate(int i)
{
int a = 1 + 2;
return a;
}
#define CALL_CALCULATE() \
do \
{ \
calculate(); \
} \
while(0) \
int main()
{
CALL_CALCULATE();
}
int count = 0;
void countUp()
{
count += 1;
}
void countDown()
{
count -= 1;
}
void countUpTen()
{
for (int i = 0; i < 10; i++)
{
countUp();
}
}
class Person
{
public:
Person(char* name)
: name(name)
, age(0)
, weight(3)
, height(50)
{
}
char* askForName() const
{
return name;
}
void gainWeight(int gain)
{
weight += gain;
}
void grow(int gain)
{
height += gain;
}
void celebrateBirthday()
{
age += 1;
grow(5);
gainWeight(3);
}
private:
char* name;
int age;
int height;
int weight;
};
class Vehicle
{
protected:
int wheelCount;
int seatCount;
};
class Car
: public Vehicle
{
public:
Car()
{
wheelCount = 4;
seatCount = 5;
}
};
class Truck
: public Vehicle
{
public:
Truck()
{
wheelCount = 6;
seatCount = 2;
}
};
template<typename T>
T sum(T a, T b)
{
return a + b;
}
class Apple {};
class Pear {};
template<typename Fruit>
class Basket
{
public:
Fruit** field;
};
Basket<Apple> apples;
Basket<Pear> pears;
class Dog {};
class Cat
{
Dog getDog();
};
class Bird
{
Dog getDog();
Cat getCat();
};
class Fish
{
Dog getDog();
Cat getCat();
Bird getBird();
};
class Horse
: public Dog
{
Dog getDog();
Cat getCat();
Bird getBird();
Fish getFish();
};
class Building {};
class House : public Building {};
class Tower : public Building {};
class SkyScrapper : public Building {};
class Mansion : public Building {};
class Shard : public House, public Tower, public SkyScrapper, public Mansion {};
typedef unsigned int uint;
uint a = 1 + 2;
enum Size
{
SMALL,
MEDIUM,
LARGE
};
+27
View File
@@ -6,3 +6,30 @@ public:
{
}
};
template <typename T>
class Fooo
{
public:
void bar()
{
}
};
template <typename T, typename T::a::type U>
class Foooo1
{
public:
void bar()
{
}
};
template <typename T, typename T::type U>
class Foooo2
{
public:
void bar()
{
}
};
+6 -1
View File
@@ -5,4 +5,9 @@ int main()
Foo<true, int, float> ft;
ft.bar();
return 0;
}
}
@@ -0,0 +1,67 @@
#include "artificial_player.h"
ArtificialPlayer::ArtificialPlayer( Field::Token token, const char* name )
: Player( token, name ) {
}
ArtificialPlayer::~ArtificialPlayer() {
}
Field::Move ArtificialPlayer::Turn( const Field& field ) const {
Field fakeField = field.Clone();
Node node = MinMax( fakeField, token_ );
return node.move;
}
ArtificialPlayer::Node ArtificialPlayer::MinMax( Field& field, Field::Token token ) const {
Node node;
node.value = -10000;
Field::Move move;
int sameMove;
for ( int i = 0; i < 3; i++ ) {
move.row = i;
for ( int j = 0; j < 3; j++ ) {
move.col = j;
if ( !field.IsEmpty( move ) ) {
continue;
}
field.MakeMove( move, token );
int turnValue = Evaluate( field, token );
if ( !turnValue && !field.IsFull() ) {
turnValue = -MinMax( field, Field::Opponent( token ) ).value;
}
field.ClearMove( move );
if ( turnValue > node.value ) {
node.move = move;
node.value = turnValue;
sameMove = 1;
} else if ( turnValue == node.value ) {
sameMove++;
if ( 1 % sameMove == 0 ) {
node.move = move;
}
}
}
}
return node;
}
int ArtificialPlayer::Evaluate( const Field& field, Field::Token token ) const {
if ( field.SameInRow( token, 3 ) ) {
return 2;
} else if ( field.SameInRow( Field::Opponent( token ), 2 ) ) {
return -1;
} else if ( field.SameInRow( token, 2 ) > 1 ) {
return 1;
}
return 0;
}
@@ -0,0 +1,24 @@
#ifndef _ARTIFICIAL_PLAYER_
#define _ARTIFICIAL_PLAYER_
#include "player.h"
class ArtificialPlayer : public Player {
public:
ArtificialPlayer( Field::Token token, const char* name );
virtual ~ArtificialPlayer();
virtual Field::Move Turn( const Field& field ) const;
private:
struct Node {
Field::Move move;
int value;
};
Node MinMax( Field& field, Field::Token token ) const;
int Evaluate( const Field& field, Field::Token token ) const;
};
#endif // _ARTIFICIAL_PLAYER_
+126
View File
@@ -0,0 +1,126 @@
#include "field.h"
#include "io.h"
Field::Token Field::Opponent( Token token ) {
if ( token == PlayerA ) {
return PlayerB;
} else if (token == PlayerB){
return PlayerA;
} else {
return None;
}
}
Field::Field()
: left_( 9 ) {
grid_ = new Token* [3];
for ( int i = 0; i < 3 ; i++ ) {
grid_[i] = new Token[3];
}
}
Field::~Field() {
for ( int i = 0; i < 3; i++ ) {
delete grid_[i];
}
delete [] grid_;
}
Field Field::Clone() const {
Field field;
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
field.grid_[i][j] = grid_[i][j];
}
}
field.left_ = left_;
return field;
}
void Field::Clear() {
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
grid_[i][j] = None;
}
}
left_ = 9;
}
void Field::Show() const {
io::stringOut(" 1 2 3\n");
for ( int row = 0; row < 3; row++ ) {
io::numberOut(row + 1);
io::stringOut(" ");
for ( int col = 0; col < 3; col++ ) {
if ( grid_[row][col] == PlayerA ) {
io::stringOut(" X ");
} else if ( grid_[row][col] == PlayerB ) {
io::stringOut(" O ");
} else {
io::stringOut(" ");
}
if ( col < 2 ) {
io::stringOut("|");
}
}
if ( row < 2 ) {
io::stringOut("\n -----------\n");
}
}
io::stringOut("\n\n");
}
int Field::SameInRow( Token token, int amount ) const {
int sum = amount * token;
int count = 0;
for ( int i = 0; i < 3; i++ ) {
if ( grid_[i][0] + grid_[i][1] + grid_[i][2] == sum ) {
count++;
} else if ( grid_[0][i] + grid_[1][i] + grid_[2][i] == sum ) {
count++;
}
}
if ( grid_[0][0] + grid_[1][1] + grid_[2][2] == sum ) {
count++;
} else if ( grid_[2][0] + grid_[1][1] + grid_[0][2] == sum ) {
count++;
}
return count;
}
bool Field::InRange( const Move& move ) const {
return move.row >= 0 && move.row < 3 && move.col >= 0 && move.col < 3;
}
bool Field::IsEmpty( const Move& move ) const {
return grid_[move.row][move.col] == None;
}
bool Field::IsFull() const {
return left_ == 0;
}
void Field::MakeMove( const Move& move, Token token ) {
if ( !InRange( move ) || !IsEmpty( move ) || token == None || !left_ ) {
return;
}
grid_[move.row][move.col] = token;
left_--;
}
void Field::ClearMove( const Move& move ) {
if ( !InRange( move ) || !IsEmpty( move ) || left_ == 9 ) {
return;
}
grid_[move.row][move.col] = None;
left_++;
}
+12 -118
View File
@@ -1,9 +1,6 @@
#ifndef _FIELD_
#define _FIELD_
#include <cassert>
#include <iostream>
class Field {
public:
enum Token {
@@ -12,132 +9,29 @@ public:
PlayerB = 4
};
static Token Opponent( Token token ) {
assert( token != None );
if ( token == PlayerA ) {
return PlayerB;
} else {
return PlayerA;
}
}
static Token Opponent( Token token );
struct Move {
int row;
int col;
};
Field()
: left_( 9 ) {
grid_ = new Token* [3];
for ( int i = 0; i < 3 ; i++ ) {
grid_[i] = new Token[3];
}
}
Field();
~Field();
~Field() {
for ( int i = 0; i < 3; i++ ) {
delete grid_[i];
}
delete [] grid_;
}
Field Clone() const;
void Clear();
Field Clone() const {
Field field;
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
field.grid_[i][j] = grid_[i][j];
}
}
field.left_ = left_;
return field;
}
void Show() const;
void Clear() {
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
grid_[i][j] = None;
}
}
left_ = 9;
}
int SameInRow( Token token, int amount ) const;
void Show() const {
std::cout << " 1 2 3\n";
for ( int row = 0; row < 3; row++ ) {
std::cout << row + 1 << " ";
bool InRange( const Move& move ) const;
bool IsEmpty( const Move& move ) const;
bool IsFull() const;
for ( int col = 0; col < 3; col++ ) {
if ( grid_[row][col] == PlayerA ) {
std::cout << " X ";
} else if ( grid_[row][col] == PlayerB ) {
std::cout << " O ";
} else {
std::cout << " ";
}
if ( col < 2 ) {
std::cout << "|";
}
}
if ( row < 2 ) {
std::cout << "\n -----------\n";
}
}
std::cout << "\n\n";
}
int SameInRow( Token token, int amount ) const {
int sum = amount * token;
int count = 0;
for ( int i = 0; i < 3; i++ ) {
if ( grid_[i][0] + grid_[i][1] + grid_[i][2] == sum ) {
count++;
} else if ( grid_[0][i] + grid_[1][i] + grid_[2][i] == sum ) {
count++;
}
}
if ( grid_[0][0] + grid_[1][1] + grid_[2][2] == sum ) {
count++;
} else if ( grid_[2][0] + grid_[1][1] + grid_[0][2] == sum ) {
count++;
}
return count;
}
bool InRange( const Move& move ) const {
return move.row >= 0 && move.row < 3 && move.col >= 0 && move.col < 3;
}
bool IsEmpty( const Move& move ) const {
return grid_[move.row][move.col] == None;
}
bool IsFull() const {
return left_ == 0;
}
void MakeMove( const Move& move, Token token ) {
assert( InRange( move ) );
assert( IsEmpty( move ) );
assert( token != None );
assert( left_ );
grid_[move.row][move.col] = token;
left_--;
}
void ClearMove( const Move& move ) {
assert( InRange(move) );
assert( !IsEmpty(move) );
assert( left_ < 9 );
grid_[move.row][move.col] = None;
left_++;
}
void MakeMove( const Move& move, Token token );
void ClearMove( const Move& move );
private:
Token** grid_;
@@ -0,0 +1,49 @@
#include "human_player.h"
#include "io.h"
HumanPlayer::HumanPlayer( Field::Token token, const char* name )
: Player( token, name ) {
}
HumanPlayer::~HumanPlayer() {
}
Field::Move HumanPlayer::Turn( const Field& field ) const {
Field::Move move;
io::stringOut(name_);
io::stringOut("\n");
do {
move = Input();
move.row -= 1;
move.col -= 1;
} while ( !Check( field, move ) );
return move;
}
Field::Move HumanPlayer::Input() const {
Field::Move move;
move.row = -1;
move.col = -1;
io::stringOut("Insert row: ");
move.row = io::numberIn();
io::stringOut("Insert column: ");
move.col = io::numberIn();
io::stringOut("\n");
return move;
}
bool HumanPlayer::Check( const Field& field, const Field::Move& move ) const {
if ( !field.InRange( move ) ) {
io::stringOut("Wrong input!\n");
return false;
} else if ( !field.IsEmpty( move ) ) {
io::stringOut("Is occupied!\n");
return false;
}
return true;
}
+19
View File
@@ -0,0 +1,19 @@
#ifndef _HUMAN_PLAYER_
#define _HUMAN_PLAYER_
#include "player.h"
class HumanPlayer : public Player {
public:
HumanPlayer( Field::Token token, const char* name );
virtual ~HumanPlayer();
virtual Field::Move Turn( const Field& field ) const;
private:
Field::Move Input() const;
bool Check( const Field& field, const Field::Move& move ) const;
};
#endif // _HUMAN_PLAYER_
+23
View File
@@ -0,0 +1,23 @@
#include "io.h"
// #include <iostream>
// #include <sstream>
// #include <string>
int io::numberIn() {
// std::string input;
// getline( std::cin, input );
// std::stringstream stream( input );
int number;
// stream >> number;
return number;
}
void io::numberOut(int num) {
// std::cout << num;
}
void io::stringOut(const char* str) {
// std::cout << str;
}
+13
View File
@@ -0,0 +1,13 @@
#ifndef _IO_
#define _IO_
namespace io {
int numberIn();
void numberOut(int num);
void stringOut(const char* str);
}
#endif // _IO_
+19
View File
@@ -0,0 +1,19 @@
#include "player.h"
Player::Player( Field::Token token, const char* name )
: token_( token )
, name_( name ) {
}
Player::~Player() {
}
const Field::Token& Player::getToken() const
{
return token_;
}
const char* Player::getName() const
{
return name_;
}
+5 -17
View File
@@ -1,33 +1,21 @@
#ifndef _PLAYER_
#define _PLAYER_
#include <string>
#include "field.h"
class Player {
public:
Player( Field::Token token, const std::string& name )
: token_( token )
, name_( name ) {
}
virtual ~Player() {}
Player( Field::Token token, const char* name );
virtual ~Player();
virtual Field::Move Turn( const Field& field ) const = 0;
const Field::Token& getToken() const
{
return token_;
}
const std::string getName() const
{
return name_;
}
const Field::Token& getToken() const;
const char* getName() const;
protected:
const Field::Token token_;
const std::string name_;
const char* name_;
};
#endif // _PLAYER_
+85
View File
@@ -0,0 +1,85 @@
#include "tictactoe.h"
#include "artificial_player.h"
#include "human_player.h"
#include "io.h"
TicTacToe::TicTacToe() {
players_[0] = 0;
players_[1] = 0;
}
TicTacToe::~TicTacToe() {
Reset();
}
bool TicTacToe::Start() {
Reset();
io::stringOut("Tic Tac Toe\n\n[1] Human\n[2] Computer\n[3] Quit\n\n");
players_[0] = SelectPlayer( Field::PlayerA, "Player A" );
if ( !players_[0] ) {
return false;
}
players_[1] = SelectPlayer( Field::PlayerB, "Player B" );
if ( !players_[1] ) {
return false;
}
io::stringOut("\n");
return true;
}
void TicTacToe::Run() {
field_.Show();
int playerIndex = 0;
for ( int i = 0; i < 9; i++ ) {
Player& player = *players_[playerIndex];
field_.MakeMove( player.Turn( field_ ), player.getToken() );
field_.Show();
if ( field_.SameInRow( player.getToken(), 3 ) ) {
io::stringOut(player.getName());
io::stringOut(" won!\n\n");
return;
}
playerIndex = ( playerIndex + 1 ) % 2;
}
io::stringOut("Game ends in draw!\n\n");
}
void TicTacToe::Reset() {
field_.Clear();
for ( int i = 0; i < 2; i++ ) {
if ( players_[i] ) {
delete players_[i];
players_[i] = 0;
}
}
}
Player* TicTacToe::SelectPlayer( Field::Token token, const char* name ) const {
int selection = 0;
while ( true ) {
io::stringOut("Choose ");
io::stringOut(name);
io::stringOut(": ");
selection = io::numberIn();
switch ( selection ) {
case 1 : return new HumanPlayer( token, name );
case 2 : return new ArtificialPlayer( token, name );
case 3 : return 0;
default : io::stringOut("Wrong input!\n");
}
}
}
+6 -76
View File
@@ -1,90 +1,20 @@
#ifndef _TIC_TAC_TOE_
#define _TIC_TAC_TOE_
#include "computer.h"
#include "field.h"
#include "human.h"
#include "input.h"
#include "player.h"
class TicTacToe {
public:
TicTacToe() {
players_[0] = NULL;
players_[1] = NULL;
}
TicTacToe();
~TicTacToe();
~TicTacToe() {
Reset();
}
bool Start() {
Reset();
std::cout << "Tic Tac Toe\n\n[1] Human\n[2] Computer\n[3] Quit\n\n";
players_[0] = SelectPlayer( Field::PlayerA, "PlayerA" );
if ( !players_[0] ) {
return false;
}
players_[1] = SelectPlayer( Field::PlayerB, "PlayerB" );
if ( !players_[1] ) {
return false;
}
std::cout << '\n';
return true;
}
void Run() {
field_.Show();
int playerIndex = 0;
for ( int i = 0; i < 9; i++ ) {
Player& player = *players_[playerIndex];
field_.MakeMove( player.Turn( field_ ), player.getToken() );
field_.Show();
if ( field_.SameInRow( player.getToken(), 3 ) ) {
std::cout << player.getName() << " won!\n\n";
return;
}
playerIndex = ( playerIndex + 1 ) % 2;
}
std::cout << "Game ends in draw!\n\n";
}
bool Start();
void Run();
private:
void Reset() {
field_.Clear();
for ( int i = 0; i < 2; i++ ) {
if ( players_[i] ) {
delete players_[i];
players_[i] = NULL;
}
}
}
Player* SelectPlayer( Field::Token token, const std::string& name ) const {
int selection;
while ( true ) {
std::cout << "Choose " << name << ": ";
input::number( &selection );
switch ( selection ) {
case 1 : return new HumanPlayer( token, name );
case 2 : return new ArtificialPlayer( token, name );
case 3 : return NULL;
default : std::cout << "Wrong input!\n";
}
}
}
void Reset();
Player* SelectPlayer( Field::Token token, const char* name ) const;
Player* players_[2];
Field field_;
+147
View File
@@ -0,0 +1,147 @@
#ifndef _FIELD_
#define _FIELD_
#include <cassert>
#include <iostream>
class Field {
public:
enum Token {
None = 0,
PlayerA = 1,
PlayerB = 4
};
static Token Opponent( Token token ) {
assert( token != None );
if ( token == PlayerA ) {
return PlayerB;
} else {
return PlayerA;
}
}
struct Move {
int row;
int col;
};
Field()
: left_( 9 ) {
grid_ = new Token* [3];
for ( int i = 0; i < 3 ; i++ ) {
grid_[i] = new Token[3];
}
}
~Field() {
for ( int i = 0; i < 3; i++ ) {
delete grid_[i];
}
delete [] grid_;
}
Field Clone() const {
Field field;
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
field.grid_[i][j] = grid_[i][j];
}
}
field.left_ = left_;
return field;
}
void Clear() {
for ( int i = 0; i < 3; i++ ) {
for ( int j = 0; j < 3; j++ ) {
grid_[i][j] = None;
}
}
left_ = 9;
}
void Show() const {
std::cout << " 1 2 3\n";
for ( int row = 0; row < 3; row++ ) {
std::cout << row + 1 << " ";
for ( int col = 0; col < 3; col++ ) {
if ( grid_[row][col] == PlayerA ) {
std::cout << " X ";
} else if ( grid_[row][col] == PlayerB ) {
std::cout << " O ";
} else {
std::cout << " ";
}
if ( col < 2 ) {
std::cout << "|";
}
}
if ( row < 2 ) {
std::cout << "\n -----------\n";
}
}
std::cout << "\n\n";
}
int SameInRow( Token token, int amount ) const {
int sum = amount * token;
int count = 0;
for ( int i = 0; i < 3; i++ ) {
if ( grid_[i][0] + grid_[i][1] + grid_[i][2] == sum ) {
count++;
} else if ( grid_[0][i] + grid_[1][i] + grid_[2][i] == sum ) {
count++;
}
}
if ( grid_[0][0] + grid_[1][1] + grid_[2][2] == sum ) {
count++;
} else if ( grid_[2][0] + grid_[1][1] + grid_[0][2] == sum ) {
count++;
}
return count;
}
bool InRange( const Move& move ) const {
return move.row >= 0 && move.row < 3 && move.col >= 0 && move.col < 3;
}
bool IsEmpty( const Move& move ) const {
return grid_[move.row][move.col] == None;
}
bool IsFull() const {
return left_ == 0;
}
void MakeMove( const Move& move, Token token ) {
assert( InRange( move ) );
assert( IsEmpty( move ) );
assert( token != None );
assert( left_ );
grid_[move.row][move.col] = token;
left_--;
}
void ClearMove( const Move& move ) {
assert( InRange(move) );
assert( !IsEmpty(move) );
assert( left_ < 9 );
grid_[move.row][move.col] = None;
left_++;
}
private:
Token** grid_;
int left_;
};
#endif // _FIELD_
+11
View File
@@ -0,0 +1,11 @@
#include "tictactoe.h"
int main() {
TicTacToe tictactoe;
while ( tictactoe.Start() ) {
tictactoe.Run();
}
return 0;
}
+33
View File
@@ -0,0 +1,33 @@
#ifndef _PLAYER_
#define _PLAYER_
#include <string>
#include "field.h"
class Player {
public:
Player( Field::Token token, const std::string& name )
: token_( token )
, name_( name ) {
}
virtual ~Player() {}
virtual Field::Move Turn( const Field& field ) const = 0;
const Field::Token& getToken() const
{
return token_;
}
const std::string getName() const
{
return name_;
}
protected:
const Field::Token token_;
const std::string name_;
};
#endif // _PLAYER_
@@ -0,0 +1,93 @@
#ifndef _TIC_TAC_TOE_
#define _TIC_TAC_TOE_
#include "computer.h"
#include "field.h"
#include "human.h"
#include "input.h"
#include "player.h"
class TicTacToe {
public:
TicTacToe() {
players_[0] = NULL;
players_[1] = NULL;
}
~TicTacToe() {
Reset();
}
bool Start() {
Reset();
std::cout << "Tic Tac Toe\n\n[1] Human\n[2] Computer\n[3] Quit\n\n";
players_[0] = SelectPlayer( Field::PlayerA, "PlayerA" );
if ( !players_[0] ) {
return false;
}
players_[1] = SelectPlayer( Field::PlayerB, "PlayerB" );
if ( !players_[1] ) {
return false;
}
std::cout << '\n';
return true;
}
void Run() {
field_.Show();
int playerIndex = 0;
for ( int i = 0; i < 9; i++ ) {
Player& player = *players_[playerIndex];
field_.MakeMove( player.Turn( field_ ), player.getToken() );
field_.Show();
if ( field_.SameInRow( player.getToken(), 3 ) ) {
std::cout << player.getName() << " won!\n\n";
return;
}
playerIndex = ( playerIndex + 1 ) % 2;
}
std::cout << "Game ends in draw!\n\n";
}
private:
void Reset() {
field_.Clear();
for ( int i = 0; i < 2; i++ ) {
if ( players_[i] ) {
delete players_[i];
players_[i] = NULL;
}
}
}
Player* SelectPlayer( Field::Token token, const std::string& name ) const {
int selection;
while ( true ) {
std::cout << "Choose " << name << ": ";
input::number( &selection );
switch ( selection ) {
case 1 : return new HumanPlayer( token, name );
case 2 : return new ArtificialPlayer( token, name );
case 3 : return NULL;
default : std::cout << "Wrong input!\n";
}
}
}
Player* players_[2];
Field field_;
};
#endif // _TIC_TAC_TOE_
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<config>
<source>
<SourcePath>data/src</SourcePath>
</source>
</config>
+378 -79
View File
@@ -1,67 +1,337 @@
ConfigManager.cpp WARNING: value path/to/nowhere is not present in config.
Storage.cpp INFO: file: input.cc < 0:0 0:0>
Storage.cpp INFO: class: A <input.cc 1:7 1:7>
Storage.cpp INFO: method: A::A <input.cc 4:2 4:2>
Storage.cpp INFO: global usage: A::A -> A::count <input.cc 5:3 5:7>
Storage.cpp INFO: method: A::A <input.cc 8:2 8:2>
Storage.cpp INFO: global usage: A::A -> A::count <input.cc 9:3 9:7>
Storage.cpp INFO: method: A::getCount <input.cc 12:13 12:20>
Storage.cpp INFO: global usage: A::getCount -> A::count <input.cc 14:10 14:14>
Storage.cpp INFO: method: A::process <input.cc 18:15 18:21>
Storage.cpp INFO: field: A::count <input.cc 21:13 21:17>
Storage.cpp INFO: class: B <input.cc 24:7 24:7>
Storage.cpp INFO: inheritance: B : A <input.cc 25:4 25:11>
Storage.cpp INFO: method: B::process <input.cc 28:15 28:21>
Storage.cpp INFO: override: A::process -> B::process < 0:0 0:0>
Storage.cpp INFO: type usage: B::process -> int <input.cc 30:3 30:5>
Storage.cpp INFO: function: _main_ <input.cc 34:5 34:10>
Storage.cpp INFO: type usage: _main_ -> B <input.cc 36:2 36:2>
Storage.cpp INFO: call: _main_ -> B::B <input.cc 36:4 36:4>
Storage.cpp INFO: call: _main_ -> A::getCount <input.cc 38:9 38:21>
SearchMatch.cpp INFO:
1 matches for "_main_":
931 _main_
^^^^^^
SearchMatch.cpp INFO:
1 matches for "_main_":
931 _main_
^^^^^^
SearchMatch.cpp INFO:
1 matches for "A::A":
190 A::A
^^^^
Storage.cpp INFO: file: input.cc < 0:0 0:0>
Storage.cpp INFO: class: A <input.cc 1:7 1:7>
Storage.cpp INFO: method: A::A <input.cc 4:2 4:2>
Storage.cpp INFO: global usage: A::A -> A::count <input.cc 5:3 5:7>
Storage.cpp INFO: method: A::getCount <input.cc 8:13 8:20>
Storage.cpp INFO: global usage: A::getCount -> A::count <input.cc 10:10 10:14>
Storage.cpp INFO: method: A::process <input.cc 14:15 14:21>
Storage.cpp INFO: field: A::count <input.cc 17:13 17:17>
Storage.cpp INFO: class: B <input.cc 20:7 20:7>
Storage.cpp INFO: inheritance: B : A <input.cc 21:4 21:11>
Storage.cpp INFO: method: B::process <input.cc 24:15 24:21>
Storage.cpp INFO: override: A::process -> B::process < 0:0 0:0>
Storage.cpp INFO: type usage: B::process -> int <input.cc 26:3 26:5>
Storage.cpp INFO: function: main <input.cc 30:5 30:8>
Storage.cpp INFO: type usage: main -> B <input.cc 32:2 32:2>
Storage.cpp INFO: call: main -> B::B <input.cc 32:4 32:4>
Storage.cpp INFO: call: main -> A::getCount <input.cc 34:9 34:21>
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
ConfigManager.cpp WARNING: value source/HeaderSearchPaths/HeaderSearchPath is not present in config.
Token.cpp ERROR: Location Id was not referenced by this Token.
Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined
Node.cpp WARNING: Cannot change NodeType after it was already set from namespace to class
Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined
Edge.cpp ERROR: Nodes are not plain copies.
Edge.cpp ERROR: Edge usage can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge usage can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge usage can't go from Node undefined to Node undefined
Settings.cpp WARNING: File for Settings not found.
Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge use can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge use can't go from Node undefined to Node undefined
Edge.cpp ERROR: Edge child can't go from Node undefined to Node undefined
Settings.cpp WARNING: File for Settings not found: data/SettingsTestSuite/wrong_settings.xml
ConfigManager.cpp WARNING: value Bool is not present in config.
ConfigManager.cpp WARNING: value Int is not present in config.
ConfigManager.cpp WARNING: value Float is not present in config.
ConfigManager.cpp WARNING: value String is not present in config.
Settings.cpp WARNING: File for Settings not found.
Settings.cpp WARNING: File for Settings not found: data/SettingsTestSuite/wrong_settings.xml
ConfigManager.cpp WARNING: value Bool is not present in config.
ConfigManager.cpp WARNING: value Int is not present in config.
ConfigManager.cpp WARNING: value Float is not present in config.
@@ -71,71 +341,100 @@ ConfigManager.cpp WARNING: value Int is not present in config.
ConfigManager.cpp WARNING: value Float is not present in config.
ConfigManager.cpp WARNING: value String is not present in config.
ConfigManager.cpp WARNING: value NewBool is not present in config.
Graph.cpp ERROR: Can't remove member edge, without removing the child node.
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: typedef: type -> int <file.cpp 1:1 1:1>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: class: Class <file.cpp 1:1 1:1>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: struct: Struct <file.cpp 1:1 1:1>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: global: Global <file.cpp 1:42 1:42>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: global: Global <file.cpp 1:7 1:7>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: field: m_field <file.cpp 1:3 1:3>
Storage.cpp ERROR: Field is not a member of anything.
Storage.cpp ERROR: Field needs to have access type [public, protected, private] but has none.
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: field: Struct::m_field <file.cpp 1:11 1:11>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: function: isTrue <file.cpp 1:14 1:14>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: method: isMethod <file.cpp 1:9 1:9>
Storage.cpp ERROR: Method is not a member of anything.
Storage.cpp ERROR: Method needs to have access type [public, protected, private] but has none.
Storage.cpp INFO: method: isMethod <file.cpp 1:1 1:1>
Storage.cpp ERROR: Method is not a member of anything.
Storage.cpp ERROR: Method needs to have access type [public, protected, private] but has none.
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: method: Class::isMethod <file.cpp 1:1 1:1>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: namespace: utility <file.cpp 1:1 1:1>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: enum: Category <file.cpp 1:17 1:17>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: enum: Class::Category <file.cpp 1:1 1:1>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: enum constant: VALUE <file.cpp 1:1 1:1>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: class: ClassA <file.cpp 1:0 1:0>
Storage.cpp INFO: class: ClassB <file.cpp 1:0 1:0>
Storage.cpp INFO: inheritance: ClassB : ClassA <file.cpp 1:5 1:5>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: struct: StructA <file.cpp 1:0 1:0>
Storage.cpp INFO: struct: StructB <file.cpp 1:0 1:0>
Storage.cpp INFO: inheritance: StructB : StructA <file.cpp 1:5 1:5>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: method: A::isMethod <file.cpp 1:9 1:9>
Storage.cpp INFO: method: B::isMethod <file.cpp 1:7 1:7>
Storage.cpp INFO: override: A::isMethod -> B::isMethod < 0:0 0:0>
Storage.cpp INFO: override: A::isMethod -> B::isMethod <file.cpp 1:4 1:4>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
Storage.cpp INFO: function: func <file.cpp 1:0 1:0>
Storage.cpp INFO: call: isTrue -> func <file.cpp 1:9 1:9>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: global: global <file.cpp 1:0 1:0>
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
Storage.cpp INFO: call: global -> isTrue <file.cpp 1:7 1:7>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
Storage.cpp INFO: field: Foo::m_field <file.cpp 1:0 1:0>
Storage.cpp INFO: field usage: isTrue -> Foo::m_field <file.cpp 1:7 1:7>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
Storage.cpp INFO: global: global <file.cpp 1:0 1:0>
Storage.cpp INFO: global usage: isTrue -> global <file.cpp 1:7 1:7>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
Storage.cpp INFO: struct: Struct <file.cpp 1:0 1:0>
Storage.cpp INFO: type usage: isTrue -> Struct <file.cpp 1:0 1:0>
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
Storage.cpp INFO: function: isTrue <file.h 1:0 1:0>
Storage.cpp INFO: function: main <file.cpp 1:0 1:0>
Storage.cpp INFO: call: main -> isTrue <file.cpp 1:0 1:0>
Storage.cpp INFO: function: isTrue <file.h 1:0 1:0>
Storage.cpp INFO: function: main <file.cpp 1:0 1:0>
Storage.cpp INFO: call: main -> isTrue <file.cpp 1:0 1:0>
Storage.cpp INFO: function: isTrue <file.h 1:0 1:0>
Storage.cpp INFO: function: main <file.cpp 1:0 1:0>
Storage.cpp INFO: call: main -> isTrue <file.cpp 1:0 1:0>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: file: file.h < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.h
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.cpp
Storage.cpp INFO: file: file.h < 0:0 0:0>
TextAccess.cpp ERROR: Could not open file file.h
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
Storage.cpp INFO: include: file.h <file.cpp 1:7 1:7>
Storage.cpp INFO: file: f.h < 0:0 0:0>
Storage.cpp INFO: file: file.h < 0:0 0:0>
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
Storage.cpp INFO: include: f.h <file.cpp 1:0 1:0>
Storage.cpp INFO: include: file.h <file.cpp 1:0 1:0>
Storage.cpp INFO: file: file.h < 0:0 0:0>
TextAccess.cpp WARNING: Index 'firstLine' has to be lower or equal index 'lastLine', is 3 > 2
TextAccess.cpp WARNING: Tried to access index 10. Maximum index is 8
TextAccess.cpp WARNING: Tried to access index 10. Maximum index is 8
+18 -10
View File
@@ -1,21 +1,29 @@
if (UNIX)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
set(CLANG_BUILD_PATH "$ENV{CLANG_DIR}/build_release")
else()
set(CLANG_BUILD_PATH "$ENV{CLANG_DIR}/build_debug")
endif()
else()
set(CLANG_BUILD_PATH "$ENV{CLANG_DIR}/build")
endif()
execute_process(
COMMAND $ENV{CLANG_DIR}/build/bin/llvm-config --cxxflags
COMMAND ${CLANG_BUILD_PATH}/bin/llvm-config --cxxflags
OUTPUT_VARIABLE CLANG_DEFINITIONS
)
# Remove unwanted flags
string(REPLACE "-fno-exceptions" "" CLANG_DEFINITIONS "${CLANG_DEFINITIONS}")
string(REPLACE "-fno-rtti" "" CLANG_DEFINITIONS "${CLANG_DEFINITIONS}")
set(CLANG_INCLUDE_DIRS
"$ENV{CLANG_DIR}/llvm/tools/clang/include"
"$ENV{CLANG_DIR}/build/tools/clang/include"
"${CLANG_BUILD_PATH}/tools/clang/include"
)
set(CLANG_LIBRARY_DIRS "$ENV{CLANG_DIR}/build/lib")
if (UNIX)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
set(CLANG_LIBRARY_DIRS "$ENV{CLANG_DIR}/build/Release+Asserts/lib")
endif()
endif ()
set(CLANG_LIBRARY_DIRS "${CLANG_BUILD_PATH}/lib")
set(CLANG_LIBRARIES
#clangApplyReplacements
+72
View File
@@ -0,0 +1,72 @@
# execute_process(
# COMMAND ${CMAKE_SOURCE_DIR}/setup/Linux/findAndCopyLibraries.sh
# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
# )
INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/bin/app/data
DESTINATION share/coati/.config/coati
PATTERN "log/*" EXCLUDE
PATTERN "projects" EXCLUDE
PATTERN "src" EXCLUDE
PATTERN "ApplicationSettings.xml" EXCLUDE
PATTERN "ApplicationSettings_distr.xml" EXCLUDE
PATTERN "ProjectSettings_template.xml" EXCLUDE
PATTERN "ApplicationSettings_template.xml" EXCLUDE
)
INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/bin/app/data/src/tictactoe
DESTINATION share/coati/.config/coati/data/projects
)
INSTALL(FILES ${CMAKE_SOURCE_DIR}/bin/app/data/projects/tictactoe.xml
DESTINATION share/coati/.config/coati/data/projects/tictactoe
)
INSTALL(FILES ${CMAKE_SOURCE_DIR}/bin/app/data/ApplicationSettings_distr.xml
DESTINATION share/coati/.config/coati/data
RENAME ApplicationSettings.xml)
INSTALL(FILES ${CMAKE_SOURCE_DIR}/setup/Linux/coati.desktop
DESTINATION share/applications
)
INSTALL(FILES ${CMAKE_SOURCE_DIR}/bin/app/data/gui/icon/logo_1024_1024.png
DESTINATION share/icons
RENAME coati.png)
INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/setup/Linux/lib
DESTINATION share/coati
)
INSTALL(FILES
${CMAKE_SOURCE_DIR}/setup/Linux/libqxcb.so
DESTINATION share/coati/platforms
)
INSTALL(PROGRAMS
${CMAKE_SOURCE_DIR}/setup/Linux/Coati.sh
DESTINATION share/coati
)
INSTALL(PROGRAMS ${CMAKE_SOURCE_DIR}/setup/Linux/coati
DESTINATION bin/
)
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
INSTALL(TARGETS ${APP_PROJECT_NAME}
DESTINATION share/coati
)
SET(CPACK_GENERATOR "DEB;TGZ")
SET(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")
# DEBIAN PACKAGE
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Andreas Stallinger <astallinger@coati.io>")
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
SET(CPACK_PACKAGE_NAME "Coati")
SET(CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://coati.io")
SET(CPACK_DEBIAN_PACKAGE_SECTION "devel")
SET(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local")
SET(CPACK_PACKAGE_VERSION ${GIT_VERSION_NUMBER})
SET(CPACK_PACKAGE_EXECUTABLES "Coati")
SET(CPACK_STRIP_FILES "share/coati/Coati")
INCLUDE(CPack)
+35
View File
@@ -0,0 +1,35 @@
# Generates the lincens.h file
# For adding a new 3rd Party License add the License File to the 3rd Party License Folder
# and a new AddLicense Line in below
set(LICENSES "")
set(LICENSE_ARRAY "")
set(LICENSEFOLDER "setup/3rdPartyLicenses")
function(ReadLicense licenseFile licenseVariable)
file(READ ${licenseFile} tempVariable)
STRING(REGEX REPLACE "\"" "\\\\\"" tempVariable "${tempVariable}")
STRING(REGEX REPLACE "\n" "\\\\n\"\n\t\"" tempVariable "${tempVariable}")
set(var "\n\nstatic const char *${licenseVariable}=\n\t\"")
set(LICENSES "${LICENSES}${var}${tempVariable}\"\;" PARENT_SCOPE)
endfunction(ReadLicense)
function(AddLicense licenseName licenseURL licenseFile)
ReadLicense(${licenseFile} ${licenseName}_license)
set(LICENSES ${LICENSES} PARENT_SCOPE)
set(LICENSE_ARRAY "${LICENSE_ARRAY}\n\tThirdPartyLicense(\"${licenseName}\", \"${licenseURL}\", ${licenseName}_license)," PARENT_SCOPE)
endfunction(AddLicense)
AddLicense("Qt" "http://qt.io" "${LICENSEFOLDER}/qt_LICENSE.TXT")
AddLicense("Clang" "http://clang.llvm.org/" "${LICENSEFOLDER}/clang_LICENSE.TXT")
AddLicense("Boost" "http://www.boost.org" "${LICENSEFOLDER}/boost_LICENSE.TXT")
AddLicense("TinyXMl" "http://www.grinninglizard.com/tinyxml2/" "${LICENSEFOLDER}/tinyxml_LICENSE.TXT")
AddLicense("CppSQLite" "http://www.codeproject.com/Articles/6343/CppSQLite-C-Wrapper-for-SQLite" "${LICENSEFOLDER}/CppSQLite_LICENSE.TXT")
AddLicense("Eigen" "http://eigen.tuxfamily.org" "${LICENSEFOLDER}/eigen_LICENSE.TXT")
set(LICENSE_ARRAY "${LICENSE_ARRAY}\n")
configure_file(
${CMAKE_SOURCE_DIR}/src/app/licenses.h.in
${CMAKE_SOURCE_DIR}/build/src/app/licenses.h
)
+48
View File
@@ -0,0 +1,48 @@
# simple check for a git repo
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
find_package(Git)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND ${GIT_EXECUTABLE} log -1 --format=%ci
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_TIME
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --long --match "[0-9]*" --abbrev=7 HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_VERSION_NUMBER
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else(EXISTS "${CMAKE_SOURCE_DIR}/.git")
set(GIT_BRANCH "")
set(GIT_COMMIT_HASH "")
set(GIT_VERSION_NUMBER "")
set(BUILD_TYPE "")
endif(EXISTS "${CMAKE_SOURCE_DIR}/.git")
message(STATUS "Git current branch: ${GIT_BRANCH}")
message(STATUS "Git commit hash: ${GIT_COMMIT_HASH}")
message(STATUS "Git commit time: ${GIT_COMMIT_TIME}")
message(STATUS "Git version number:" ${GIT_VERSION_NUMBER} )
configure_file(
${CMAKE_SOURCE_DIR}/src/app/version.h.in
${CMAKE_SOURCE_DIR}/build/src/app/version.h
)
+7
View File
@@ -0,0 +1,7 @@
# # build type needs to be in added as definition because of visual studio
message(STATUS "setting up the buildtype for versioning")
if(MSVC)
add_definitions(-DBUILD_TYPE="${ConfigurationName}")
else(MSVC)
add_definitions(-DBUILD_TYPE="${CMAKE_BUILD_TYPE}")
endif(MSVC)
+5
View File
@@ -27,6 +27,11 @@ then
#echo "debug app"
ninja -C build/Debug Coati && cd bin/app && Debug/Coati
fi
elif [ "$1" = "package" ] || [ "$1" = "p" ]
then
ninja package -C build/Release Coati
mkdir -p distr && cp build/Release/Coati*.deb distr && cp build/Release/Coati*.tar.gz distr
echo "Packages copied into the distr folder"
else
echo "no arguments: first argument 'release' or 'debug', second argument 'test' for tests"
fi
+1 -1
View File
@@ -40,7 +40,7 @@ fi
# fetch remote changes
echo -e $INFO "Fetching changes"
git fetch origin master
git fetch origin master --tags
if [ $? != 0 ]
then
+1 -1
View File
@@ -48,7 +48,7 @@ if [ $PLATFORM == "Windows" ]; then
echo -e $INFO "copy test_main file"
cp -u setup/cxx_test/windows/test_main.cpp build
echo -e $INFO "creating program icon"
sh script/create_windows_icon.sh
fi
@@ -0,0 +1,73 @@
The Code Project Open License (CPOL) 1.02
Preamble
========
This License governs Your use of the Work. This License is intended to allow developers to use the Source Code and Executable Files provided as part of the Work in any application in any form.
The main points subject to the terms of the License are:
* Source Code and Executable Files can be used in commercial applications;
* Source Code and Executable Files can be redistributed; and
* Source Code can be modified to create derivative works.
* No claim of suitability, guarantee, or any warranty whatsoever is provided. The software is provided "as-is".
* The Article accompanying the Work may not be distributed or republished without the Author's consent
This License is entered between You, the individual or other entity reading or otherwise making use of the Work licensed pursuant to this License and the individual or other entity which offers the Work under the terms of this License ("Author").
License
=======
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CODE PROJECT OPEN LICENSE ("LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HEREIN, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE AUTHOR GRANTS YOU THE RIGHTS CONTAINED HEREIN IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. IF YOU DO NOT AGREE TO ACCEPT AND BE BOUND BY THE TERMS OF THIS LICENSE, YOU CANNOT MAKE ANY USE OF THE WORK.
1. Definitions.
a. "Articles" means, collectively, all articles written by Author which describes how the Source Code and Executable Files for the Work may be used by a user.
b. "Author" means the individual or entity that offers the Work under the terms of this License.
c. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works.
d. "Executable Files" refer to the executables, binary files, configuration and any required data files included in the Work.
e. "Publisher" means the provider of the website, magazine, CD-ROM, DVD or other medium from or by which the Work is obtained by You.
f. "Source Code" refers to the collection of source code and configuration files used to create the Executable Files.
g. "Standard Version" refers to such a Work if it has not been modified, or has been modified in accordance with the consent of the Author, such consent being in the full discretion of the Author.
h. "Work" refers to the collection of files distributed by the Publisher, including the Source Code, Executable Files, binaries, data files, documentation, whitepapers and the Articles.
i. "You" is you, an individual or entity wishing to use the Work and exercise your rights under this License.
2. Fair Use/Fair Use Rights. Nothing in this License is intended to reduce, limit, or restrict any rights arising from fair use, fair dealing, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.
3. License Grant. Subject to the terms and conditions of this License, the Author hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
a. You may use the standard version of the Source Code or Executable Files in Your own applications.
b. You may apply bug fixes, portability fixes and other modifications obtained from the Public Domain or from the Author. A Work modified in such a way shall still be considered the standard version and will be subject to this License.
c. You may otherwise modify Your copy of this Work (excluding the Articles) in any way to create a Derivative Work, provided that You insert a prominent notice in each changed file stating how, when and where You changed that file.
d. You may distribute the standard version of the Executable Files and Source Code or Derivative Work in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution.
e. The Articles discussing the Work published in any form by the author may not be distributed or republished without the Author's consent. The author retains copyright to any such Articles. You may use the Executable Files and Source Code pursuant to this License but you may not repost or republish or otherwise distribute or make available the Articles, without the prior written consent of the Author.
Any subroutines or modules supplied by You and linked into the Source Code or Executable Files of this Work shall not be considered part of this Work and will not be subject to the terms of this License.
4. Patent License. Subject to the terms and conditions of this License, each Author hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, import, and otherwise transfer the Work.
5. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
a. You agree not to remove any of the original copyright, patent, trademark, and attribution notices and associated disclaimers that may appear in the Source Code or Executable Files.
b. You agree not to advertise or in any way imply that this Work is a product of Your own.
c. The name of the Author may not be used to endorse or promote products derived from the Work without the prior written consent of the Author.
d. You agree not to sell, lease, or rent any part of the Work. This does not restrict you from including the Work or any part of the Work inside a larger software distribution that itself is being sold. The Work by itself, though, cannot be sold, leased or rented.
e. You may distribute the Executable Files and Source Code only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy of the Executable Files or Source Code You distribute and ensure that anyone receiving such Executable Files and Source Code agrees that the terms of this License apply to such Executable Files and/or Source Code. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute the Executable Files or Source Code with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License.
f. You agree not to use the Work for illegal, immoral or improper purposes, or on pages containing illegal, immoral or improper material. The Work is subject to applicable export laws. You agree to comply with all such laws and regulations that may apply to the Work after Your receipt of the Work.
6. Representations, Warranties and Disclaimer. THIS WORK IS PROVIDED "AS IS", "WHERE IS" AND "AS AVAILABLE", WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES OR CONDITIONS OR GUARANTEES. YOU, THE USER, ASSUME ALL RISK IN ITS USE, INCLUDING COPYRIGHT INFRINGEMENT, PATENT INFRINGEMENT, SUITABILITY, ETC. AUTHOR EXPRESSLY DISCLAIMS ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES OR CONDITIONS, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF MERCHANTABILITY, MERCHANTABLE QUALITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY WARRANTY OF TITLE OR NON-INFRINGEMENT, OR THAT THE WORK (OR ANY PORTION THEREOF) IS CORRECT, USEFUL, BUG-FREE OR FREE OF VIRUSES. YOU MUST PASS THIS DISCLAIMER ON WHENEVER YOU DISTRIBUTE THE WORK OR DERIVATIVE WORKS.
7. Indemnity. You agree to defend, indemnify and hold harmless the Author and the Publisher from and against any claims, suits, losses, damages, liabilities, costs, and expenses (including reasonable legal or attorneys fees) resulting from or relating to any use of the Work by You.
8. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL THE AUTHOR OR THE PUBLISHER BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK OR OTHERWISE, EVEN IF THE AUTHOR OR THE PUBLISHER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
9. Termination.
a. This License and the rights granted hereunder will terminate automatically upon any breach by You of any term of this License. Individuals or entities who have received Derivative Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 6, 7, 8, 9, 10 and 11 will survive any termination of this License.
b. If You bring a copyright, trademark, patent or any other infringement claim against any contributor over infringements You claim are made by the Work, your License from such contributor to the Work ends automatically.
c. Subject to the above terms and conditions, this License is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, the Author reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
10. Publisher. The parties hereby confirm that the Publisher shall not, under any circumstances, be responsible for and shall not have any liability in respect of the subject matter of this License. The Publisher makes no warranty whatsoever in connection with the Work and shall not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. The Publisher reserves the right to cease making the Work available to You at any time without notice
11. Miscellaneous
a. This License shall be governed by the laws of the location of the head office of the Author or if the Author is an individual, the laws of location of the principal place of residence of the Author.
b. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this License, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
c. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
d. This License constitutes the entire agreement between the parties with respect to the Work licensed herein. There are no understandings, agreements or representations with respect to the Work not specified herein. The Author shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Author and You.
+23
View File
@@ -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.
+62
View File
@@ -0,0 +1,62 @@
==============================================================================
LLVM Release License
==============================================================================
University of Illinois/NCSA
Open Source License
Copyright (c) 2007-2015 University of Illinois at Urbana-Champaign.
All rights reserved.
Developed by:
LLVM Team
University of Illinois at Urbana-Champaign
http://llvm.org
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal with
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimers.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimers in the
documentation and/or other materials provided with the distribution.
* Neither the names of the LLVM Team, University of Illinois at
Urbana-Champaign, nor the names of its contributors may be used to
endorse or promote products derived from this Software without specific
prior written permission.
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 AND NONINFRINGEMENT. IN NO EVENT SHALL THE
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
SOFTWARE.
==============================================================================
The LLVM software contains code written by third parties. Such software will
have its own individual LICENSE.TXT file in the directory in which it appears.
This file will describe the copyrights, license, and restrictions which apply
to that code.
The disclaimer of warranty in the University of Illinois Open Source License
applies to all code in the LLVM Distribution, and nothing in any of the
other licenses gives permission to use the names of the LLVM Team or the
University of Illinois to endorse or promote products derived from this
Software.
The following pieces of software have additional or alternate copyrights,
licenses, and/or restrictions:
Program Directory
------- ---------
<none yet>
+373
View File
@@ -0,0 +1,373 @@
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, 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, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.
+164
View File
@@ -0,0 +1,164 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser 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
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
@@ -0,0 +1,21 @@
www.sourceforge.net/projects/tinyxml
Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com)
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.
Regular → Executable
+6 -14
View File
@@ -1,17 +1,9 @@
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
echo $dirname
tmp="${dirname#?}"
echo $tmp
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
echo $dirname
if [ ! -d "${HOME}/.config/coati" ]; then
# Control will enter here if $DIRECTORY doesn't exist.
cp -r /usr/local/share/coati/.config/coati ${HOME}/.config/coati
echo "First start of Coati from this user, copy default configfiles to ~/.config/coati"
fi
LD_LIBRARY_PATH=$dirname/lib
export LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH
$dirname/$appname
export LD_LIBRARY_PATH=/usr/local/share/coati/lib
cd ~/.config/coati && exec /usr/local/share/coati/Coati
+1
View File
@@ -0,0 +1 @@
/usr/local/share/coati/Coati.sh
+2 -3
View File
@@ -3,9 +3,8 @@ Name=Coati
GenericName=Coati
X-GNOME-FullName=Coati
Comment=Code Explorer
Exec=/usr/share/coati/Coati.sh %u
Exec=/usr/local/bin/coati
Icon=coati
Path=/usr/share/coati/
Terminal=true
Type=Application
StartupNotify=true
StartupNotify=true
+8
View File
@@ -0,0 +1,8 @@
#!/bin/sh
mkdir -p setup/Linux/lib
ldd bin/app/Release/Coati | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' setup/Linux/lib
# extra files needed and not copied with the lines above
cp /usr/lib/qt/plugins/platforms/libqxcb.so setup/Linux
cp /usr/lib/libQt5XcbQpa.so.5 setup/Linux/lib
cp /usr/lib/libQt5DBus.so.5 setup/Linux/lib
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2
View File
@@ -36,5 +36,7 @@
<true/>
<key>CFBundleIconFile</key>
<string>icon</string>
<key>LSMinimumSystemVersion</key>
<string>10.10</string>
</dict>
</plist>
+20 -12
View File
@@ -14,7 +14,7 @@ APP_NAME="@MACOSX_BINARY_NAME@"
DYNLIB_PATHS=(@MACOSX_DYNAMIC_LIBRARIES@)
QT_DIR="@MACOSX_QT_DIR@"
QT_FRAMEWORK_PATHS=(@MACOSX_QT_FRAMEWORKS@)
QT_FRAMEWORK_PATHS=(/Users/ebsi/Documents/Qt/5.5/clang_64/lib/QtDBus.framework/Versions/5/QtDBus @MACOSX_QT_FRAMEWORKS@)
if [ ! -x "$APP_NAME" ]
then
@@ -86,7 +86,7 @@ do
FRAMEWORK_SUB_PATH=$(echo $FRAMEWORK_BIN_PATH | grep -o "\w*.framework\S*")
install_name_tool -id @executable_path/../Frameworks/$FRAMEWORK_SUB_PATH $FRAMEWORK_DIR/$FRAMEWORK_SUB_PATH
install_name_tool -change $FRAMEWORK_BIN_PATH @executable_path/../Frameworks/$FRAMEWORK_SUB_PATH $APP_PATH
install_name_tool -change @rpath/$FRAMEWORK_SUB_PATH @executable_path/../Frameworks/$FRAMEWORK_SUB_PATH $APP_PATH
echo "framework" $FRAMEWORK_BIN_PATH $FRAMEWORK_PATH
done
@@ -94,23 +94,31 @@ done
# http://qt-project.org/doc/qt-4.8/deployment-mac.html
echo -e $INFO "Fixing framework dependencies"
install_name_tool -change $QT_DIR/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore $FRAMEWORK_DIR/QtGui.framework/Versions/5/QtGui
install_name_tool -change $QT_DIR/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore $FRAMEWORK_DIR/QtWidgets.framework/Versions/5/QtWidgets
install_name_tool -change $QT_DIR/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui $FRAMEWORK_DIR/QtWidgets.framework/Versions/5/QtWidgets
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore $FRAMEWORK_DIR/QtGui.framework/Versions/5/QtGui
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore $FRAMEWORK_DIR/QtWidgets.framework/Versions/5/QtWidgets
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui $FRAMEWORK_DIR/QtWidgets.framework/Versions/5/QtWidgets
install_name_tool -change $QT_DIR/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore $FRAMEWORK_DIR/QtPrintSupport.framework/Versions/5/QtPrintSupport
install_name_tool -change $QT_DIR/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui $FRAMEWORK_DIR/QtPrintSupport.framework/Versions/5/QtPrintSupport
install_name_tool -change $QT_DIR/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets $FRAMEWORK_DIR/QtPrintSupport.framework/Versions/5/QtPrintSupport
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore $FRAMEWORK_DIR/QtPrintSupport.framework/Versions/5/QtPrintSupport
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui $FRAMEWORK_DIR/QtPrintSupport.framework/Versions/5/QtPrintSupport
install_name_tool -change @rpath/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets $FRAMEWORK_DIR/QtPrintSupport.framework/Versions/5/QtPrintSupport
install_name_tool -change $QT_DIR/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore $PLUGIN_DIR/libqcocoa.dylib
install_name_tool -change $QT_DIR/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui $PLUGIN_DIR/libqcocoa.dylib
install_name_tool -change $QT_DIR/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets $PLUGIN_DIR/libqcocoa.dylib
install_name_tool -change $QT_DIR/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport @executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport $PLUGIN_DIR/libqcocoa.dylib
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore $PLUGIN_DIR/libqcocoa.dylib
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui $PLUGIN_DIR/libqcocoa.dylib
install_name_tool -change @rpath/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets $PLUGIN_DIR/libqcocoa.dylib
install_name_tool -change @rpath/QtPrintSupport.framework/Versions/5/QtPrintSupport @executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport $PLUGIN_DIR/libqcocoa.dylib
install_name_tool -change @rpath/QtDBus.framework/Versions/5/QtDBus @executable_path/../Frameworks/QtDBus.framework/Versions/5/QtDBus $PLUGIN_DIR/libqcocoa.dylib
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore $FRAMEWORK_DIR/QtDBus.framework/Versions/5/QtDBus
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore $FRAMEWORK_DIR/QtNetwork.framework/Versions/5/QtNetwork
install_name_tool -change @rpath/QtDBus.framework/Versions/5/QtDBus @executable_path/../Frameworks/QtDBus.framework/Versions/5/QtDBus $FRAMEWORK_DIR/QtNetwork.framework/Versions/5/QtNetwork
otool -L $FRAMEWORK_DIR/QtCore.framework/Versions/5/QtCore
otool -L $FRAMEWORK_DIR/QtGui.framework/Versions/5/QtGui
otool -L $FRAMEWORK_DIR/QtWidgets.framework/Versions/5/QtWidgets
otool -L $FRAMEWORK_DIR/QtPrintSupport.framework/Versions/5/QtPrintSupport
otool -L $FRAMEWORK_DIR/QtDBus.framework/Versions/5/QtDBus
otool -L $FRAMEWORK_DIR/QtNetwork.framework/Versions/5/QtNetwork
otool -L $PLUGIN_DIR/libqcocoa.dylib

Some files were not shown because too many files have changed in this diff Show More