Browse Source

- First public release

Patrick Jattke 7 years ago
commit
51a5414390
100 changed files with 11083 additions and 0 deletions
  1. 7 0
      LICENSE.md
  2. 219 0
      README.md
  3. 14 0
      code/.idea/code.iml
  4. 4 0
      code/.idea/deployment.xml
  5. 7 0
      code/.idea/dictionaries/pjattke.xml
  6. 17 0
      code/.idea/inspectionProfiles/Project_Default.xml
  7. 7 0
      code/.idea/inspectionProfiles/profiles_settings.xml
  8. 14 0
      code/.idea/misc.xml
  9. 8 0
      code/.idea/modules.xml
  10. 6 0
      code/.idea/vcs.xml
  11. 1159 0
      code/.idea/workspace.xml
  12. 44 0
      code/Attack/AttackParameters.py
  13. 256 0
      code/Attack/BaseAttack.py
  14. 151 0
      code/Attack/PortscanAttack.py
  15. 10 0
      code/Attack/__init__.py
  16. BIN
      code/Attack/__pycache__/AttackParameters.cpython-34.pyc
  17. BIN
      code/Attack/__pycache__/BaseAttack.cpython-34.pyc
  18. BIN
      code/Attack/__pycache__/PortscanAttack.cpython-34.pyc
  19. BIN
      code/Attack/__pycache__/__init__.cpython-34.pyc
  20. 130 0
      code/CLI.py
  21. 0 0
      code/GUI/__init__.py
  22. 136 0
      code/ID2TLib/AttackController.py
  23. 94 0
      code/ID2TLib/Controller.py
  24. 32 0
      code/ID2TLib/Label.py
  25. 140 0
      code/ID2TLib/LabelManager.py
  26. 103 0
      code/ID2TLib/PcapFile.py
  27. 226 0
      code/ID2TLib/Statistics.py
  28. BIN
      code/ID2TLib/Statistics.pyc
  29. 325 0
      code/ID2TLib/StatsDatabase.py
  30. 0 0
      code/ID2TLib/__init__.py
  31. BIN
      code/ID2TLib/__init__.pyc
  32. BIN
      code/ID2TLib/__pycache__/AttackController.cpython-34.pyc
  33. BIN
      code/ID2TLib/__pycache__/Controller.cpython-34.pyc
  34. BIN
      code/ID2TLib/__pycache__/Label.cpython-34.pyc
  35. BIN
      code/ID2TLib/__pycache__/LabelManager.cpython-34.pyc
  36. BIN
      code/ID2TLib/__pycache__/PcapFile.cpython-34.pyc
  37. BIN
      code/ID2TLib/__pycache__/Statistics.cpython-34.pyc
  38. BIN
      code/ID2TLib/__pycache__/StatsDatabase.cpython-34.pyc
  39. BIN
      code/ID2TLib/__pycache__/__init__.cpython-34.pyc
  40. BIN
      code/ID2TLib/libpcapreader.so
  41. 0 0
      code/__init__.py
  42. 3 0
      code/config_example
  43. 22 0
      code_boost/src/.idea/misc.xml
  44. 8 0
      code_boost/src/.idea/modules.xml
  45. 34 0
      code_boost/src/.idea/src.iml
  46. 6 0
      code_boost/src/.idea/vcs.xml
  47. 968 0
      code_boost/src/.idea/workspace.xml
  48. 61 0
      code_boost/src/CMakeLists.txt
  49. 538 0
      code_boost/src/SQLiteCpp/.cproject
  50. 85 0
      code_boost/src/SQLiteCpp/.project
  51. 163 0
      code_boost/src/SQLiteCpp/.travis.yml
  52. 96 0
      code_boost/src/SQLiteCpp/CHANGELOG.txt
  53. 286 0
      code_boost/src/SQLiteCpp/CMakeLists.txt
  54. 2304 0
      code_boost/src/SQLiteCpp/Doxyfile
  55. 58 0
      code_boost/src/SQLiteCpp/FindSQLiteCpp.cmake
  56. 20 0
      code_boost/src/SQLiteCpp/LICENSE.txt
  57. 302 0
      code_boost/src/SQLiteCpp/README.md
  58. 30 0
      code_boost/src/SQLiteCpp/TODO.txt
  59. 26 0
      code_boost/src/SQLiteCpp/appveyor.yml
  60. 25 0
      code_boost/src/SQLiteCpp/build.bat
  61. 20 0
      code_boost/src/SQLiteCpp/build.sh
  62. 423 0
      code_boost/src/SQLiteCpp/build/CMakeCache.txt
  63. 56 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake
  64. 57 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake
  65. BIN
      code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin
  66. BIN
      code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_CXX.bin
  67. 15 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CMakeSystem.cmake
  68. 389 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c
  69. BIN
      code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CompilerIdC/a.out
  70. 377 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
  71. BIN
      code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CompilerIdCXX/a.out
  72. 16 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/CMakeDirectoryInformation.cmake
  73. 57 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/CMakeError.log
  74. 321 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/CMakeOutput.log
  75. 2 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/CMakeRuleHashes.txt
  76. 68 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/Makefile.cmake
  77. 449 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/Makefile2
  78. 112 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/CXX.includecache
  79. 33 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/DependInfo.cmake
  80. 233 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/build.make
  81. 15 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/cmake_clean.cmake
  82. 3 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/cmake_clean_target.cmake
  83. 45 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/depend.internal
  84. 45 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/depend.make
  85. 8 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/flags.make
  86. 2 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/link.txt
  87. 7 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/progress.make
  88. BIN
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o
  89. BIN
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o
  90. BIN
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o
  91. BIN
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o
  92. BIN
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o
  93. BIN
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o
  94. 23 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/DependInfo.cmake
  95. 66 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/build.make
  96. 8 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/cmake_clean.cmake
  97. 3 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/depend.internal
  98. 3 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/depend.make
  99. 1 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/progress.make
  100. 82 0
      code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_example1.dir/CXX.includecache

+ 7 - 0
LICENSE.md

@@ -0,0 +1,7 @@
+Copyright (c) 2016: Emmanouil Vasilomanolakis, Carlos Garcia
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in 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:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+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 AUTHORS 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 IN THE SOFTWARE.

+ 219 - 0
README.md

@@ -0,0 +1,219 @@
+# ID2T - Intrusion Detection Dataset Toolkit
+A toolkit for synthetic injection of attacks into network datasets.
+
+## Synopsis
+As Intrusion Detection Systems encounter growing importance in the area of network security, the need of high quality network datasets for evaluation against real-world attacks rises. 
+
+Comparability of the results must be ensured by use of publicly available datasets. Existing datasets, however, suffer from several disadvantages. Often they do not provide ground trouth, consist of outdated traffic and do not contain any payload because of privacy reasons. Moreover, frequently datasets do not contain latest attacks and missing attack labels make it difficult to identify existing attacks and enable a transparent comparison of Intrusion Detection Systems.
+
+The ID2T application was first proposed in [[1]](#references) and targets the injection of attacks into existing network datasets. At first, it analyzes a given dataset and collects statistics from it. These statistics are stored into a local database. Next, these statistics can be used to define attack parameters for the injection of one or multiple attacks. Finally, the application creates the required attack packets and injects them into the existing file. Resulting in a new PCAP with the injected attacks and a label file indicating the position (timestamps) of the first and last attack packet.
+
+### References
+[1] [Cordero, Vasilomanolakis, Milanov et al.: ID2T: a DIY Dataset Creation Toolkit for Intrusion Detection System](https://www.tk.informatik.tu-darmstadt.de/fileadmin/user_upload/Group_TK/filesDownload/Published_Papers/id2t.pdf)
+
+## Getting Started
+
+### Prerequisities
+ID2T is written for Python 3.4 and C++ 11. The main modules were developed in Python whereas the statistics collection and PCAP merging is performed, due to performance reasons, by a C++ module which uses the library [Libtins](https://github.com/mfontanini/libtins/). These modules are invoked in python by using [Boost.Python](http://www.boost.org/doc/libs/1_62_0/libs/python/doc/html/index.html).
+
+#### Required Python Packages
+The following non-standard packages are required to run ID2T. Missing packages can be installed from terminal via  `` sudo pip install <packagename> ``.
+
+* ``scapy-python3``: used for packet creation
+* ``lea``: used for calculation of parameters derived by the gathered statistics
+
+### Installation
+There is no installation required. Simply clone the repository to get started:
+
+`` git clone https://git.tk.informatik.tu-darmstadt.de/SPIN/ID2T-toolkit ``
+
+After making the main file executable `` sudo chmod +x CLI.py ``, the application can be started by `` .\CLI.py ``
+
+## Usage examples 
+In this section we provide some examples on how to use ID2T.
+
+### Injecting an attack into an existing dataset
+In the following we inject the _PortscanAttack_ into the dataset *pcap_capture.pcap*:
+
+`` .\CLI.py -i /home/user/pcap_capture.pcap -a PortscanAttack ip.src=10.192.168.178.2 mac.src=32-08-24-DC-8D-27 inject.at-timestamp=1476301843 ``
+
+__Explanation__: The parameter ``-i/--input`` takes the path to the PCAP file. This triggers the statistics calculation of the file. After the calculation, the statistics are stored into a SQLite database. If the statistics were already computed in an earlier run, the data is retrieved from the generated database. This saves time as the calculation of the statistics may take long time - depending on the PCAP file size.
+
+An attack can be injected by providing ``-a/--attack`` followed by the attack name and the attack parameters. The available attacks and the allowed attack parameters vary, see section [Attack Parameters](#attack-parameters) for details. The parameter  ``-a/--attack`` can be provided multiple times for injection of multiple attacks. In this case the attacks are injected sequentially.
+
+### Querying the statistics database
+The statistics database supports queries of two different types:
+- standard SQL queries, called _user-defined query_, which are passed directly to the SQLite database,  
+e.g. `` SELECT ipAddress from ip_statistics WHERE pktsSent>1000 ``
+- pre-defined queries, called _named query_, which are like shortcuts for SQL queries,  
+e.g. ``most_used(ipAddress)``, ``random(all(ipAddress))``  
+The named queries can further be divided into two classes: 
+	- _selectors_ gather information from the database; the result can be a list of values, like ``all(ipAddress)``
+	- _extractors_ can be applied on gathered data and always reduce the result set to a single element, e.g. ``random(...)`` returns a randomly chosen element of the list
+
+A complete list of supported named queries can be found in section [Named Queries](#named-queries).
+
+These two types of queries can be executed either by providing the query string as an application argument or by going into the query mode. The application argument ``-q/--query`` takes a user-defined query or named query as input and prints the results to the terminal:
+
+Execute query directly: 
+`` .\CLI.py -i /home/user/pcap_capture.pcap -q <query> ``  
+
+If  ``-q/--query`` is called without any argument, the application enters into the query mode. This mode is like a read-eval-print-loop (REPL) for SQL queries. In this mode the user can repetively provide a query (must end by ";"), send the query by pressing ENTER and see the response in the terminal:
+
+Go into query mode: `` .\CLI.py -i /home/user/pcap_capture.pcap -q ``  
+
+_Example output_:
+	
+	Input file: /home/user/pcap_capture.pcap
+	Located statistics database at: /home/pjattke/ID2T_data/db/99/137/81a0a71b0f36.sqlite3
+	Loaded file statistics in 0.00 sec from statistics database.
+	Entering into query mode...
+	Enter statement ending by ';' and press ENTER to send query. Exit by sending an empty query..
+	most_used(ipAddress);
+	Query 'most_used(ipAddress);' returned:
+	203.114.236.243
+	avg(ttlValue);
+	Query 'avg(pktsSent);' returned:
+	5.322
+
+## Command reference
+
+### Application Arguments
+By calling ``.\CLI.py -h``, a list of available application arguments with a short description is shown.
+
+
+### Attack Parameters 
+In this section the allowed attack parameter for all available attacks are presented.
+
+#### Portscan Attack
+The _PortscanAttack_ currently supports the following attack parameters:
+
+| Field name          | Description                                                                    | Notes                                                                       |
+|---------------------|--------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
+| mac.src             | MAC address of the attacker                                                    |                                                                             |
+| mac.dst             | MAC address of the victim                                                      |                                                                             |
+| ip.src              | IP address of the attacker                                                     |                                                                             |
+| ip.src.shuffle      | Randomizes the source IP address if port.src is a list of ports                |                                                                             |
+| ip.dst              | IP address of the attacker                                                     |                                                                             |
+| port.src            | Ports used by the attacker                                                     | Can be specified in different ways, e.g.: "22, 23, 24, 8080", "22-24, 8080" |
+| port.src.shuffle    | Randomizes the source ports if port.src is a list of ports                     |                                                                             |
+| port.dst            | Ports to be scanned                                                            | Can be specified in different ways, e.g.: "22, 23, 24, 8080", "22-24, 8080" |
+| port.dst.shuffle    | Randomizes the destination ports if port.dst is a list of ports                |                                                                             |
+| port.open           | Open ports at the victim's side                                                | Can be specified in different ways, e.g.: "22, 23, 24, 8080", "22-24, 8080" |
+| port.dst.order-desc | Changes the destination port order from ascending (False) to descending (True) |                                                                             |
+| inject.at-timestamp | Starts injecting the attack at the given unix timestamp                        |                                                                             |
+| inject.after-pkt    | Starts injecting the attack after the given packet number                      |                                                                             |
+| packets.per-second  | Number of packets sent per second by the attacker                              |                                                                             |
+
+
+### Statistics DB Queries
+
+#### SQL Queries
+Querying the SQLite database by standard SQL queries requires knowledge about the database scheme. Therefore we provide a short overview about the tables and fields:
+
+Table: __ip_statistics__
+
+
+| Field name     | Description                                       |
+|----------------|---------------------------------------------------|
+| ipAddress      | IP Address of the host these statistics belong to |
+| kybtesSent     | KBytes of data sent                               |
+| kybtesReceived | KBytes of data received                           |
+| pktsSent       | Number of packets sent                            |
+| pktsReceived   | Number of packets received                        |
+
+Table: __ip_ttl__
+
+| Field name | Description                            |
+|------------|----------------------------------------|
+| ipAddress  | IP Address of the host                 |
+| ttlValue   | TTL value                              |
+| ttlCount   | Number of packets using this TTL value |
+
+
+Table: __ip_mac__
+
+| Field name | Description             |
+|------------|-------------------------|
+| ipAddress  | IP Address of the host  |
+| macAddress | MAC Address of the host |
+
+Table: __ip_ports__
+
+| Field name    | Description                                                                   |
+|---------------|-------------------------------------------------------------------------------|
+| ipAddress     | IP Address of the host                                                        |
+| portDirection | If data was received on this port "in", if data was sent from this port "out" |
+| portNumber    | Port number                                                                   |
+| portCount     | Number of packets using this port                                             |
+
+Table: __ip_protocols__
+
+| Field name    | Description                               |
+|---------------|-------------------------------------------|
+| ipAddress     | IP Address of the host                    |
+| protocolName  | Name of the protocol, e.g. TCP, UDP, IPv4 |
+| protocolCount | Number of packets using this protocol     |
+
+Table: __tcp_mss__
+
+| Field name | Description                                        |
+|------------|----------------------------------------------------|
+| ipAddress  | IP Address of the host                             |
+| mss        | Maximum Segment Size (TCP option) used by the host |
+
+
+#### Named Queries
+
+___Selectors___ are named queries which return a single element or a list of elements, depending on the values in the database and the query. 
+
+For example, the named query `` most_used(ipAddress) `` may return a single IP address if the most used IP address, based on the sum of packets sent and received, is unique. If there are multiple IP addresses with the same number of packets sent plus packets received, a list of IP addresses is returned. As the user cannot know how many values are returned, the extractors are ignored if the result is a single element.
+
+	most_used(ipAddress | macAddress | portNumber | protocolName | ttlValue) 
+	
+	least_used(ipAddress | macAddress | portNumber | protocolName | ttlValue) 
+	
+	avg(pktsReceived | pktsSent | kbytesSent | kbytesReceived | ttlValue | mss) 
+	
+	all(ipAddress | ttlValue | mss | macAddress | portNumber | protocolName) 
+	
+There are also parameterizable selectors which take conditions as input. Following two examples to show the syntax by example:
+
+	ipAddress(macAddress=AA:BB:CC:DD:EE:FF, pktsSent > 1000, kbytesReceived < 1000) 
+	-> returns one or multiple IP addresses matching the given criterias
+	Supports the fields: macAddress, ttlValue, ttlCount, portName, portNumber, portDirection, kbytesSent, kbytesReceived, pktsSent, pktsReceived, 
+	
+	macAddress(ipAddress=192.168.178.2) 
+	-> returns the MAC address matching the given criteria
+	Supports the field: ipAddress
+
+__Extractors__ are to be used on the result of a named query. If the result is a list, applying an extractor reduces the result set to a single element. If the result is already a single element, the extractor is ignored.
+```
+random(...)  -> returns a random element from a list
+first(...)   -> returns the first element from a list
+last(...)    -> returns the last element from a list
+```
+Attention: Named queries are designed to be combined with extractors, like ``random(all(ipAddress))``. But it is currently NOT possible to encapsulate multiple named queries, like `` macAddress(ipAddress=most_used(ipAddress))``. This can be circumvented by first querying ``most_used(ipAddress)`` and then inserting the result as argument in ``macAddress(…)``. 
+
+## Versioning
+The [SemVer](http://semver.org/spec/v2.0.0.html) is used for versioning. For currently available versions of ID2T, see page [releases](https://git.tk.informatik.tu-darmstadt.de/emmanouil.vasilomano/ID2T-toolkit/releases).
+
+## Release History
+
+* 0.1.0: Initial release
+	* Added attack: Portscan Attack
+
+
+## Authors
+
+- __Emmanouil Vasilomanolakis__ - _contact person, idea of ID2T, guidance and suggestions during development_
+
+- __Carlos Garcia__ - _idea of ID2T, guidance and suggestions during development_
+
+- __Nikolay Milanov__ - _development of first prototype within his Master Thesis_
+
+- __Patrick Jattke__ - _development of first public release within his Bachelor Thesis_
+
+## License
+
+Distributed under the MIT license. See [LICENSE](LICENSE.md) for more information.

+ 14 - 0
code/.idea/code.iml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="jdk" jdkName="Python 3.4.3 (/usr/bin/python3.4)" jdkType="Python SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+  <component name="PackageRequirementsSettings">
+    <option name="requirementsPath" value="" />
+  </component>
+  <component name="TestRunnerService">
+    <option name="PROJECT_TEST_RUNNER" value="Unittests" />
+  </component>
+</module>

+ 4 - 0
code/.idea/deployment.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PublishConfigData" persistUploadOnCheckin="false" />
+</project>

+ 7 - 0
code/.idea/dictionaries/pjattke.xml

@@ -0,0 +1,7 @@
+<component name="ProjectDictionaryState">
+  <dictionary name="pjattke">
+    <words>
+      <w>pcap</w>
+    </words>
+  </dictionary>
+</component>

+ 17 - 0
code/.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,17 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
+      <option name="ignoredIdentifiers">
+        <list>
+          <option value="Attack.all" />
+        </list>
+      </option>
+    </inspection_tool>
+    <inspection_tool class="SpellCheckingInspection" enabled="true" level="TYPO" enabled_by_default="true">
+      <option name="processCode" value="true" />
+      <option name="processLiterals" value="false" />
+      <option name="processComments" value="true" />
+    </inspection_tool>
+  </profile>
+</component>

+ 7 - 0
code/.idea/inspectionProfiles/profiles_settings.xml

@@ -0,0 +1,7 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="PROJECT_PROFILE" value="Project Default" />
+    <option name="USE_PROJECT_PROFILE" value="true" />
+    <version value="1.0" />
+  </settings>
+</component>

+ 14 - 0
code/.idea/misc.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.4.3 (/usr/bin/python3.4)" project-jdk-type="Python SDK" />
+</project>

+ 8 - 0
code/.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/code.iml" filepath="$PROJECT_DIR$/.idea/code.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
code/.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
+  </component>
+</project>

+ 1159 - 0
code/.idea/workspace.xml

@@ -0,0 +1,1159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AnalysisUIOptions">
+    <option name="GROUP_BY_SEVERITY" value="true" />
+    <option name="SCOPE_TYPE" value="2" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="ef10d9c8-0970-4ec8-90a9-81487fbad634" name="Default" comment="- Added comments to all classes and methods&#10;- Small code improvements" />
+    <ignored path="code.iws" />
+    <ignored path=".idea/workspace.xml" />
+    <ignored path=".idea/dataSources.local.xml" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="CoverageDataManager">
+    <SUITE FILE_PATH="coverage/code$pcapreader.coverage" NAME="pcapreader Coverage Results" MODIFIED="1470047802654" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/ID2TLib" />
+    <SUITE FILE_PATH="coverage/code$Hasher.coverage" NAME="Hasher Coverage Results" MODIFIED="1475518961954" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/ID2TLib" />
+    <SUITE FILE_PATH="coverage/code$ID2TLib.coverage" NAME="ID2TLib Coverage Results" MODIFIED="1467046039643" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/CLI" />
+    <SUITE FILE_PATH="coverage/code$CLI.coverage" NAME="CLI Coverage Results" MODIFIED="1476426510270" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
+    <SUITE FILE_PATH="coverage/code$PortscanAttack.coverage" NAME="PortscanAttack Coverage Results" MODIFIED="1470135189879" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/Attack" />
+    <SUITE FILE_PATH="coverage/code$FileHasher.coverage" NAME="FileHasher Coverage Results" MODIFIED="1470929280513" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/ID2TLib" />
+    <SUITE FILE_PATH="coverage/code$BaseAttack.coverage" NAME="BaseAttack Coverage Results" MODIFIED="1470221704615" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/Attack" />
+    <SUITE FILE_PATH="coverage/code$AttackController.coverage" NAME="AttackController Coverage Results" MODIFIED="1470208479922" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/ID2TLib" />
+    <SUITE FILE_PATH="coverage/code$PcapFile.coverage" NAME="PcapFile Coverage Results" MODIFIED="1471115797069" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/ID2TLib" />
+    <SUITE FILE_PATH="coverage/code$StatsDatabase.coverage" NAME="StatsDatabase Coverage Results" MODIFIED="1471278186826" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/ID2TLib" />
+    <SUITE FILE_PATH="coverage/code$Controller.coverage" NAME="Controller Coverage Results" MODIFIED="1476192827183" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/ID2TLib" />
+    <SUITE FILE_PATH="coverage/code$LabelManager.coverage" NAME="LabelManager Coverage Results" MODIFIED="1467880641533" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/ID2TLib" />
+  </component>
+  <component name="CreatePatchCommitExecutor">
+    <option name="PATCH_PATH" value="" />
+  </component>
+  <component name="DatabaseView">
+    <option name="GROUP_SCHEMA" value="true" />
+    <option name="GROUP_CONTENTS" value="false" />
+    <option name="SORT_POSITIONED" value="false" />
+    <option name="SHOW_TABLE_DETAILS" value="true" />
+    <option name="SHOW_EMPTY_GROUPS" value="false" />
+  </component>
+  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
+  <component name="FavoritesManager">
+    <favorites_list name="code" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf />
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Python Script" />
+      </list>
+    </option>
+  </component>
+  <component name="Git.Settings">
+    <option name="PREVIOUS_COMMIT_AUTHORS">
+      <list>
+        <option value="Patrick Jattke" />
+        <option value="Patrick Patrick Jattke" />
+      </list>
+    </option>
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../.." />
+    <option name="RECENT_BRANCH_BY_REPOSITORY">
+      <map>
+        <entry key="$PROJECT_DIR$/../.." value="dev" />
+      </map>
+    </option>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/CLI/ID2TLib.py" />
+        <option value="$PROJECT_DIR$/program/CLI/CLI.py" />
+        <option value="$PROJECT_DIR$/CLI/CLI.py" />
+        <option value="$PROJECT_DIR$/__init__.py" />
+        <option value="$PROJECT_DIR$/main.py" />
+        <option value="$PROJECT_DIR$/ID2TLib/pcapreader.py" />
+        <option value="$PROJECT_DIR$/Attack/DummyAttack.py" />
+        <option value="$PROJECT_DIR$/ID2TLib/FileHasher.py" />
+        <option value="$PROJECT_DIR$/Attack/__init__.py" />
+        <option value="$PROJECT_DIR$/ID2TLib/Hasher.py" />
+        <option value="$PROJECT_DIR$/ID2TLib/AttackController.py" />
+        <option value="$PROJECT_DIR$/Attack/BaseAttack.py" />
+        <option value="$PROJECT_DIR$/Attack/PortscanAttack.py" />
+        <option value="$PROJECT_DIR$/ID2TLib/Label.py" />
+        <option value="$PROJECT_DIR$/ID2TLib/LabelManager.py" />
+        <option value="$PROJECT_DIR$/ID2TLib/PcapFile.py" />
+        <option value="$PROJECT_DIR$/ID2TLib/Controller.py" />
+        <option value="$PROJECT_DIR$/ID2TLib/Statistics.py" />
+        <option value="$PROJECT_DIR$/ID2TLib/StatsDatabase.py" />
+        <option value="$PROJECT_DIR$/Attack/AttackParameters.py" />
+        <option value="$PROJECT_DIR$/CLI.py" />
+      </list>
+    </option>
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+    <sorting>DEFINITION_ORDER</sorting>
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="x" value="-1" />
+    <option name="width" value="1678" />
+    <option name="height" value="882" />
+  </component>
+  <component name="ProjectInspectionProfilesVisibleTreeState">
+    <entry key="Project Default">
+      <profile-state>
+        <expanded-state>
+          <State>
+            <id />
+          </State>
+          <State>
+            <id>Google App Engine (Python)</id>
+          </State>
+          <State>
+            <id>Python</id>
+          </State>
+          <State>
+            <id>Spelling</id>
+          </State>
+        </expanded-state>
+        <selected-state>
+          <State>
+            <id>SpellCheckingInspection</id>
+          </State>
+        </selected-state>
+      </profile-state>
+    </entry>
+  </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+      <manualOrder />
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="Scope" />
+      <pane id="ProjectPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="code" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="code" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="code" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="code" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="code" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="ID2TLib" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="code" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="code" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="Attack" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="Scratches" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyIntegratedToolsModulesConfigurable" />
+    <property name="settings.editor.splitter.proportion" value="0.2" />
+    <property name="com.intellij.database.dataSource.DataSourceTemplate" value="Sqlite (Xerial)" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth0" value="196" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder0" value="0" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth1" value="198" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder1" value="1" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth2" value="201" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder2" value="2" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth3" value="996" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder3" value="3" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth0" value="196" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder0" value="0" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth1" value="198" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder1" value="1" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth2" value="201" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder2" value="2" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth3" value="996" />
+    <property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder3" value="3" />
+  </component>
+  <component name="PyConsoleOptionsProvider">
+    <option name="myPythonConsoleState">
+      <console-settings module-name="code" is-module-sdk="true">
+        <option name="myUseModuleSdk" value="true" />
+        <option name="myModuleName" value="code" />
+      </console-settings>
+    </option>
+  </component>
+  <component name="RecentsManager">
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$" />
+      <recent name="$PROJECT_DIR$/program" />
+      <recent name="$PROJECT_DIR$/CLI" />
+    </key>
+  </component>
+  <component name="RunManager" selected="Python.CLI">
+    <configuration default="false" name="CLI" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/CLI.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="FileHasher" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/ID2TLib" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/ID2TLib/FileHasher.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="StatsDatabase" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/ID2TLib" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/ID2TLib/StatsDatabase.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="PcapFile" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/ID2TLib" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/ID2TLib/PcapFile.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="Controller" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/ID2TLib" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/ID2TLib/Controller.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="TARGET" value="" />
+      <option name="SETTINGS_FILE" value="" />
+      <option name="CUSTOM_SETTINGS" value="false" />
+      <option name="USE_OPTIONS" value="false" />
+      <option name="OPTIONS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
+      <method />
+    </configuration>
+    <configuration default="true" type="PyBehaveRunConfigurationType" factoryName="Behave">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="ADDITIONAL_ARGS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="PyLettuceRunConfigurationType" factoryName="Lettuce">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="ADDITIONAL_ARGS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="PythonConfigurationType" factoryName="Python">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="Tox" factoryName="Tox">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <module name="code" />
+      <method />
+    </configuration>
+    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
+      <node-interpreter>project</node-interpreter>
+      <node-options />
+      <gulpfile />
+      <tasks />
+      <arguments />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="js.build_tools.npm" factoryName="npm">
+      <command value="run-script" />
+      <scripts />
+      <node-interpreter value="project" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Attests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Doctests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Nosetests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Unittests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PUREUNITTEST" value="true" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="py.test">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="code" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="testToRun" value="" />
+      <option name="keywords" value="" />
+      <option name="params" value="" />
+      <option name="USE_PARAM" value="false" />
+      <option name="USE_KEYWORD" value="false" />
+      <method />
+    </configuration>
+    <list size="5">
+      <item index="0" class="java.lang.String" itemvalue="Python.CLI" />
+      <item index="1" class="java.lang.String" itemvalue="Python.FileHasher" />
+      <item index="2" class="java.lang.String" itemvalue="Python.StatsDatabase" />
+      <item index="3" class="java.lang.String" itemvalue="Python.PcapFile" />
+      <item index="4" class="java.lang.String" itemvalue="Python.Controller" />
+    </list>
+    <recent_temporary>
+      <list size="5">
+        <item index="0" class="java.lang.String" itemvalue="Python.CLI" />
+        <item index="1" class="java.lang.String" itemvalue="Python.Controller" />
+        <item index="2" class="java.lang.String" itemvalue="Python.StatsDatabase" />
+        <item index="3" class="java.lang.String" itemvalue="Python.PcapFile" />
+        <item index="4" class="java.lang.String" itemvalue="Python.FileHasher" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false">
+    <option name="remove_strategy" value="false" />
+  </component>
+  <component name="StructureViewFactory">
+    <option name="AUTOSCROLL_FROM_SOURCE" value="true" />
+    <option name="ACTIVE_ACTIONS" value=",SHOW_INHERITED" />
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="ef10d9c8-0970-4ec8-90a9-81487fbad634" name="Default" comment="" />
+      <created>1467043291711</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1467043291711</updated>
+    </task>
+    <task id="LOCAL-00001" summary="- Basic implementation for loading PCAP files">
+      <created>1467215671256</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1467215671256</updated>
+    </task>
+    <task id="LOCAL-00002" summary="- Implemented StatsDatabase&#10;- Improved CLI&#10;- Started with Label / LabelManager">
+      <created>1467707243224</created>
+      <option name="number" value="00002" />
+      <option name="presentableId" value="LOCAL-00002" />
+      <option name="project" value="LOCAL" />
+      <updated>1467707243224</updated>
+    </task>
+    <task id="LOCAL-00003" summary="- Finished LabelManager&#10;- Extended CLI&#10;- Added TODOs to PcapFile">
+      <created>1467919847518</created>
+      <option name="number" value="00003" />
+      <option name="presentableId" value="LOCAL-00003" />
+      <option name="project" value="LOCAL" />
+      <updated>1467919847562</updated>
+    </task>
+    <task id="LOCAL-00004" summary="- Added Attack package with BaseAttack and PortscanAttack&#10;- Added Controller for central coordination of class instances&#10;- Added libpcapreader (C++ boost::python lib)">
+      <created>1470236200133</created>
+      <option name="number" value="00004" />
+      <option name="presentableId" value="LOCAL-00004" />
+      <option name="project" value="LOCAL" />
+      <updated>1470236200133</updated>
+    </task>
+    <task id="LOCAL-00005" summary="- Enabled attack parameter specification by CLI argument">
+      <created>1470281896188</created>
+      <option name="number" value="00005" />
+      <option name="presentableId" value="LOCAL-00005" />
+      <option name="project" value="LOCAL" />
+      <updated>1470281896188</updated>
+    </task>
+    <task id="LOCAL-00006" summary="- Movings from PcapFile to Statistics&#10;- Enabled attack classes to access statistics">
+      <created>1470312681208</created>
+      <option name="number" value="00006" />
+      <option name="presentableId" value="LOCAL-00006" />
+      <option name="project" value="LOCAL" />
+      <updated>1470312681208</updated>
+    </task>
+    <task id="LOCAL-00007" summary="- Extended port scan attack">
+      <created>1470390759351</created>
+      <option name="number" value="00007" />
+      <option name="presentableId" value="LOCAL-00007" />
+      <option name="project" value="LOCAL" />
+      <updated>1470390759351</updated>
+    </task>
+    <task id="LOCAL-00009" summary="- Fixed packet generation in Portscan Attack&#10;- Adapted code to meet PEP8 guidelines&#10;- Fixed several bugs and inconsistencies&#10;- Attack pcap is created on hard drive">
+      <created>1471132615555</created>
+      <option name="number" value="00009" />
+      <option name="presentableId" value="LOCAL-00009" />
+      <option name="project" value="LOCAL" />
+      <updated>1471132615555</updated>
+    </task>
+    <task id="LOCAL-00010" summary="- Statistics are now stored/loaded based on the file's hash">
+      <created>1472207500630</created>
+      <option name="number" value="00010" />
+      <option name="presentableId" value="LOCAL-00010" />
+      <option name="project" value="LOCAL" />
+      <updated>1472207500630</updated>
+    </task>
+    <task id="LOCAL-00011" summary="- Merging implemented&#10;- BUG: Not all packets are processed">
+      <created>1472706261217</created>
+      <option name="number" value="00011" />
+      <option name="presentableId" value="LOCAL-00011" />
+      <option name="project" value="LOCAL" />
+      <updated>1472706261217</updated>
+    </task>
+    <task id="LOCAL-00012" summary="- Multiple attacks (with params) can now be provided">
+      <created>1472708834044</created>
+      <option name="number" value="00012" />
+      <option name="presentableId" value="LOCAL-00012" />
+      <option name="project" value="LOCAL" />
+      <updated>1472708834044</updated>
+    </task>
+    <task id="LOCAL-00013" summary="- Improved Portscan-Attack">
+      <created>1473004536000</created>
+      <option name="number" value="00013" />
+      <option name="presentableId" value="LOCAL-00013" />
+      <option name="project" value="LOCAL" />
+      <updated>1473004536000</updated>
+    </task>
+    <task id="LOCAL-00014" summary="- libpcapreader library updated: collectStatistics is not called automatically by constructor anymore&#10;- Label now stored at newfilename_label.xml&#10;- Label file contains now timestamp of first and last packet&#10;- Hash calculation only uses first 8 MByte of file&#10;- Terminal output improved">
+      <created>1474657611967</created>
+      <option name="number" value="00014" />
+      <option name="presentableId" value="LOCAL-00014" />
+      <option name="project" value="LOCAL" />
+      <updated>1474657611967</updated>
+    </task>
+    <task id="LOCAL-00015" summary="- Parameter inject.after-pkt can now be used to specify the position of the attack (instead of providing a timestamp)">
+      <created>1474747599104</created>
+      <option name="number" value="00015" />
+      <option name="presentableId" value="LOCAL-00015" />
+      <option name="project" value="LOCAL" />
+      <updated>1474747599104</updated>
+    </task>
+    <task id="LOCAL-00016" summary="- Statistics DBs are now stored at ~/ID2T_data/db/">
+      <created>1474799409718</created>
+      <option name="number" value="00016" />
+      <option name="presentableId" value="LOCAL-00016" />
+      <option name="project" value="LOCAL" />
+      <updated>1474799409718</updated>
+    </task>
+    <task id="LOCAL-00017" summary="- Added SQLiteCPP/&#10;- Adapted code: SQLite DB is now created and filled by C++ module&#10;- Introduced a param to force statistics recalculation (if DB already exists)&#10;- Adapted SQL queries to new DB structure&#10;- Added tag 'note' for attacks&#10;- Fixed loading of XML label file">
+      <created>1475513773230</created>
+      <option name="number" value="00017" />
+      <option name="presentableId" value="LOCAL-00017" />
+      <option name="project" value="LOCAL" />
+      <updated>1475513773230</updated>
+    </task>
+    <task id="LOCAL-00018" summary="- Added SQLiteCPP/&#10;- Adapted code: SQLite DB is now created and filled by C++ module&#10;- Introduced a param to force statistics recalculation (if DB already exists)&#10;- Adapted SQL queries to new DB structure&#10;- Added tag 'note' for attacks&#10;- Fixed loading of XML label file">
+      <created>1475513842710</created>
+      <option name="number" value="00018" />
+      <option name="presentableId" value="LOCAL-00018" />
+      <option name="project" value="LOCAL" />
+      <updated>1475513842710</updated>
+    </task>
+    <task id="LOCAL-00019" summary="- Adapted code: SQLite DB is now created and filled by C++ module&#10;- Introduced a param to force statistics recalculation (if DB already exists)&#10;- Adapted SQL queries to new DB structure&#10;- Added tag 'note' for attacks&#10;- Fixed loading of XML label file">
+      <created>1475513909937</created>
+      <option name="number" value="00019" />
+      <option name="presentableId" value="LOCAL-00019" />
+      <option name="project" value="LOCAL" />
+      <updated>1475513909937</updated>
+    </task>
+    <task id="LOCAL-00020" summary="- Implemented user-defined SQL query&#10;- Implemented named queries (pre-defined queries)&#10;- Implemented parameterizable named queries&#10;- Implemented printing functionality for query results&#10;- Implemented extractors: random, first, last">
+      <created>1476075195887</created>
+      <option name="number" value="00020" />
+      <option name="presentableId" value="LOCAL-00020" />
+      <option name="project" value="LOCAL" />
+      <updated>1476075195887</updated>
+    </task>
+    <task id="LOCAL-00021" summary="- Implemented query mode&#10;- Tested all named_queries and fixed errors in named_queries">
+      <created>1476098587920</created>
+      <option name="number" value="00021" />
+      <option name="presentableId" value="LOCAL-00021" />
+      <option name="project" value="LOCAL" />
+      <updated>1476098587921</updated>
+    </task>
+    <task id="LOCAL-00022" summary="- Added comments to all classes and methods&#10;- Small code improvements">
+      <created>1476280991164</created>
+      <option name="number" value="00022" />
+      <option name="presentableId" value="LOCAL-00022" />
+      <option name="project" value="LOCAL" />
+      <updated>1476280991164</updated>
+    </task>
+    <option name="localTasksCounter" value="23" />
+    <servers />
+  </component>
+  <component name="TodoView" selected-index="2">
+    <todo-panel id="selected-file">
+      <is-autoscroll-to-source value="true" />
+    </todo-panel>
+    <todo-panel id="all">
+      <are-packages-shown value="true" />
+      <is-autoscroll-to-source value="true" />
+    </todo-panel>
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-1" y="0" width="1678" height="882" extended-state="6" />
+    <editor active="false" />
+    <layout>
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.23128834" sideWeight="0.69342107" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32964602" sideWeight="0.497552" order="9" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.16500553" sideWeight="0.504896" order="0" side_tool="true" content_ui="tabs" />
+      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32986537" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3276316" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.16389811" sideWeight="0.49510404" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.23128834" sideWeight="0.30657893" order="0" side_tool="true" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39933628" sideWeight="0.497552" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.2118421" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" x="36" y="536" width="1640" height="280" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Inspection Results" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32890365" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32336655" sideWeight="0.49510404" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.2912514" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="Vcs.Log.UiProperties">
+    <option name="RECENTLY_FILTERED_USER_GROUPS">
+      <collection />
+    </option>
+    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
+      <collection />
+    </option>
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="VcsManagerConfiguration">
+    <option name="CHECK_CODE_CLEANUP_BEFORE_PROJECT_COMMIT" value="true" />
+    <MESSAGE value="- Basic implementation for loading PCAP files" />
+    <MESSAGE value="- Implemented StatsDatabase&#10;- Improved CLI&#10;- Started with Label / LabelManager" />
+    <MESSAGE value="- Finished LabelManager&#10;- Extended CLI&#10;- Added TODOs to PcapFile" />
+    <MESSAGE value="- Added Attack package with BaseAttack and PortscanAttack&#10;- Added Controller for central coordination of class instances&#10;- Added libpcapreader (C++ boost::python lib)" />
+    <MESSAGE value="- Enabled attack parameter specification by CLI argument" />
+    <MESSAGE value="- Movings from PcapFile to Statistics&#10;- Enabled attack classes to access statistics" />
+    <MESSAGE value="- Extended port scan attack" />
+    <MESSAGE value="- Fixed packet generation in Portscan Attack&#10;- Adapted code to meet PEP8 guidelines&#10;- Fixed several bugs and inconsistencies&#10;- Attack pcap is created on hard drive" />
+    <MESSAGE value="- Statistics are now stored/loaded based on the file's hash" />
+    <MESSAGE value="- Merging implemented&#10;- BUG: Not all packets are processed" />
+    <MESSAGE value="- Multiple attacks (with params) can now be provided" />
+    <MESSAGE value="- Improved Portscan-Attack" />
+    <MESSAGE value="- libpcapreader library updated: collectStatistics is not called automatically by constructor anymore&#10;- Label now stored at newfilename_label.xml&#10;- Label file contains now timestamp of first and last packet&#10;- Hash calculation only uses first 8 MByte of file&#10;- Terminal output improved" />
+    <MESSAGE value="- Parameter inject.after-pkt can now be used to specify the position of the attack (instead of providing a timestamp)" />
+    <MESSAGE value="- Statistics DBs are now stored at ~/ID2T_data/db/" />
+    <MESSAGE value="- Added SQLiteCPP/&#10;- Adapted code: SQLite DB is now created and filled by C++ module&#10;- Introduced a param to force statistics recalculation (if DB already exists)&#10;- Adapted SQL queries to new DB structure&#10;- Added tag 'note' for attacks&#10;- Fixed loading of XML label file" />
+    <MESSAGE value="- Adapted code: SQLite DB is now created and filled by C++ module&#10;- Introduced a param to force statistics recalculation (if DB already exists)&#10;- Adapted SQL queries to new DB structure&#10;- Added tag 'note' for attacks&#10;- Fixed loading of XML label file" />
+    <MESSAGE value="- Implemented user-defined SQL query&#10;- Implemented named queries (pre-defined queries)&#10;- Implemented parameterizable named queries&#10;- Implemented printing functionality for query results&#10;- Implemented extractors: random, first, last" />
+    <MESSAGE value="- Implemented query mode&#10;- Tested all named_queries and fixed errors in named_queries" />
+    <MESSAGE value="- Added comments to all classes and methods&#10;- Small code improvements" />
+    <MESSAGE value="- Adapted CLI.py to make application runnable in terminal" />
+    <option name="LAST_COMMIT_MESSAGE" value="- Adapted CLI.py to make application runnable in terminal" />
+    <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
+    <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager>
+      <breakpoints>
+        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
+          <url>file:///usr/local/lib/python3.4/dist-packages/scapy/packet.py</url>
+          <line>700</line>
+          <option name="timeStamp" value="140" />
+        </line-breakpoint>
+      </breakpoints>
+      <breakpoints-dialog>
+        <breakpoints-dialog />
+      </breakpoints-dialog>
+      <default-breakpoints>
+        <breakpoint type="python-exception">
+          <properties notifyOnTerminate="true" exception="BaseException">
+            <option name="notifyOnTerminate" value="true" />
+          </properties>
+        </breakpoint>
+      </default-breakpoints>
+      <option name="time" value="145" />
+    </breakpoint-manager>
+    <watches-manager />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/Attack/DummyAttack.py" />
+    <entry file="file:///usr/lib/python3.4/pkgutil.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="121">
+          <caret line="176" column="34" selection-start-line="176" selection-start-column="24" selection-end-line="176" selection-end-column="34" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.4/dist-packages/importer/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="360">
+          <caret line="24" column="16" selection-start-line="24" selection-start-column="14" selection-end-line="24" selection-end-column="16" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/lib/python3.4/importlib/_bootstrap.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="140">
+          <caret line="2254" column="4" selection-start-line="2254" selection-start-column="4" selection-end-line="2254" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/lib/python3.4/importlib/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="180">
+          <caret line="108" column="26" selection-start-line="108" selection-start-column="26" selection-end-line="108" selection-end-column="26" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/lib/python3.4/argparse.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="34">
+          <caret line="1594" column="52" selection-start-line="1594" selection-start-column="52" selection-end-line="1594" selection-end-column="63" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.4/dist-packages/scapy/data.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="244">
+          <caret line="182" column="4" selection-start-line="182" selection-start-column="4" selection-end-line="182" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/lib/python3.4/os.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="244">
+          <caret line="206" column="0" selection-start-line="206" selection-start-column="0" selection-end-line="206" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/ID2TLib/FileHasher.py" />
+    <entry file="file://$USER_HOME$/.PyCharm2016.1/system/python_stubs/-1247971765/_io.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="961" column="8" selection-start-line="961" selection-start-column="8" selection-end-line="961" selection-end-column="8" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/lib/python3.4/ipaddress.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="171">
+          <caret line="26" column="4" selection-start-line="26" selection-start-column="4" selection-end-line="26" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/lib/python3.4/tempfile.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="570" column="4" selection-start-line="570" selection-start-column="4" selection-end-line="570" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/.PyCharm2016.1/system/python_stubs/-1247971765/_sqlite3.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="279" column="8" selection-start-line="279" selection-start-column="8" selection-end-line="279" selection-end-column="8" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.4/dist-packages/lea/alea.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="106" column="0" selection-start-line="106" selection-start-column="0" selection-end-line="106" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/.PyCharm2016.1/system/python_stubs/-1247971765/itertools.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="187">
+          <caret line="666" column="17" selection-start-line="666" selection-start-column="14" selection-end-line="666" selection-end-column="17" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/.PyCharm2016.1/system/python_stubs/-1247971765/builtins.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="2711" column="8" selection-start-line="2711" selection-start-column="8" selection-end-line="2711" selection-end-column="8" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/lib/python3.4/codecs.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="171">
+          <caret line="306" column="0" selection-start-line="306" selection-start-column="0" selection-end-line="306" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.4/dist-packages/scapy/layers/inet.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="272">
+          <caret line="552" column="29" selection-start-line="552" selection-start-column="20" selection-end-line="552" selection-end-column="29" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/.PyCharm2016.1/system/python_stubs/-1247971765/time.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="306">
+          <caret line="263" column="7" selection-start-line="263" selection-start-column="7" selection-end-line="263" selection-end-column="7" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.4/dist-packages/scapy/layers/l2.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="135" column="13" selection-start-line="135" selection-start-column="13" selection-end-line="135" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/lib/python3.4/genericpath.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="241">
+          <caret line="47" column="4" selection-start-line="47" selection-start-column="4" selection-end-line="47" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/test.py" />
+    <entry file="file:///usr/lib/python3.4/xml/dom/minidom.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1408">
+          <caret line="112" column="8" selection-start-line="112" selection-start-column="8" selection-end-line="112" selection-end-column="8" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/ID2TLib/Hasher.py" />
+    <entry file="file:///usr/lib/python3.4/enum.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="248">
+          <caret line="252" column="0" selection-start-line="252" selection-start-column="0" selection-end-line="252" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/.PyCharm2016.2/system/python_stubs/-1247971765/_sqlite3.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="227">
+          <caret line="267" column="8" selection-start-line="267" selection-start-column="8" selection-end-line="267" selection-end-column="8" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.4/dist-packages/scapy/config.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="218">
+          <caret line="113" column="0" selection-start-line="113" selection-start-column="0" selection-end-line="113" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.4/dist-packages/scapy/fields.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="203">
+          <caret line="115" column="0" selection-start-line="115" selection-start-column="0" selection-end-line="115" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.4/dist-packages/scapy/base_classes.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="533">
+          <caret line="46" column="0" selection-start-line="46" selection-start-column="0" selection-end-line="46" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.4/dist-packages/scapy/packet.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="233">
+          <caret line="687" column="0" selection-start-line="687" selection-start-column="0" selection-end-line="687" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/lib/python3.4/dist-packages/scapy/utils.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="518">
+          <caret line="940" column="0" selection-start-line="940" selection-start-column="0" selection-end-line="941" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/GUI/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/.PyCharm2016.2/system/python_stubs/-1247971765/builtins.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="227">
+          <caret line="3538" column="8" selection-start-line="3538" selection-start-column="8" selection-end-line="3538" selection-end-column="8" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/lib/python3.4/random.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="352">
+          <caret line="726" column="0" selection-start-line="726" selection-start-column="0" selection-end-line="726" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/ID2TLib/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Attack/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="135">
+          <caret line="10" column="0" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Attack/BaseAttack.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="724">
+          <caret line="250" column="8" selection-start-line="250" selection-start-column="8" selection-end-line="250" selection-end-column="8" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Attack/PortscanAttack.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="105">
+          <caret line="14" column="44" selection-start-line="14" selection-start-column="44" selection-end-line="14" selection-end-column="44" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/_labels.xml" />
+    <entry file="file://$PROJECT_DIR$/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/config_example">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/ID2TLib/Label.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="165">
+          <caret line="11" column="57" selection-start-line="11" selection-start-column="57" selection-end-line="11" selection-end-column="57" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/ID2TLib/LabelManager.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="682">
+          <caret line="64" column="0" selection-start-line="64" selection-start-column="0" selection-end-line="64" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/.PyCharm2016.2/system/python_stubs/-1247971765/_sha1.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="227">
+          <caret line="25" column="8" selection-start-line="25" selection-start-column="8" selection-end-line="25" selection-end-column="8" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/ID2TLib/PcapFile.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="357">
+          <caret line="95" column="0" selection-start-line="95" selection-start-column="0" selection-end-line="95" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/ID2TLib/AttackController.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="192">
+          <caret line="83" column="30" selection-start-line="83" selection-start-column="30" selection-end-line="83" selection-end-column="30" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/ID2TLib/Controller.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="285">
+          <caret line="26" column="58" selection-start-line="26" selection-start-column="58" selection-end-line="26" selection-end-column="58" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/ID2TLib/Statistics.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-2276">
+          <caret line="22" column="40" selection-start-line="22" selection-start-column="40" selection-end-line="22" selection-end-column="40" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/ID2TLib/StatsDatabase.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1174">
+          <caret line="302" column="0" selection-start-line="302" selection-start-column="0" selection-end-line="302" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Attack/AttackParameters.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="221">
+          <caret line="16" column="41" selection-start-line="16" selection-start-column="41" selection-end-line="16" selection-end-column="41" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/CLI.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="116">
+          <caret line="93" column="0" selection-start-line="93" selection-start-column="0" selection-end-line="93" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+  </component>
+</project>

+ 44 - 0
code/Attack/AttackParameters.py

@@ -0,0 +1,44 @@
+from enum import Enum
+
+
+class Parameter(Enum):
+    """
+    Defines the shortname for attack parameters. The shortname may be used for attack parameter specification
+    when calling ID2T via the command line.
+    """
+    # type: IP address ------------------------------
+    IP_SOURCE = 'ip.src'  # source IP address
+    IP_DESTINATION = 'ip.dst'  # destination IP address
+    IP_DNS = 'ip.dns'  # IP address of DNS server
+    # type: MAC address -----------------------------
+    MAC_SOURCE = 'mac.src'  # MAC address of source
+    MAC_DESTINATION = 'mac.dst'  # MAC address of destination
+    # type: Port ------------------------------------
+    PORT_OPEN = 'port.open'  # open ports
+    PORT_DESTINATION = 'port.dst'  # destination ports
+    PORT_SOURCE = 'port.src'  # source ports
+    # type: Digits ----------------------------------
+    PACKETS_PER_SECOND = 'packets.per-second'  # packets per second
+    INJECT_AT_TIMESTAMP = 'inject.at-timestamp'  # unix epoch time where attack should be injected
+    INJECT_AFTER_PACKET = 'inject.after-pkt'  # packet after which attack should be injected
+    # type: boolean  --------------------------------
+    PORT_DEST_SHUFFLE = 'port.dst.shuffle'  # shuffles the destination ports if a list of ports is given
+    PORT_ORDER_DESC = 'port.dst.order-desc'  # uses a descending port order instead of a ascending order
+    IP_SOURCE_RANDOMIZE = 'ip.src.shuffle'  # randomizes the sources IP address if a list of IP addresses is given
+    PORT_SOURCE_RANDOM = 'port.src.shuffle'  # randomizes the source port if a list of sources ports is given
+
+
+class ParameterTypes(Enum):
+    """
+    Defines types for parameters. These types may be used in the specification of allowed parameters within the
+    individual attack classes. The type is used to verify the validity of the given value.
+    """
+    TYPE_IP_ADDRESS = 0
+    TYPE_MAC_ADDRESS = 1
+    TYPE_PORT = 2
+    TYPE_INTEGER_POSITIVE = 3
+    TYPE_TIMESTAMP = 4
+    TYPE_BOOLEAN = 5
+    TYPE_ASC_DSC = 6
+    TYPE_FLOAT = 7
+    TYPE_PACKET_POSITION = 8  # used to derive timestamp from parameter INJECT_AFTER_PACKET

+ 256 - 0
code/Attack/BaseAttack.py

@@ -0,0 +1,256 @@
+import ipaddress
+import re
+from abc import abstractmethod, ABCMeta
+
+import ID2TLib.libpcapreader as pr
+
+from Attack import AttackParameters
+from Attack.AttackParameters import Parameter
+from Attack.AttackParameters import ParameterTypes
+
+
+class BaseAttack(metaclass=ABCMeta):
+    """
+    Abstract base class for all attack classes. Provides basic functionalities, like parameter validation.
+    """
+
+    def __init__(self, statistics, name, description, attack_type):
+        """
+        To be called within the individual attack class to initialize the required parameters.
+
+        :param statistics: A reference to the Statistics class.
+        :param name: The name of the attack class.
+        :param description: A short description of the attack.
+        :param attack_type: The type the attack belongs to, like probing/scanning, malware.
+        """
+        # Reference to statistics class
+        self.statistics = statistics
+
+        # Class fields
+        self.attackName = name
+        self.attackDescription = description
+        self.attackType = attack_type
+        self.params = {}
+        self.supported_params = {}
+        self.attack_start_utime = 0
+        self.attack_end_utime = 0
+
+    @abstractmethod
+    def get_packets(self):
+        """
+        Creates the packets containing the attack.
+
+        :return: A list of packets ordered ascending by the packet's timestamp.
+        """
+        pass
+
+    ################################################
+    # HELPER VALIDATION METHODS
+    # Used to validate the given parameter values
+    ################################################
+
+    @staticmethod
+    def _is_mac_address(mac_address: str):
+        """
+        Verifies if the given string is a valid MAC address. Accepts the formats 00:80:41:ae:fd:7e and 00-80-41-ae-fd-7e.
+
+        :param mac_address: The MAC address as string.
+        :return: True if the MAC address is valid, otherwise False.
+        """
+        result = re.match('^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$', mac_address, re.MULTILINE)
+        return result is not None
+
+    @staticmethod
+    def _is_ip_address(ip_address: str):
+        """
+        Verifies if the given string is a valid IPv4/IPv6 address. Accepts comma-separated lists of IP addresses,
+        like "192.169.178.1, 192.168.178.2"
+
+        :param ip_address: The IP address as string.
+        :return: True if all IP addresses are valid, otherwise False. And a list of IP addresses as string.
+        """
+        ip_address_output = []
+        for ip in ip_address.split(','):
+            try:
+                ipaddress.ip_address(ip)
+                ip_address_output.append(ip)
+            except ValueError:
+                return False, ip_address_output
+        return True, ip_address_output
+
+    @staticmethod
+    def _is_port(ports_input: str):
+        """
+        Verifies if the given value is a valid port. Accepts port ranges, like 80-90, 80..99, 80...99.
+
+        :param ports_input: The port number as int or string.
+        :return: True if the port number is valid, otherwise False. If a port range was given, the range is resolved
+        and a list of ports is additionally returned.
+        """
+
+        def _is_invalid_port(num):
+            """
+            Checks whether the port number is invalid.
+
+            :param num: The port number as int.
+            :return: True if the port number is invalid, otherwise False.
+            """
+            return num < 0 or num > 65535
+
+        ports_input = ports_input.replace(' ', '').split(',')
+        ports_output = []
+
+        for port_entry in ports_input:
+            if isinstance(port_entry, int):
+                if _is_invalid_port(port_entry):
+                    return False
+                ports_output.append(port_entry)
+            elif isinstance(port_entry, str) and port_entry.isdigit():
+                # port_entry describes a single port
+                port_entry = int(port_entry)
+                if _is_invalid_port(port_entry):
+                    return False
+                ports_output.append(port_entry)
+            elif '-' in port_entry or '..' in port_entry:
+                # port_entry describes a port range
+                # allowed format: '12-123', '12..123', '12...123'
+                match = re.match('^([0-9]{1,4})(?:-|\.{2,3})([0-9]{1,4})$', port_entry)
+                # check validity of port range
+                # and create list of ports derived from given start and end port
+                (port_start, port_end) = int(match.group(1)), int(match.group(2))
+                if _is_invalid_port(port_start) or _is_invalid_port(port_end):
+                    return False
+                else:
+                    ports_list = [i for i in range(port_start, port_end + 1)]
+                # append ports at ports_output list
+                ports_output += ports_list
+        return True, ports_output
+
+    @staticmethod
+    def _is_timestamp(timestamp: str):
+        """
+        Checks whether the given value is in a valid timestamp format. The accepted format is:
+        YYYY-MM-DD h:m:s, whereas h, m, s may be one or two digits.
+
+        :param timestamp: The timestamp to be checked.
+        :return: True if the timestamp is valid, otherwise False.
+        """
+        is_valid = re.match('[0-9]{4}(?:-[0-9]{1,2}){2} (?:[0-9]{1,2}:){2}[0-9]{1,2}', timestamp)
+        return is_valid is not None
+
+    @staticmethod
+    def _is_boolean(value):
+        """
+        Checks whether the given value (string or bool) is a boolean. Strings are valid booleans if they are in:
+        {y, yes, t, true, on, 1, n, no, f, false, off, 0}.
+
+        :param value: The value to be checked.
+        :return: True if the value is a boolean, otherwise false. And the casted boolean.
+        """
+        # If value is already a boolean
+        if isinstance(value, bool):
+            return True, value
+
+        # If value is a string
+        # True values are y, yes, t, true, on and 1;
+        # False values are n, no, f, false, off and 0.
+        # Raises ValueError if value is anything else.
+        try:
+            import distutils.core
+            value = distutils.util.strtobool(value.lower())
+            is_bool = True
+        except ValueError:
+            is_bool = False
+        return is_bool, value
+
+    @staticmethod
+    def _is_float(value):
+        """
+        Checks whether the given value is a float.
+
+        :param value: The value to be checked.
+        :return: True if the value is a float, otherwise False. And the casted float.
+        """
+        try:
+            value = float(value)
+            return True, value
+        except ValueError:
+            return False, value
+
+    #########################################
+    # HELPER METHODS
+    #########################################
+
+    def add_param_value(self, param, value: str):
+        """
+        Adds the pair param : value to the dictionary of attack parameters. Prints and error message and skips the
+        parameter if the validation fails.
+
+        :param param: The parameter name.
+        :param value: The parameter's value.
+        :return: None.
+        """
+        # by default no param is valid
+        is_valid = False
+
+        # get AttackParameters instance associated with param
+        # for default values assigned in attack classes, like Parameter.PORT_OPEN
+        if isinstance(param, AttackParameters.Parameter):
+            param_name = param
+        # for values given by user input, like port.open
+        else:
+            # Get Enum key of given string identifier
+            param_name = AttackParameters.Parameter(param)
+
+        # Get parameter type of attack's required_params
+        param_type = self.supported_params.get(param_name)
+
+        # Verify validity of given value with respect to parameter type
+        if param_type is None:
+            print('Parameter ' + str(param_name) + ' not available for chosen attack. Skipping parameter.')
+
+        # If value is query -> get value from database
+        elif self.statistics.is_query(value):
+            value = self.statistics.process_db_query(value, False)
+            if value is not None and value is not "":
+                is_valid = True
+            else:
+                print('Error in given parameter value: ' + value + '. Data could not be retrieved.')
+
+        # Validate parameter depending on parameter's type
+        elif param_type == ParameterTypes.TYPE_IP_ADDRESS:
+            is_valid, value = self._is_ip_address(value)
+        elif param_type == ParameterTypes.TYPE_PORT:
+            is_valid, value = self._is_port(value)
+        elif param_type == ParameterTypes.TYPE_MAC_ADDRESS:
+            is_valid = self._is_mac_address(value)
+        elif param_type == ParameterTypes.TYPE_INTEGER_POSITIVE:
+            is_valid = value is None or (value.isdigit() and int(value) >= 0)
+        elif param_type == ParameterTypes.TYPE_FLOAT:
+            is_valid, value = self._is_float(value)
+        elif param_type == ParameterTypes.TYPE_TIMESTAMP:
+            is_valid = self._is_timestamp(value)
+        elif param_type == ParameterTypes.TYPE_BOOLEAN:
+            is_valid, value = self._is_boolean(value)
+        elif param_type == ParameterTypes.TYPE_PACKET_POSITION:
+            ts = pr.pcap_processor(self.pcap_filepath).get_timestamp_mu_sec(int(value))
+            if 0 <= int(value) <= self.statistics.get_packet_count() and ts >= 0:
+                is_valid = True
+                param_name = Parameter.INJECT_AT_TIMESTAMP
+                value = (ts / 1000000)  # convert microseconds from getTimestampMuSec into seconds
+
+        # add value iff validation was successful
+        if is_valid:
+            self.params[param_name] = value
+        else:
+            print("ERROR: Parameter " + str(param) + " or parameter value " + str(value) +
+                  " not valid. Skipping parameter.")
+
+    def get_param_value(self, param: Parameter):
+        """
+        Returns the parameter value for a given parameter.
+
+        :param param: The parameter whose value is wanted.
+        :return: The parameter's value.
+        """
+        return self.params[param]

+ 151 - 0
code/Attack/PortscanAttack.py

@@ -0,0 +1,151 @@
+import logging
+from random import shuffle, randint, choice, uniform
+
+from lea import Lea
+
+from Attack import BaseAttack
+from Attack.AttackParameters import Parameter as Param
+from Attack.AttackParameters import ParameterTypes
+
+logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
+# noinspection PyPep8
+from scapy.layers.inet import IP, Ether, TCP
+
+
+class PortscanAttack(BaseAttack.BaseAttack):
+    def __init__(self, statistics, pcap_file_path):
+        """
+        Creates a new instance of the PortscanAttack.
+
+        :param statistics: A reference to the statistics class.
+        """
+        # Initialize attack
+        super(PortscanAttack, self).__init__(statistics, "Portscan Attack", "Injects a nmap 'regular scan'",
+                                             "Scanning/Probing")
+
+        # Define allowed parameters and their type
+        self.supported_params = {
+            Param.IP_SOURCE: ParameterTypes.TYPE_IP_ADDRESS,
+            Param.IP_DESTINATION: ParameterTypes.TYPE_IP_ADDRESS,
+            Param.PORT_SOURCE: ParameterTypes.TYPE_PORT,
+            Param.PORT_DESTINATION: ParameterTypes.TYPE_PORT,
+            Param.PORT_OPEN: ParameterTypes.TYPE_PORT,
+            Param.MAC_SOURCE: ParameterTypes.TYPE_MAC_ADDRESS,
+            Param.MAC_DESTINATION: ParameterTypes.TYPE_MAC_ADDRESS,
+            Param.INJECT_AT_TIMESTAMP: ParameterTypes.TYPE_FLOAT,
+            Param.INJECT_AFTER_PACKET: ParameterTypes.TYPE_PACKET_POSITION,
+            Param.PORT_DEST_SHUFFLE: ParameterTypes.TYPE_BOOLEAN,
+            Param.PORT_ORDER_DESC: ParameterTypes.TYPE_BOOLEAN,
+            Param.IP_SOURCE_RANDOMIZE: ParameterTypes.TYPE_BOOLEAN,
+            Param.PACKETS_PER_SECOND: ParameterTypes.TYPE_FLOAT,
+            Param.PORT_SOURCE_RANDOM: ParameterTypes.TYPE_BOOLEAN}
+
+        # PARAMETERS: initialize with default values
+        # (values are overwritten if user specifies them)
+        most_used_ipAddress = self.statistics.process_db_query("most_used(ipAddress)")
+        self.add_param_value(Param.IP_SOURCE, most_used_ipAddress)
+        self.add_param_value(Param.IP_SOURCE_RANDOMIZE, 'False')
+        self.add_param_value(Param.IP_DESTINATION, '192.168.178.13')
+        self.add_param_value(Param.PORT_DESTINATION, '0-1023,1720,1900,8080')
+        self.add_param_value(Param.PORT_SOURCE, '8542')
+        self.add_param_value(Param.PORT_OPEN, '8080,9232,9233')
+        self.add_param_value(Param.PORT_SOURCE_RANDOM, 'False')
+        self.add_param_value(Param.PORT_DEST_SHUFFLE, 'False')
+        self.add_param_value(Param.PORT_ORDER_DESC, 'False')
+        self.add_param_value(Param.MAC_SOURCE, 'macAddress(ipAddress=' + most_used_ipAddress + ')')
+        self.add_param_value(Param.MAC_DESTINATION, 'A0:1A:28:0B:62:F4')
+        self.add_param_value(Param.PACKETS_PER_SECOND, self.statistics.get_pps_sent(most_used_ipAddress))
+        self.add_param_value(Param.INJECT_AT_TIMESTAMP, '1410733342')  # Sun, 14 Sep 2014 22:22:22 GMT
+
+    def get_packets(self):
+        def get_timestamp():
+            """
+            Calculates the next timestamp and returns the timestamp to be used for the current packet.
+
+            :return: Timestamp to be used for the current packet.
+            """
+            nonlocal timestamp_next_pkt, pps, maxdelay
+            timestamp_current_packet = timestamp_next_pkt  # current timestamp
+            timestamp_next_pkt = timestamp_next_pkt + uniform(0.1 / pps, maxdelay)  # timestamp for next pkt
+            return timestamp_current_packet
+
+        # Determine ports
+        dest_ports = self.get_param_value(Param.PORT_DESTINATION)
+        if self.get_param_value(Param.PORT_ORDER_DESC):
+            dest_ports.reverse()
+        elif self.get_param_value(Param.PORT_DEST_SHUFFLE):
+            shuffle(dest_ports)
+        if self.get_param_value(Param.PORT_SOURCE_RANDOM):
+            sport = randint(0, 65535)
+        else:
+            sport = self.get_param_value(Param.PORT_SOURCE)
+
+        # Get TTL distribution
+        # keys = list(self.statistics.get_ttl_distribution().vals()
+        # values = list(self.statistics.get_ttl_distribution().pmf())
+        # TTL_samples = numpy.random.choice(keys, size=len(dest_ports), replace=True, dport=values)
+        ttl_value = self.statistics.process_db_query("most_used(ttlValue)")
+
+        # MSS (Maximum Segment Size) for Ethernet. Allowed values [536,1500]
+        mss = ('MSS', int(self.statistics.process_db_query('avg(mss)')))
+
+        # Timestamp
+        timestamp_next_pkt = self.get_param_value(Param.INJECT_AT_TIMESTAMP)
+        self.attack_start_utime = timestamp_next_pkt  # store start time of attack
+        pps = self.get_param_value(Param.PACKETS_PER_SECOND)
+        randomdelay = Lea.fromValFreqsDict({1 / pps: 70, 2 / pps: 30, 5 / pps: 15, 10 / pps: 3})
+        maxdelay = randomdelay.random()
+
+        # Initialize parameters
+        packets = []
+        ip_source = self.get_param_value(Param.IP_SOURCE)
+        ip_destination = self.get_param_value(Param.IP_DESTINATION)
+        mac_source = self.get_param_value(Param.MAC_SOURCE)
+        mac_destination = self.get_param_value(Param.MAC_DESTINATION)
+
+        for dport in dest_ports:
+            # Parameters changing each iteration
+            if self.get_param_value(Param.IP_SOURCE_RANDOMIZE) and isinstance(ip_source, list):
+                ip_source = choice(ip_source)
+
+            # 1) Build request package
+            request_ether = Ether(src=mac_source, dst=mac_destination)
+            request_ip = IP(src=ip_source, dst=ip_destination, ttl=ttl_value)
+            request_tcp = TCP(sport=sport, dport=dport)
+            request = (request_ether / request_ip / request_tcp)
+            request.time = get_timestamp()
+            packets.append(request)
+
+            # 2) Build reply package
+            reply_ether = Ether(src=mac_destination, dst=mac_source)
+            reply_ip = IP(src=ip_destination, dst=ip_source, flags='DF')
+
+            if str(dport) in self.get_param_value(Param.PORT_OPEN):  # destination port is OPEN
+                # target answers
+                reply_tcp = TCP(sport=dport, dport=sport, seq=0, ack=1, flags='SA', window=29200,
+                                options=[mss])
+                # reply_tcp.time = time_sec_start + random.uniform(0.00005, 0.00013)
+                reply = (reply_ether / reply_ip / reply_tcp)
+                reply.time = get_timestamp()
+                packets.append(reply)
+
+                # requester confirms
+                confirm_ether = request_ether
+                confirm_ip = request_ip
+                confirm_tcp = TCP(sport=sport, dport=dport, seq=1, window=0, flags='R')
+                reply = (confirm_ether / confirm_ip / confirm_tcp)
+                reply.time = get_timestamp()
+                packets.append(reply)
+
+            else:  # destination port is NOT OPEN
+                reply_tcp = TCP(sport=dport, dport=sport, flags='RA', seq=1, ack=1, window=0)
+                # reply_tcp.time = time_sec_start + random.uniform(0.00005, 0.00013)
+                reply = (reply_ether / reply_ip / reply_tcp)
+                reply.time = get_timestamp()
+                packets.append(reply)
+
+        # store end time of attack
+        self.attack_end_utime = reply.time
+
+        # return packets sorted by packet time_sec_start
+        return sorted(packets, key=lambda pkt: pkt.time)

+ 10 - 0
code/Attack/__init__.py

@@ -0,0 +1,10 @@
+import glob
+from os.path import dirname, basename
+
+# Create a list consisting of all attack classes names in this package
+__all__ = []
+modules = glob.glob(dirname(__file__) + "/*.py")
+for m in modules:
+    c = str(basename(m)[:-3])
+    if not c.startswith('__') and not c.startswith('Base') and c.endswith('Attack'):
+        __all__.append(c)

BIN
code/Attack/__pycache__/AttackParameters.cpython-34.pyc


BIN
code/Attack/__pycache__/BaseAttack.cpython-34.pyc


BIN
code/Attack/__pycache__/PortscanAttack.cpython-34.pyc


BIN
code/Attack/__pycache__/__init__.cpython-34.pyc


+ 130 - 0
code/CLI.py

@@ -0,0 +1,130 @@
+#! /usr/bin/python3
+import argparse
+import sys
+
+from ID2TLib.Controller import Controller
+
+
+class LoadFromFile(argparse.Action):
+    """
+    Parses the parameter file given by application param -c/--config.
+    """
+    def __call__(self, parser, namespace, values, option_string=None):
+        with values as f:
+            parser.parse_args(f.read().split(), namespace)
+
+
+class CLI(object):
+    def __init__(self):
+        """
+        Creates a new CLI object used to handle
+        """
+        # Reference to PcapFile object
+        self.args = None
+        self.attack_config = None
+
+    def process_arguments(self):
+        """
+        Loads the application controller, the PCAP file statistics and if present, processes the given attacks. Evaluates
+        given queries.
+        """
+        # Create ID2T Controller
+        controller = Controller(self.args.input)
+
+        # Load PCAP statistics
+        controller.load_pcap_statistics(self.args.export, self.args.recalculate, self.args.statistics)
+
+        # Process attack(s) with given attack params
+        if self.args.attack is not None:
+            # If attack is present, load attack with params
+            controller.process_attacks(self.args.attack)
+
+        # Parameter -q without arguments was given -> go into query loop
+        if self.args.query == [None]:
+            controller.enter_query_mode()
+        # Parameter -q with arguments was given -> process query
+        elif self.args.query is not None:
+            controller.process_db_queries(self.args.query, True)
+
+    def parse_arguments(self, args):
+        """
+        Defines the allowed application arguments and invokes the evaluation of the arguments.
+
+        :param args: The application arguments
+        """
+        # Create parser for arguments
+        parser = argparse.ArgumentParser(description="Intrusion Detection Dataset Toolkit (ID2T) - A toolkit for "
+                                                     "injection of synthetically created attacks into PCAP datasets.")
+        # Define required arguments
+        # requiredNamed = parser.add_argument_group('required named arguments')
+        # requiredNamed.add_argument('-i', '--input', metavar="FILEPATH", help='path to the input pcap file',
+        # required=True)
+
+        # Define optional arguments
+        parser.add_argument('-i', '--input', metavar="FILEPATH", help='path to the input pcap file', required=False)
+        parser.add_argument('-c', '--config', metavar='FILEPATH', help='file containing parameters used as input.',
+                            action=LoadFromFile, type=open)
+        parser.add_argument('-e', '--export',
+                            help='stores the statistics as a textfile with ending .stat into the dataset directory',
+                            action='store_true', default=False)
+        parser.add_argument('-a', '--attack', metavar="ATTACKNAME", action='append',
+                            help='injects a new attack into the given dataset.', nargs='+')
+        parser.add_argument('-g', '--gui', help='enables the Graphical User Interface (GUI) mode.', action='store_true',
+                            default=False)
+        parser.add_argument('-r', '--recalculate',
+                            help='forces to recalculate the statistics in case of an already existing statistics database.',
+                            action='store_true', default=False)
+        parser.add_argument('-s', '--statistics', help='print general file statistics to stdout.', action='store_true',
+                            default=False)
+        parser.add_argument('-q', '--query', metavar="QUERY",
+                            action='append', nargs='?',
+                            help='queries the statistics database. If no query is provided, the application enters into query mode.')
+
+        # Parse arguments
+        self.args = parser.parse_args(args)
+
+        # Either PCAP filepath or GUI mode must be enabled
+        if not self.args.input and not self.args.gui:
+            parser.error("Parameter -i/--input or -g/--gui required.")
+
+        # GUI mode enabled
+        if self.args.gui:
+            raise NotImplementedError("Feature not implemented yet.")
+            # gui = GUI.GUI()
+            pass
+        # CLI mode enabled
+        else:
+            self.process_arguments()
+
+
+def main(args):
+    """
+    Creates a new CLI object and invokes the arguments parsing.
+
+    :param args: The provided arguments
+    """
+    cli = CLI()
+    # Check arguments
+    cli.parse_arguments(args)
+
+
+# Uncomment to enable calling by terminal
+if __name__ == '__main__':
+    main(sys.argv[1:])
+
+# if __name__ == '__main__':
+#     FILE = ['-i', '/mnt/hgfs/datasets/95M.pcap']
+#
+#     ATTACK = ['-a', 'PortscanAttack', 'ip.src=most_used(ipAddress)', 'mac.dst=05:AB:47:B5:19:11',
+#               'inject.at-timestamp=1980733342', 'attack.note=First portscan Attack']
+#     ATTACK2 = ['-a', 'PortscanAttack', 'ip.dst=193.133.122.23, ip.src=192.124.34.12', 'inject.after-pkt=34']
+#
+#     STATS_RECALC = ['-r']
+#     STATS_PRINT = ['-s']
+#
+#     QUERY_MODE_LOOP = ['-q']
+#     QUERY_DB = ['-q', 'most_used(ttlValue)']
+#
+#     main(FILE + QUERY_DB)
+
+    # main(['-c', '/home/pjattke/Thesis/development/code/config'])

+ 0 - 0
code/GUI/__init__.py


+ 136 - 0
code/ID2TLib/AttackController.py

@@ -0,0 +1,136 @@
+import importlib
+import tempfile
+
+from scapy.utils import PcapWriter
+
+import Attack
+from Attack.AttackParameters import Parameter
+from ID2TLib import LabelManager
+from ID2TLib import Statistics
+from ID2TLib.Label import Label
+from ID2TLib.PcapFile import PcapFile
+
+
+class AttackController:
+    def __init__(self, pcap_file: PcapFile, statistics_class: Statistics, label_manager: LabelManager):
+        """
+        Creates a new AttackController. The controller manages the attack injection, including the PCAP writing.
+        :param statistics_class:
+        """
+        self.statistics = statistics_class
+        self.pcap_file = pcap_file
+        self.label_mgr = label_manager
+
+        self.available_attacks = Attack.__all__
+        self.current_attack = None
+        self.added_attacks = []
+        self.written_pcaps = []
+
+        # The PCAP where the attack should be injected into
+        self.base_pcap = self.statistics.pcap_filepath
+
+    def write_attack_pcap(self):
+        """
+        Writes the attack's packets into a PCAP file with a temporary filename.
+        :return: The path of the written PCAP file.
+        """
+        packets = self.current_attack.get_packets()
+
+        # Write packets into pcap file
+        temp_pcap = tempfile.NamedTemporaryFile(delete=False)
+        pktdump = PcapWriter(temp_pcap.name)
+        pktdump.write(packets)
+
+        # Store pcap path and close file objects
+        pcap_path = temp_pcap.name
+        pktdump.close()
+        temp_pcap.close()
+
+        return pcap_path
+
+    def create_attack(self, attack_name: str):
+        """
+        Creates dynamically a new class instance based on the given attack_name.
+        :param attack_name: The name of the attack, must correspond to the attack's class name.
+        :return: None
+        """
+        print("\nCreating attack instance of \033[1m" + attack_name + "\033[0m")
+        # Load attack class
+        attack_module = importlib.import_module("Attack." + attack_name)
+        attack_class = getattr(attack_module, attack_name)
+
+        # Set current attack
+        self.current_attack = attack_class(self.statistics, self.base_pcap)
+        self.added_attacks.append(self.current_attack)
+
+    def process_attack(self, attack: str, params: str):
+        """
+
+        :param attack:
+        :param params:
+        :return:
+        """
+        self.create_attack(attack)
+
+        # Add attack parameters if provided
+        print("Validating and adding attack parameters.")
+        params_dict = []
+        if params is not None:
+            # Convert attack param list into dictionary
+            for entry in params:
+                params_dict.append(entry.split('='))
+            params_dict = dict(params_dict)
+            # Check if Parameter.INJECT_AT_TIMESTAMP and Parameter.INJECT_AFTER_PACKET are provided at the same time
+            # if TRUE: delete Paramter.INJECT_AT_TIMESTAMP (lower priority) and use Parameter.INJECT_AFTER_PACKET
+            if (Parameter.INJECT_AFTER_PACKET.value in params_dict) and (
+                        Parameter.INJECT_AT_TIMESTAMP.value in params_dict):
+                print("CONFLICT: Parameters", Parameter.INJECT_AT_TIMESTAMP.value, "and",
+                      Parameter.INJECT_AFTER_PACKET.value,
+                      "given at the same time. Ignoring", Parameter.INJECT_AT_TIMESTAMP.value, "and using",
+                      Parameter.INJECT_AFTER_PACKET.value, "instead to derive the timestamp.")
+                del params_dict[Parameter.INJECT_AT_TIMESTAMP.value]
+
+            # Extract attack_note parameter, if not provided returns an empty string
+            key_attack_note = "attack.note"
+            attack_note = params_dict.get(key_attack_note, "")
+            params_dict.pop(key_attack_note, None)  # delete entry if found, otherwise return an empty string
+
+            # Pass paramters to attack controller
+            self.set_params(params_dict)
+        else:
+            attack_note = ""
+
+        # Write attack into pcap file
+        temp_attack_pcap_path = self.write_attack_pcap()
+
+        # Merge attack with existing pcap
+        pcap_dest_path = self.pcap_file.merge_attack(temp_attack_pcap_path)
+        self.written_pcaps.append(pcap_dest_path)
+
+        # Store label into LabelManager
+        l = Label(attack, self.get_attack_start_utime(),
+                  self.get_attack_end_utime(), attack_note)
+        self.label_mgr.add_labels(l)
+
+        return pcap_dest_path
+
+    def get_attack_start_utime(self):
+        """
+        :return: The start time (timestamp of first packet) of the attack as unix timestamp.
+        """
+        return self.current_attack.attack_start_utime
+
+    def get_attack_end_utime(self):
+        """
+        :return: The end time (timestamp of last packet) of the attack as unix timestamp.
+        """
+        return self.current_attack.attack_end_utime
+
+    def set_params(self, params: dict):
+        """
+        Sets the attack's parameters.
+        :param params: The parameters in a dictionary: {parameter_name: parameter_value}
+        :return: None
+        """
+        for param_key, param_value in params.items():
+            self.current_attack.add_param_value(param_key, param_value)

+ 94 - 0
code/ID2TLib/Controller.py

@@ -0,0 +1,94 @@
+import os
+
+from ID2TLib.AttackController import AttackController
+from ID2TLib.LabelManager import LabelManager
+from ID2TLib.PcapFile import PcapFile
+from ID2TLib.Statistics import Statistics
+
+
+class Controller:
+    def __init__(self, pcap_file_path: str):
+        """
+        Creates a new Controller, acting as a central coordinator for the whole application.
+        :param pcap_file_path:
+        """
+        # Fields
+        self.pcap_src_path = pcap_file_path
+        self.pcap_dest_path = ''
+        self.written_pcaps = []
+
+        # Initialize class instances
+        print("Input file: %s" % self.pcap_src_path)
+        self.pcap_file = PcapFile(self.pcap_src_path)
+        self.label_manager = LabelManager(self.pcap_src_path)
+        self.statistics = Statistics(self.pcap_file)
+        self.statisticsDB = self.statistics.get_statistics_database()
+        self.attack_controller = AttackController(self.pcap_file, self.statistics, self.label_manager)
+
+    def load_pcap_statistics(self, flag_write_file: bool, flag_recalculate_stats: bool, flag_print_statistics: bool):
+        """
+        Loads the PCAP statistics either from the database, if the statistics were calculated earlier, or calculates
+        the statistics and creates a new database.
+        :param flag_write_file: Writes the statistics to a file.
+        :param flag_recalculate_stats: Forces the recalculation of statistics.
+        :param flag_print_statistics: Prints the statistics on the terminal.
+        :return: None
+        """
+        self.statistics.load_pcap_statistics(flag_write_file, flag_recalculate_stats, flag_print_statistics)
+
+    def process_attacks(self, attacks_config):
+        """
+        Creates the attack based on the attack name and the attack parameters given in the attacks_config. The
+        attacks_config is a list of attacks, e.g.
+        [['PortscanAttack', 'ip.src="192.168.178.2",'dst.port=80'],['PortscanAttack', 'ip.src="10.10.10.2"]]
+        :param attacks_config: A list of attacks with their attack parameters.
+        """
+        # load attacks sequentially
+        for attack in attacks_config:
+            self.pcap_dest_path = self.attack_controller.process_attack(attack[0], attack[1:])
+
+        # delete intermediate PCAP files
+        for i in range(len(self.written_pcaps) - 1):
+            os.remove(self.written_pcaps[i])
+
+        # print status message
+        print('\nOutput file created: ', self.pcap_dest_path)
+
+        # write label file with attacks
+        self.label_manager.write_label_file(self.pcap_dest_path)
+
+    def process_db_queries(self, query, print_results=False):
+        """
+        Processes a statistics database query. This can be a standard SQL query or a named query.
+        :param query: The query as a string or multiple queries as a list of strings.
+        :param print_results: Must be True if the results should be printed to terminal.
+        :return: The query's result
+        """
+        print("Processing database query/queries...")
+        if isinstance(query, list) or isinstance(query, tuple):
+            for q in query:
+                self.statisticsDB.process_db_query(q, print_results)
+        else:
+            self.statisticsDB.process_db_query(query, print_results)
+
+    def enter_query_mode(self):
+        """
+        Enters into the query mode. This is a read-eval-print-loop, where the user can input named queries or SQL
+        queries and the results are printed.
+        """
+        print("Entering into query mode...")
+        print("Enter statement ending by ';' and press ENTER to send query. Exit by sending an empty query..")
+        buffer = ""
+        while True:
+            line = input()
+            if line == "":
+                break
+            buffer += line
+            import sqlite3
+            if sqlite3.complete_statement(buffer):
+                try:
+                    buffer = buffer.strip()
+                    self.statisticsDB.process_db_query(buffer, True)
+                except sqlite3.Error as e:
+                    print("An error occurred:", e.args[0])
+                buffer = ""

+ 32 - 0
code/ID2TLib/Label.py

@@ -0,0 +1,32 @@
+from functools import total_ordering
+
+
+@total_ordering
+class Label:
+    def __init__(self, attack_name, timestamp_start, timestamp_end, attack_note=""):
+        """
+        Creates a new attack label
+
+        :param attack_name: The name of the associated attack
+        :param timestamp_start: The timestamp as unix time of the first attack packet
+        :param timestamp_end: The timestamp as unix time of the last attack packet
+        :param attack_note: A note associated to the attack (optional)
+        """
+        self.attack_name = attack_name
+        self.timestamp_start = timestamp_start
+        self.timestamp_end = timestamp_end
+        self.attack_note = attack_note
+
+    def __eq__(self, other):
+        return self.timestamp == other.timestamp
+
+    def __lt__(self, other):
+        return self.timestamp_start < other.timestamp_start
+
+    def __gt__(self, other):
+        return self.timestamp_start > other.timestamp_start
+
+    def __str__(self):
+        return ''.join(
+            ['(', self.attack_name, ',', self.attack_note, ',', str(self.timestamp_start), ',', str(self.timestamp_end),
+             ')'])

+ 140 - 0
code/ID2TLib/LabelManager.py

@@ -0,0 +1,140 @@
+import os.path
+from datetime import datetime
+from xml.dom.minidom import *
+
+import ID2TLib.Label as Label
+
+
+class LabelManager:
+    TAG_ROOT = 'LABELS'
+    TAG_ATTACK = 'attack'
+    TAG_ATTACK_NAME = 'attack_name'
+    TAG_ATTACK_NOTE = 'attack_note'
+    TAG_TIMESTAMP_START = 'timestamp_start'
+    TAG_TIMESTAMP_END = 'timestamp_end'
+    TAG_TIMESTAMP = 'timestamp'
+    TAG_TIMESTAMP_HR = 'timestamp_hr'
+    ATTR_VERSION = 'version_parser'
+
+    # update this attribute if XML scheme was modified
+    ATTR_VERSION_VALUE = '0.2'
+
+    def __init__(self, filepath_pcap=None):
+        """
+        Creates a new LabelManager for managing the attack's labels.
+
+        :param filepath_pcap: The path to the PCAP file associated to the labels.
+        """
+        self.labels = list()
+
+        if filepath_pcap is not None:
+            self.labelFilePath = filepath_pcap.strip('.pcap') + '_labels.xml'
+            # only load labels if label file is existing
+            if os.path.exists(self.labelFilePath):
+                self._load_labels()
+
+    def add_labels(self, labels):
+        """
+        Adds a label to the internal list of labels.
+
+        :param labels: The labels to be added
+        """
+        if isinstance(labels, list):
+            self.labels = self.labels + [labels]
+        elif isinstance(labels, tuple):
+            for l in labels:
+                self.labels.append(l)
+        else:
+            self.labels.append(labels)
+
+        # sorts the labels ascending by their timestamp
+        self.labels.sort()
+
+    def write_label_file(self, filepath=None):
+        """
+        Writes previously added/loaded labels to a XML file. Uses the given filepath as destination path, if no path is
+        given, uses the path in labelFilePath.
+
+        :param filepath: The path where the label file should be written to.
+        """
+
+        def get_subtree_timestamp(xml_tag_root, timestamp_entry) -> Element:
+            """
+            Creates the subtree for a given timestamp, consisting of the unix time format (seconds) and a human-readable
+            output.
+
+            :param xml_tag_root: The tag name for the root of the subtree
+            :param timestamp_entry: The timestamp as unix time
+            :return: The root node of the XML subtree
+            """
+            timestamp_root = doc.createElement(xml_tag_root)
+
+            # add timestamp in unix format
+            timestamp = doc.createElement(self.TAG_TIMESTAMP)
+            timestamp.appendChild(doc.createTextNode(str(timestamp_entry)))
+            timestamp_root.appendChild(timestamp)
+
+            # add timestamp in human-readable format
+            timestamp_hr = doc.createElement(self.TAG_TIMESTAMP_HR)
+            timestamp_hr_text = datetime.fromtimestamp(int(timestamp_entry)).strftime('%Y-%m-%d %H:%M:%S')
+            timestamp_hr.appendChild(doc.createTextNode(timestamp_hr_text))
+            timestamp_root.appendChild(timestamp_hr)
+
+            return timestamp_root
+
+        if filepath is not None:
+            self.labelFilePath = filepath.strip('.pcap') + '_labels.xml'
+
+        # Generate XML
+        doc = Document()
+        node = doc.createElement(self.TAG_ROOT)
+        node.setAttribute(self.ATTR_VERSION, self.ATTR_VERSION_VALUE)
+        for label in self.labels:
+            xml_tree = doc.createElement(self.TAG_ATTACK)
+
+            # add attack to XML tree
+            attack_name = doc.createElement(self.TAG_ATTACK_NAME)
+            attack_name.appendChild(doc.createTextNode(str(label.attack_name)))
+            xml_tree.appendChild(attack_name)
+            attack_note = doc.createElement(self.TAG_ATTACK_NOTE)
+            attack_note.appendChild(doc.createTextNode(str(label.attack_note)))
+            xml_tree.appendChild(attack_note)
+
+            # add timestamp_start to XML tree
+            xml_tree.appendChild(get_subtree_timestamp(self.TAG_TIMESTAMP_START, label.timestamp_start))
+
+            # add timestamp_end to XML tree
+            xml_tree.appendChild(get_subtree_timestamp(self.TAG_TIMESTAMP_END, label.timestamp_end))
+
+            node.appendChild(xml_tree)
+
+        doc.appendChild(node)
+
+        # Write XML to file
+        file = open(self.labelFilePath, 'w')
+        file.write(doc.toprettyxml())
+        file.close()
+
+    def _load_labels(self):
+        """
+        Loads the labels from an already existing label XML file located at labelFilePath (set by constructor).
+
+        """
+        print("Label file found. Loading labels...")
+        dom = parse(self.labelFilePath)
+
+        # Check if version of parser and version of file match
+        version = dom.getElementsByTagName(self.TAG_ROOT)[0].getAttribute(self.ATTR_VERSION)
+        if not version == self.ATTR_VERSION_VALUE:
+            raise ValueError(
+                "The file " + self.labelFilePath + " was created by another version of ID2TLib.LabelManager")
+
+        # Parse attacks from XML file
+        attacks = dom.getElementsByTagName(self.TAG_ATTACK)
+        for a in attacks:
+            attack_name = a.childNodes[1].firstChild.data
+            attack_note = a.childNodes[3].firstChild.data
+            timestamp_start = a.childNodes[5].childNodes[1].firstChild.data
+            timestamp_end = a.childNodes[7].childNodes[1].firstChild.data
+            label = Label.Label(attack_name, float(timestamp_start), float(timestamp_end), attack_note)
+            self.labels.append(label)

+ 103 - 0
code/ID2TLib/PcapFile.py

@@ -0,0 +1,103 @@
+import hashlib
+import os.path
+import sys
+
+import ID2TLib.libpcapreader as pr
+
+
+class PcapFile(object):
+    def __init__(self, pcap_file_path: str):
+        """
+        Creates a new PcapFile associated to the PCAP file at pcap_file_path.
+
+        :param pcap_file_path: The path to the PCAP file
+        """
+        self.pcap_file_path = pcap_file_path
+
+    def merge_attack(self, attack_pcap_path: str) -> str:
+        """
+        Merges the loaded PCAP with the PCAP at attack_pcap_path.
+
+        :param attack_pcap_path: The path to the PCAP file to merge with the PCAP at pcap_file_path
+        :return: The file path of the resulting PCAP file
+        """
+        print("Merging base PCAP with attack PCAP...", end=" ")
+        sys.stdout.flush()  # force python to print text immediately
+
+        pcap = pr.pcap_processor(self.pcap_file_path)
+        file_out_path = pcap.merge_pcaps(attack_pcap_path)
+        print("done.")
+
+        return file_out_path
+
+    def get_file_hash(self) -> str:
+        """
+        Returns the hash for the loaded PCAP file. The hash is calculated bsaed on:
+
+        - the file size in bytes
+        - the first 224*40000 bytes of the file
+
+        :return: The hash for the PCAP file as string.
+        """
+        # Blocksize in bytes
+        const_blocksize = 224
+        # Number of blocks to read at beginning of file
+        const_max_blocks_read = 40000
+
+        # Initialize required variables
+        hasher = hashlib.sha224()
+        blocks_read = 0
+
+        # Hash calculation
+        with open(self.pcap_file_path, 'rb') as afile:
+            # Add filename -> makes trouble when renaming the PCAP
+            # hasher.update(afile.name.encode('utf-8'))
+
+            # Add file's last modification date -> makes trouble when copying the PCAP
+            # hasher.update(str(time.ctime(os.path.getmtime(self.pcap_file_path))).encode('utf-8'))
+
+            # Add file size
+            hasher.update(str(os.path.getsize(self.pcap_file_path)).encode('utf-8'))
+
+            # Add max. first 40000 * 224 bytes = 8,5 MB of file
+            buf = afile.read(const_blocksize)
+            blocks_read += 1
+            while len(buf) > 0 and blocks_read < const_max_blocks_read:
+                hasher.update(buf)
+                buf = afile.read(const_blocksize)
+                blocks_read += 1
+
+        return hasher.hexdigest()
+
+    def get_db_path(self, root_directory: str = os.path.join(os.path.expanduser('~'), 'ID2T_data', 'db')):
+        """
+        Creates a path based on a hashed directory structure. Derives a hash code by the file's hash and derives
+        thereof the database path.
+
+        Code and idea based on:
+        http://michaelandrews.typepad.com/the_technical_times/2009/10/creating-a-hashed-directory-structure.html
+
+        :param root_directory: The root directory of the hashed directory structure (optional)
+        :return: The full path to the database file
+        """
+
+        def hashcode(input: str):
+            """
+            Creates a hashcode of a string, based on Java's hashcode implementation.
+            Code based on: http://garage.pimentech.net/libcommonPython_src_python_libcommon_javastringhashcode/
+
+            :param input: The string the hashcode should be calculated from
+            :return: The hashcode as string
+            """
+            h = 0
+            for c in input:
+                h = (31 * h + ord(c)) & 0xFFFFFFFF
+            return ((h + 0x80000000) & 0xFFFFFFFF) - 0x80000000
+
+        file_hash = self.get_file_hash()
+        hashcode = hashcode(file_hash)
+        mask = 255
+        dir_first_level = hashcode & mask
+        dir_second_level = (hashcode >> 8) & mask
+
+        return os.path.join(root_directory, str(dir_first_level), str(dir_second_level), file_hash[0:12] + ".sqlite3")

+ 226 - 0
code/ID2TLib/Statistics.py

@@ -0,0 +1,226 @@
+import os
+import time
+
+import ID2TLib.libpcapreader as pr
+
+from ID2TLib.PcapFile import PcapFile
+from ID2TLib.StatsDatabase import StatsDatabase
+
+
+class Statistics:
+    def __init__(self, pcap_file: PcapFile):
+        """
+        Creates a new Statistics object.
+
+        :param pcap_file: A reference to the PcapFile object
+        """
+        # Fields
+        self.pcap_filepath = pcap_file.pcap_file_path
+        self.pcap_processor = None
+        pcap_file_hash = pcap_file.get_file_hash()
+
+        # Create folder for statistics database if required
+        self.path_db = pcap_file.get_db_path()
+        path_dir = os.path.dirname(self.path_db)
+        if not os.path.isdir(path_dir):
+            os.makedirs(path_dir)
+
+        # Class instances
+        self.stats_db = StatsDatabase(self.path_db)
+
+    def load_pcap_statistics(self, flag_write_file: bool, flag_recalculate_stats: bool, flag_print_statistics: bool):
+        """
+        Loads the PCAP statistics for the file specified by pcap_filepath. If the database is not existing yet, the
+        statistics are calculated by the PCAP file processor and saved into the newly created database. Otherwise the
+        statistics are gathered directly from the existing database.
+
+        :param flag_write_file: Indicates whether the statistics should be written addiotionally into a text file (True)
+        or not (False)
+        :param flag_recalculate_stats: Indicates whether eventually existing statistics should be recalculated
+        :param flag_print_statistics: Indicates whether the gathered basic statistics should be printed to the terminal
+        """
+        # Load pcap and get loading time
+        time_start = time.clock()
+
+        # Inform user about recalculation of statistics and its reason
+        if flag_recalculate_stats:
+            print("Flag -r/--recalculate found. Recalculating statistics.")
+
+        # Recalculate statistics if database not exists OR param -r/--recalculate was provided
+        if (not self.stats_db.get_db_exists()) or flag_recalculate_stats:
+            self.pcap_processor = pr.pcap_processor(self.pcap_filepath)
+            self.pcap_processor.collect_statistics()
+            self.pcap_processor.write_to_database(self.path_db)
+            outstring_datasource = "by PCAP file processor."
+        else:
+            outstring_datasource = "from statistics database."
+
+        # Load statistics from database
+        self.file_info = self.stats_db.get_file_info()
+
+        time_end = time.clock()
+        print("Loaded file statistics in " + str(time_end - time_start)[:4] + " sec " + outstring_datasource)
+
+        # Write statistics if param -e/--export provided
+        if flag_write_file:
+            self.write_statistics_to_file()
+
+        # Print statistics if param -s/--statistics provided
+        if flag_print_statistics:
+            self.print_statistics()
+
+    def get_file_information(self):
+        """
+        Returns a list of tuples, each containing a information of the file.
+
+        :return: a list of tuples, each consisting of (description, value, unit), where unit is optional.
+        """
+        return [("Pcap file", self.pcap_filepath),
+                ("#Packets", self.get_packet_count(), "packets"),
+                ("Capture length", self.get_capture_duration(), "seconds"),
+                ("Capture start", self.get_pcap_timestamp_start()),
+                ("Capture end", self.get_pcap_timestamp_end())]
+
+    def get_general_file_statistics(self):
+        """
+        Returns a list of tuples, each containing a file statistic.
+
+        :return: a list of tuples, each consisting of (description, value, unit).
+        """
+        return [("Avg. packet rate", self.file_info['avgPacketRate'], "packets/sec"),
+                ("Avg. packet size", self.file_info['avgPacketSize'], "kbytes"),
+                ("Avg. packets sent", self.file_info['avgPacketsSentPerHost'], "packets"),
+                ("Avg. bandwidth in", self.file_info['avgBandwidthIn'], "kbit/s"),
+                ("Avg. bandwidth out", self.file_info['avgBandwidthOut'], "kbit/s")]
+
+    @staticmethod
+    def _write_list(desc_val_unit_list, func, line_ending="\n"):
+        """
+        Takes a list of tuples (statistic name, statistic value, unit) as input, generates a string of these three values
+        and applies the function func on this string.
+
+        Before generating the string, it identifies text containing a float number, casts the string to a
+        float and rounds the value to two decimal digits.
+
+        :param desc_val_unit_list: The list of tuples consisting of (description, value, unit)
+        :param func: The function to be applied to each generated string
+        :param line_ending: The formatting string to be applied at the end of each string
+        """
+        for entry in desc_val_unit_list:
+            # Convert text containing float into float
+            (description, value) = entry[0:2]
+            if isinstance(value, str) and "." in value:
+                try:
+                    value = float(value)
+                except ValueError:
+                    pass  # do nothing -> value was not a float
+            # round float
+            if isinstance(value, float):
+                value = round(value, 2)
+            # write into file
+            if len(entry) == 3:
+                unit = entry[2]
+                func(description + ":\t" + str(value) + " " + unit + line_ending)
+            else:
+                func(description + ":\t" + str(value) + line_ending)
+
+    def print_statistics(self):
+        """
+        Prints the basic file statistics to the terminal.
+        """
+        print("\nPCAP FILE INFORMATION ------------------------------")
+        Statistics._write_list(self.get_file_information(), print, "")
+        print("\nGENERAL FILE STATISTICS ----------------------------")
+        Statistics._write_list(self.get_general_file_statistics(), print, "")
+        print("\n")
+
+    def write_statistics_to_file(self):
+        """
+        Writes the calculated basic statistics into a file.
+        """
+
+        def _write_header(title: str):
+            """
+            Writes the section header into the open file.
+
+            :param title: The section title
+            """
+            target.write("====================== \n")
+            target.write(title + " \n")
+            target.write("====================== \n")
+
+        target = open(self.pcap_filepath + ".stat", 'w')
+        target.truncate()
+
+        _write_header("PCAP file information")
+        Statistics._write_list(self.get_file_information(), target.write)
+
+        _write_header("General statistics")
+        Statistics._write_list(self.get_general_file_statistics(), target.write)
+
+        target.close()
+
+    def get_capture_duration(self):
+        """
+        :return: The duration of the capture in seconds
+        """
+        return self.file_info['captureDuration']
+
+    def get_pcap_timestamp_start(self):
+        """
+        :return: The timestamp of the first packet in the PCAP file
+        """
+        return self.file_info['timestampFirstPacket']
+
+    def get_pcap_timestamp_end(self):
+        """
+        :return: The timestamp of the last packet in the PCAP file
+        """
+        return self.file_info['timestampLastPacket']
+
+    def get_pps_sent(self, ip_address: str):
+        """
+        Calculates the sent packets per seconds for a given IP address.
+
+        :param ip_address: The IP address whose packets per second should be calculated
+        :return: The sent packets per seconds for the given IP address
+        """
+        packets_sent = self.stats_db.process_db_query("SELECT pktsSent from ip_statistics WHERE ipAddress=?", False,
+                                                      (ip_address,))
+        capture_duration = float(self.get_capture_duration())
+        return int(float(packets_sent) / capture_duration)
+
+    def get_packet_count(self):
+        """
+        :return: The number of packets in the loaded PCAP file
+        """
+        return self.file_info['packetCount']
+
+    def get_statistics_database(self):
+        """
+        :return: A reference to the statistics database object
+        """
+        return self.stats_db
+
+    def process_db_query(self, query_string_in: str, print_results: bool = False):
+        """
+        Executes a string identified previously as a query. This can be a standard SQL SELECT/INSERT query or a named
+        query.
+
+        :param query_string_in: The query to be processed
+        :param print_results: Indicates whether the results should be printed to terminal
+        :return: The result of the query
+        """
+        return self.stats_db.process_db_query(query_string_in, print_results)
+
+    def is_query(self, value: str):
+        """
+        Checks whether the given string is a standard SQL query (SELECT, INSERT) or a named query.
+
+        :param value: The string to be checked
+        :return: True if the string is recognized as a query, otherwise False.
+        """
+        is_scalar_value = type(value) in (int, float)
+        return not is_scalar_value and (
+            any(x in value.lower().strip() for x in self.stats_db.get_all_named_query_keywords()) or
+            any(x in value.lower().strip() for x in self.stats_db.get_all_sql_query_keywords()))

BIN
code/ID2TLib/Statistics.pyc


+ 325 - 0
code/ID2TLib/StatsDatabase.py

@@ -0,0 +1,325 @@
+import os.path
+import re
+import sqlite3
+import sys
+from random import randint
+
+
+def dict_gen(curs: sqlite3.Cursor):
+    """
+    Generates a dictionary of a sqlite3.Cursor object by fetching the query's results.
+    Taken from Python Essential Reference by David Beazley.
+    """
+    field_names = [d[0] for d in curs.description]
+    while True:
+        rows = curs.fetchmany()
+        if not rows:
+            return
+        for row in rows:
+            yield dict(zip(field_names, row))
+
+
+class StatsDatabase:
+    def __init__(self, db_path: str):
+        """
+        Creates a new StatsDatabase.
+
+        :param db_path: The path to the database file
+        """
+        self.existing_db = os.path.exists(db_path)
+        self.database = sqlite3.connect(db_path)
+        self.cursor = self.database.cursor()
+
+        # If DB not existing, create a new DB scheme
+        if self.existing_db:
+            print('Located statistics database at: ', db_path)
+        else:
+            print('Statistics database not found. Creating new database at: ', db_path)
+
+    def get_file_info(self):
+        """
+        Retrieves general file statistics from the database. This includes:
+
+        - packetCount           : Number of packets in the PCAP file
+        - captureDuration       : Duration of the packet capture in seconds
+        - timestampFirstPacket  : Timestamp of the first captured packet
+        - timestampLastPacket   : Timestamp of the last captured packet
+        - avgPacketRate         : Average packet rate
+        - avgPacketSize         : Average packet size
+        - avgPacketsSentPerHost : Average number of packets sent per host
+        - avgBandwidthIn        : Average incoming bandwidth
+        - avgBandwidthOut       : Average outgoing bandwidth
+
+        :return: a dictionary of keys (see above) and their respective values
+        """
+        return [r for r in dict_gen(
+            self.cursor.execute('SELECT * FROM file_statistics'))][0]
+
+    def get_db_exists(self):
+        """
+        :return: True if the database was already existent, otherwise False
+        """
+        return self.existing_db
+
+    @staticmethod
+    def _get_selector_keywords():
+        """
+        :return: a list of selector keywords
+        """
+        return ['most_used', 'least_used', 'avg', 'all']
+
+    @staticmethod
+    def _get_parametrized_selector_keywords():
+        """
+        :return: a list of parameterizable selector keywords
+        """
+        return ['ipaddress', 'macaddress']
+
+    @staticmethod
+    def _get_extractor_keywords():
+        """
+
+        :return: a list of extractor keywords
+        """
+        return ['random', 'first', 'last']
+
+    def get_all_named_query_keywords(self):
+        """
+
+        :return: a list of all named query keywords, used to identify named queries
+        """
+        return (
+            self._get_selector_keywords() + self._get_parametrized_selector_keywords() + self._get_extractor_keywords())
+
+    @staticmethod
+    def get_all_sql_query_keywords():
+        """
+        :return: a list of all supported SQL keywords, used to identify SQL queries
+        """
+        return ["select", "insert"]
+
+    def _process_user_defined_query(self, query_string: str, query_parameters: tuple = None):
+        """
+        Takes as input a SQL query query_string and optional a tuple of parameters which are marked by '?' in the query
+        and later substituted.
+
+        :param query_string: The query to execute
+        :param query_parameters: The tuple of parameters to inject into the query
+        :return: the results of the query
+        """
+        if query_parameters is not None:
+            self.cursor.execute(query_string, query_parameters)
+        else:
+            self.cursor.execute(query_string)
+        self.database.commit()
+        return self.cursor.fetchall()
+
+    def get_field_types(self, *table_names):
+        """
+        Creates a dictionary whose keys are the fields of the given table(s) and whose values are the appropriates field
+        types, like TEXT for strings and REAL for float numbers.
+
+        :param table_names: The name of table(s)
+        :return: a dictionary of {field_name : field_type} for fields of all tables
+        """
+        dic = {}
+        for table in table_names:
+            self.cursor.execute("PRAGMA table_info('%s')" % table)
+            results = self.cursor.fetchall()
+            for field in results:
+                dic[field[1].lower()] = field[2]
+        return dic
+
+    def named_query_parameterized(self, keyword: str, dict_param_value: dict):
+        """
+        Executes a parameterizable named query.
+
+        :param keyword: The query to be executed, like ipaddress or macadress
+        :param dict_param_value: The param values for the query as a dictionary {param: value}
+        :return: the results of the executed query
+        """
+        named_queries = {
+            "ipaddress": "SELECT DISTINCT ip_statistics.ipAddress from ip_statistics INNER JOIN ip_mac, ip_ttl, ip_ports, ip_protocols ON ip_statistics.ipAddress=ip_mac.ipAddress AND ip_statistics.ipAddress=ip_ttl.ipAddress AND ip_statistics.ipAddress=ip_ports.ipAddress AND ip_statistics.ipAddress=ip_protocols.ipAddress WHERE ",
+            "macaddress": "SELECT DISTINCT macAddress from ip_mac WHERE "}
+        query = named_queries.get(keyword)
+        field_types = self.get_field_types('ip_mac', 'ip_ttl', 'ip_ports', 'ip_protocols', 'ip_statistics', 'ip_mac')
+        conditions = []
+        for key, value in dict_param_value.items():
+            # this makes sure that TEXT fields are queried by strings,
+            # e.g. ipAddress=192.168.178.1 --is-converted-to--> ipAddress='192.168.178.1'
+            if field_types.get(key) == 'TEXT':
+                if not str(value).startswith("'") and not str(value).startswith('"'):
+                    value = "'" + value + "'"
+            # this replacement is required to remove ambiguity in SQL query
+            if key == 'ipAddress':
+                key = 'ip_mac.ipAddress'
+            conditions.append(key + "=" + str(value))
+
+        where_clause = " AND ".join(conditions)
+        query += where_clause
+        self.cursor.execute(query)
+        return self.cursor.fetchall()
+
+    def _process_named_query(self, query_param_list):
+        """
+        Executes a named query.
+
+        :param query_param_list: A query list consisting of (keyword, params), e.g. [(most_used, ipAddress), (random,)]
+        :return: the result of the query
+        """
+        # Definition of SQL queries associated to named queries
+        named_queries = {
+            "most_used.ipaddress": "SELECT ipAddress FROM ip_statistics WHERE (pktsSent+pktsReceived) == (SELECT MAX(pktsSent+pktsReceived) from ip_statistics)",
+            "most_used.macaddress": "SELECT * FROM (SELECT macAddress, COUNT(*) as occ from ip_mac GROUP BY macAddress ORDER BY occ DESC) WHERE occ=(SELECT COUNT(*) as occ from ip_mac GROUP BY macAddress ORDER BY occ DESC LIMIT 1)",
+            "most_used.portnumber": "SELECT portNumber, COUNT(portNumber) as cntPort FROM ip_ports GROUP BY portNumber HAVING cntPort=(SELECT MAX(cntPort) from (SELECT portNumber, COUNT(portNumber) as cntPort FROM ip_ports GROUP BY portNumber))",
+            "most_used.protocolname": "SELECT protocolName, COUNT(protocolCount) as countProtocols FROM ip_protocols GROUP BY protocolName HAVING countProtocols=(SELECT COUNT(protocolCount) as cnt FROM ip_protocols GROUP BY protocolName ORDER BY cnt DESC LIMIT 1)",
+            "most_used.ttlvalue": "SELECT ttlValue FROM ip_ttl WHERE ttlCount == (SELECT MAX(ttlCount) FROM ip_ttl)",
+            "least_used.ipaddress": "SELECT ipAddress FROM ip_statistics WHERE (pktsSent+pktsReceived) == (SELECT MIN(pktsSent+pktsReceived) from ip_statistics)",
+            "least_used.macaddress": "SELECT * FROM (SELECT macAddress, COUNT(*) as occ from ip_mac GROUP BY macAddress ORDER BY occ ASC) WHERE occ=(SELECT COUNT(*) as occ from ip_mac GROUP BY macAddress ORDER BY occ ASC LIMIT 1)",
+            "least_used.portnumber": "SELECT portNumber, COUNT(portNumber) as cntPort FROM ip_ports GROUP BY portNumber HAVING cntPort=(SELECT MIN(cntPort) from (SELECT portNumber, COUNT(portNumber) as cntPort FROM ip_ports GROUP BY portNumber))",
+            "least_used.protocolname": "SELECT protocolName, COUNT(protocolCount) as countProtocols FROM ip_protocols GROUP BY protocolName HAVING countProtocols=(SELECT COUNT(protocolCount) as cnt FROM ip_protocols GROUP BY protocolName ORDER BY cnt ASC LIMIT 1)",
+            "least_used.ttlvalue": "SELECT ttlValue FROM ip_ttl WHERE ttlCount == (SELECT MIN(ttlCount) FROM ip_ttl)",
+            "avg.pktsreceived": "SELECT avg(pktsReceived) from ip_statistics",
+            "avg.pktssent": "SELECT avg(pktsSent) from ip_statistics",
+            "avg.kbytesreceived": "SELECT avg(kbytesReceived) from ip_statistics",
+            "avg.kbytessent": "SELECT avg(kbytesSent) from ip_statistics",
+            "avg.ttlvalue": "SELECT avg(ttlValue) from ip_ttl",
+            "avg.mss": "SELECT avg(mss) from tcp_mss",
+            "all.ipaddress": "SELECT ipAddress from ip_statistics",
+            "all.ttlvalue": "SELECT DISTINCT ttlValue from ip_ttl",
+            "all.mss": "SELECT DISTINCT mss from tcp_mss",
+            "all.macaddress": "SELECT DISTINCT macAddress from ip_mac",
+            "all.portnumber": "SELECT DISTINCT portNumber from ip_ports",
+            "all.protocolname": "SELECT DISTINCT protocolName from ip_protocols"}
+
+        # Retrieve values by selectors, if given, reduce results by extractor
+        last_result = 0
+        for q in query_param_list:
+            # if selector, like avg, ttl, is given
+            if any(e in q[0] for e in self._get_selector_keywords()):
+                (keyword, param) = q
+                query = named_queries.get(keyword + "." + param)
+                self.cursor.execute(str(query))
+                last_result = self.cursor.fetchall()
+            # if selector is parametrized, i.e. ipAddress(mac=AA:BB:CC:DD:EE) or macAddress(ipAddress=192.168.178.1)
+            elif any(e in q[0] for e in self._get_parametrized_selector_keywords()) and any(
+                            o in q[1] for o in ["<", "=", ">", "<=", ">="]):
+                (keyword, param) = q
+                # convert string 'paramName1=paramValue1,paramName2=paramValue2,...' into dictionary
+                param_dict = {key: value for (key, value) in [re.split("<=|>=|>|<|=", x) for x in param.split(",")]}
+                last_result = self.named_query_parameterized(keyword, param_dict)
+            # if extractor, like random, first, last, is given
+            elif any(e in q[0] for e in self._get_extractor_keywords()) and (
+                        isinstance(last_result, list) or isinstance(last_result, tuple)):
+                extractor = q[0]
+                if extractor == 'random':
+                    index = randint(a=0, b=len(last_result))
+                    last_result = last_result[index]
+                elif extractor == 'first':
+                    last_result = last_result[0]
+                elif extractor == 'last':
+                    last_result = last_result[-1]
+
+        return last_result
+
+    def process_db_query(self, query_string_in: str, print_results=False, sql_query_parameters: tuple = None):
+        """
+        Processes a database query. This can either be a standard SQL query or a named query (predefined query).
+
+        :param query_string_in: The string containing the query
+        :param print_results: Indicated whether the results should be printed to terminal (True) or not (False)
+        :param sql_query_parameters: Parameters for the SQL query (optional)
+        :return: the results of the query
+        """
+        named_query_keywords = self.get_all_named_query_keywords()
+
+        # Clean query_string
+        query_string = query_string_in.lower().lstrip()
+
+        # query_string is a user-defined SQL query
+        if sql_query_parameters is not None or query_string.startswith("select") or query_string.startswith("insert"):
+            result = self._process_user_defined_query(query_string, sql_query_parameters)
+        # query string is a named query -> parse it and pass it to statisticsDB
+        elif any(k in query_string for k in named_query_keywords) and all(k in query_string for k in ['(', ')']):
+            # Clean query_string
+            query_string = query_string.replace(" ", "")
+
+            # Validity check: Brackets
+            brackets_open, brackets_closed = query_string.count("("), query_string.count(")")
+            if not (brackets_open == brackets_closed):
+                sys.stderr.write("Bracketing of given query '" + query_string + "' is incorrect.")
+
+            # Parse query string into [ (query_keyword1, query_params1), ... ]
+            delimiter_start, delimiter_end = "(", ")"
+            kplist = []
+            current_word = ""
+            for char in query_string:  # process characters one-by-one
+                # if char is no delimiter, add char to current_word
+                if char != delimiter_end and char != delimiter_start:
+                    current_word += char
+                # else if characeter is end delimiter and there were no two directly following ending delimiters,
+                # the current_word must be the parameters of an earlier given keyword
+                elif char == delimiter_end and len(current_word) > 0:
+                    kplist[-1] += (current_word,)
+                    current_word = ""
+                # if a start delimiter was found and the current_word so far is a keyword, add it to kplist
+                elif char == delimiter_start and current_word in named_query_keywords:
+                    kplist.append((current_word,))
+                    current_word = ""
+            result = self._process_named_query(kplist[::-1])
+        else:
+            sys.stderr.write(
+                "Query invalid. Only named queries and SQL SELECT/INSERT allowed. Please check the query's syntax!\n")
+            return
+
+        # If result is tuple/list with single element, extract value from list
+        requires_extraction = (isinstance(result, list) or isinstance(result, tuple)) and len(result) == 1
+        while requires_extraction:
+            if isinstance(result, list) or isinstance(result, tuple):
+                result = result[0]
+            else:
+                requires_extraction = False
+
+        # If tuple of tuples or list of tuples, each consisting of single element is returned,
+        # then convert it into list of values, because the returned colum is clearly specified by query
+        if (isinstance(result, tuple) or isinstance(result, list)) and all(len(val) == 1 for val in result):
+            result = [c for c in result for c in c]
+
+        # Print results if option print_results is True
+        if print_results:
+            self._print_query_results(query_string_in, result)
+
+        return result
+
+    def _print_query_results(self, query_string_in: str, result):
+        """
+        Prints the results of a query.
+        Based on http://stackoverflow.com/a/20383011/3017719.
+
+        :param query_string_in: The query the results belong to
+        :param result: The results of the query
+        """
+        print("Query '" + query_string_in + "' returned: ")
+        if query_string_in.lstrip().upper().startswith(
+                "SELECT") and result is not None and self.cursor.description is not None:
+            widths = []
+            columns = []
+            tavnit = '|'
+            separator = '+'
+            for cd in self.cursor.description:
+                widths.append(len(cd) + 10)
+                columns.append(cd[0])
+            for w in widths:
+                tavnit += " %-" + "%ss |" % (w,)
+                separator += '-' * w + '--+'
+            print(separator)
+            print(tavnit % tuple(columns))
+            print(separator)
+            if isinstance(result, list):
+                for row in result:
+                    print(tavnit % row)
+            else:
+                print(tavnit % result)
+            print(separator)
+        else:
+            print(result)

+ 0 - 0
code/ID2TLib/__init__.py


BIN
code/ID2TLib/__init__.pyc


BIN
code/ID2TLib/__pycache__/AttackController.cpython-34.pyc


BIN
code/ID2TLib/__pycache__/Controller.cpython-34.pyc


BIN
code/ID2TLib/__pycache__/Label.cpython-34.pyc


BIN
code/ID2TLib/__pycache__/LabelManager.cpython-34.pyc


BIN
code/ID2TLib/__pycache__/PcapFile.cpython-34.pyc


BIN
code/ID2TLib/__pycache__/Statistics.cpython-34.pyc


BIN
code/ID2TLib/__pycache__/StatsDatabase.cpython-34.pyc


BIN
code/ID2TLib/__pycache__/__init__.cpython-34.pyc


BIN
code/ID2TLib/libpcapreader.so


+ 0 - 0
code/__init__.py


+ 3 - 0
code/config_example

@@ -0,0 +1,3 @@
+-i /mnt/hgfs/datasets/95M.pcap 
+-a PortscanAttack ip.src=192.168.178.25 mac.dst=05:AB:47:B5:19:11
+-a PortscanAttack ip.src=192.168.178.99

+ 22 - 0
code_boost/src/.idea/misc.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
+  <component name="CidrRootsConfiguration">
+    <sourceRoots />
+    <libraryRoots>
+      <file path="$PROJECT_DIR$/SQLiteCpp" />
+    </libraryRoots>
+    <excludeRoots />
+  </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.4.3 (/usr/bin/python3.4)" project-jdk-type="Python SDK" />
+</project>

+ 8 - 0
code_boost/src/.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/src.iml" filepath="$PROJECT_DIR$/.idea/src.iml" />
+    </modules>
+  </component>
+</project>

+ 34 - 0
code_boost/src/.idea/src.iml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="CPP_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/cxx/pcap_processor.h" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/cxx/statistics.h" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/cxx/statistics_db.h" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/cxx/statistics_db.cpp" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/cxx/pcap_processor.cpp" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/cxx/statistics.cpp" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/CMakeLists.txt" isTestSource="false" />
+    </content>
+    <orderEntry type="jdk" jdkName="Python 3.4.3 (/usr/bin/python3.4)" jdkType="Python SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module-library">
+      <library name="Header Search Paths">
+        <CLASSES>
+          <root url="file:///usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed" />
+          <root url="file:///usr/lib/gcc/x86_64-linux-gnu/4.8/include" />
+          <root url="file:///usr/include" />
+          <root url="file:///usr/local/include" />
+          <root url="file://$MODULE_DIR$/SQLiteCpp" />
+        </CLASSES>
+        <SOURCES>
+          <root url="file:///usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed" />
+          <root url="file:///usr/lib/gcc/x86_64-linux-gnu/4.8/include" />
+          <root url="file:///usr/include" />
+          <root url="file:///usr/local/include" />
+          <root url="file://$MODULE_DIR$/SQLiteCpp" />
+        </SOURCES>
+      </library>
+    </orderEntry>
+  </component>
+</module>

+ 6 - 0
code_boost/src/.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
+  </component>
+</project>

+ 968 - 0
code_boost/src/.idea/workspace.xml

@@ -0,0 +1,968 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AnalysisUIOptions">
+    <option name="CUSTOM_SCOPE_NAME" value="project_files_cxx" />
+  </component>
+  <component name="CMakeRunConfigurationManager" shouldGenerate="true" assignedExecutableTargets="true" buildAllGenerated="true">
+    <generated>
+      <config projectName="lts" targetName="pcapreader" />
+      <config projectName="cpp-pcapreader" targetName="sqlite3" />
+      <config projectName="cpp-pcapreader" targetName="SQLiteCpp_cpplint" />
+      <config projectName="cpp-pcapreader" targetName="cpp-pcapreader" />
+      <config projectName="cpp-pcapreader" targetName="SQLiteLib" />
+      <config projectName="cpp-pcapreader" targetName="SQLiteCpp" />
+      <config projectName="cpp-pcapreader" targetName="pcapexec" />
+      <config projectName="Project" targetName="yay" />
+      <config projectName="Project" targetName="pcapreader" />
+      <config projectName="cpp-pcapreader" targetName="pcapreader" />
+      <config projectName="lts" targetName="lts" />
+      <config projectName="cpp-pcapreader" targetName="cpp-pcapexec" />
+      <config projectName="cpp-pcapreader" targetName="output" />
+    </generated>
+  </component>
+  <component name="CMakeSettings" AUTO_RELOAD="true" GENERATION_PASS_SYSTEM_ENVIRONMENT="true" BUILD_OUTPUT_DIR="build">
+    <ADDITIONAL_GENERATION_ENVIRONMENT>
+      <envs />
+    </ADDITIONAL_GENERATION_ENVIRONMENT>
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="d9c49765-9fd1-4a96-9963-862040c74354" name="Default" comment="- Cleaned up the code&#10;- Added code comments">
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/SQLiteCpp/src/Backup.cpp" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/SQLiteCpp/src/Column.cpp" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/SQLiteCpp/src/Database.cpp" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/SQLiteCpp/src/Exception.cpp" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/SQLiteCpp/src/Statement.cpp" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/SQLiteCpp/src/Transaction.cpp" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
+    </list>
+    <ignored path="src.iws" />
+    <ignored path=".idea/workspace.xml" />
+    <ignored path="SQLiteCpp/" />
+    <ignored path="SQLiteCpp/src/" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="CreatePatchCommitExecutor">
+    <option name="PATCH_PATH" value="" />
+  </component>
+  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
+  <component name="FavoritesManager">
+    <favorites_list name="src" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300" />
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Python Script" />
+      </list>
+    </option>
+  </component>
+  <component name="Git.Settings">
+    <option name="PREVIOUS_COMMIT_AUTHORS">
+      <list>
+        <option value="Patrick Jattke" />
+      </list>
+    </option>
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../../.." />
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$USER_HOME$/DE/src/yay.cxx" />
+        <option value="$USER_HOME$/DE/src/pcapreader.cxx" />
+        <option value="$USER_HOME$/DE/src/cxx/CMakeLists.txt" />
+        <option value="$USER_HOME$/DE/src/CMakeLists.txt" />
+        <option value="$USER_HOME$/DE/src/build/Debug/__init__.py" />
+        <option value="$USER_HOME$/DE/src/build/test.py" />
+        <option value="$USER_HOME$/DE/src/cxx/main.h" />
+        <option value="$USER_HOME$/DE/src/cxx/main.cpp" />
+        <option value="$PROJECT_DIR$/cxx/main.h" />
+        <option value="$PROJECT_DIR$/cxx/main.cpp" />
+        <option value="$PROJECT_DIR$/pcapreader.py" />
+        <option value="$PROJECT_DIR$/build/Debug/__init__.py" />
+        <option value="$PROJECT_DIR$/build/Debug/pcapreader.py" />
+        <option value="$PROJECT_DIR$/test/testclass.h" />
+        <option value="$PROJECT_DIR$/test/testclass.cpp" />
+        <option value="$PROJECT_DIR$/pcapreader.h" />
+        <option value="$PROJECT_DIR$/pcapreader.cxx" />
+        <option value="$PROJECT_DIR$/SQLiteCpp/CMakeLists.txt" />
+        <option value="$PROJECT_DIR$/SQLiteCpp/src/Backup.cpp" />
+        <option value="$PROJECT_DIR$/cxx/pcapprocessor.cpp" />
+        <option value="$PROJECT_DIR$/cxx/pcapprocessor.h" />
+        <option value="$PROJECT_DIR$/cxx/Statistics.h" />
+        <option value="$PROJECT_DIR$/cxx/Statistics.cpp" />
+        <option value="$PROJECT_DIR$/cxx/statistics.h" />
+        <option value="$PROJECT_DIR$/cxx/statistics.cpp" />
+        <option value="$PROJECT_DIR$/cxx/StatisticsDB.h" />
+        <option value="$PROJECT_DIR$/cxx/StatisticsDB.cpp" />
+        <option value="$PROJECT_DIR$/cxx/statistics_db.cpp" />
+        <option value="$USER_HOME$/.CLion2016.2/clion64.vmoptions" />
+        <option value="$PROJECT_DIR$/r0.3/pcapreader.py" />
+        <option value="$PROJECT_DIR$/cxx_boost/pcapreader.cxx" />
+        <option value="$PROJECT_DIR$/CMakeLists.txt" />
+        <option value="$PROJECT_DIR$/cxx/pcap_processor.h" />
+        <option value="$PROJECT_DIR$/cxx/pcap_processor.cpp" />
+        <option value="$PROJECT_DIR$/release_test/pcapreader.py" />
+      </list>
+    </option>
+  </component>
+  <component name="NamedScopeManager">
+    <scope name="project_files_cxx" pattern="file[src]:cxx/*||file[src]:cxx//*" />
+  </component>
+  <component name="OCFindUsagesOptions" text="true" ivars="false" properties="true" derivedClasses="false" />
+  <component name="ProjectFrameBounds">
+    <option name="width" value="1674" />
+    <option name="height" value="1022" />
+  </component>
+  <component name="ProjectInspectionProfilesVisibleTreeState">
+    <entry key="Project Default">
+      <profile-state>
+        <expanded-state>
+          <State>
+            <id />
+          </State>
+          <State>
+            <id>C/C++</id>
+          </State>
+          <State>
+            <id>Unused codeC/C++</id>
+          </State>
+        </expanded-state>
+        <selected-state>
+          <State>
+            <id>OCUnusedStructInspection</id>
+          </State>
+        </selected-state>
+      </profile-state>
+    </entry>
+  </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+      <manualOrder />
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="ProjectPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.jetbrains.cidr.projectView.CidrFilesViewHelper$MyProjectTreeStructure$1" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.jetbrains.cidr.projectView.CidrFilesViewHelper$MyProjectTreeStructure$1" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.jetbrains.cidr.projectView.CidrFilesViewHelper$MyProjectTreeStructure$1" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="release_test" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.jetbrains.cidr.projectView.CidrFilesViewHelper$MyProjectTreeStructure$1" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="cxx" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.jetbrains.cidr.projectView.CidrFilesViewHelper$MyProjectTreeStructure$1" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="build" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/SQLiteCpp/src" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="settings.editor.selected.configurable" value="vcs.Git" />
+    <property name="settings.editor.splitter.proportion" value="0.2" />
+    <property name="full.screen.before.presentation.mode" value="false" />
+  </component>
+  <component name="RecentsManager">
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/release_test/dir" />
+      <recent name="$PROJECT_DIR$/release_test" />
+      <recent name="$PROJECT_DIR$/r0.3" />
+      <recent name="$PROJECT_DIR$/cxx_boost" />
+      <recent name="$PROJECT_DIR$/SQLiteCpp/src" />
+    </key>
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/r0.2" />
+      <recent name="$USER_HOME$/DE/src/cxx" />
+    </key>
+  </component>
+  <component name="RunManager" selected="Python.release_test">
+    <configuration default="false" name="release_test" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="/usr/bin/python3.4" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/release_test" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="src" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/release_test/pcapreader.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="CMakeGoogleTestRunConfigurationType" factoryName="Google Test" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Project" TARGET_NAME="yay" CONFIG_NAME="Debug" TEST_MODE="SUITE_TEST">
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Project" TARGET_NAME="yay" CONFIG_NAME="Debug">
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="PythonConfigurationType" factoryName="Python">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="src" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="Tox" factoryName="Tox">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="src" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Attests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="src" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Doctests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="src" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Nosetests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="src" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Unittests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="src" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PUREUNITTEST" value="true" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="py.test">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="src" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="testToRun" value="" />
+      <option name="keywords" value="" />
+      <option name="params" value="" />
+      <option name="USE_PARAM" value="false" />
+      <option name="USE_KEYWORD" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="Build All" type="CMakeRunConfiguration" factoryName="Application" WORKING_DIR="" PASS_PARENT_ENVS_2="true" CONFIG_NAME="Debug" EXPLICIT_BUILD_TARGET_NAME="all">
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="false" name="Build &amp; Run pcapreader" type="CMakeRunConfiguration" factoryName="Application" WORKING_DIR="" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cpp-pcapreader" TARGET_NAME="cpp-pcapreader" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="cpp-pcapreader" RUN_TARGET_NAME="cpp-pcapreader">
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="false" name="Build libpcapreader" type="CMakeRunConfiguration" factoryName="Application" WORKING_DIR="" PASS_PARENT_ENVS_2="true" PROJECT_NAME="cpp-pcapreader" TARGET_NAME="pcapreader" CONFIG_NAME="Debug">
+      <envs />
+      <method />
+    </configuration>
+    <list size="4">
+      <item index="0" class="java.lang.String" itemvalue="Application.Build All" />
+      <item index="1" class="java.lang.String" itemvalue="Application.Build &amp; Run pcapreader" />
+      <item index="2" class="java.lang.String" itemvalue="Application.Build libpcapreader" />
+      <item index="3" class="java.lang.String" itemvalue="Python.release_test" />
+    </list>
+    <recent_temporary>
+      <list size="1">
+        <item index="0" class="java.lang.String" itemvalue="Python.release_test" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false">
+    <option name="remove_strategy" value="false" />
+  </component>
+  <component name="StructureViewFactory">
+    <option name="AUTOSCROLL_FROM_SOURCE" value="true" />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="d9c49765-9fd1-4a96-9963-862040c74354" name="Default" comment="" />
+      <created>1468560170227</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1468560170227</updated>
+      <workItem from="1475361810637" duration="21493000" />
+      <workItem from="1475421160575" duration="212000" />
+      <workItem from="1475421616329" duration="244000" />
+      <workItem from="1475422144846" duration="6415000" />
+    </task>
+    <task id="LOCAL-00001" summary="- Initial commit for PcapProcessing library, based on C++ and Boost">
+      <created>1468938336718</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1468938336718</updated>
+    </task>
+    <task id="LOCAL-00002" summary="- First release of boost pcapreader library">
+      <created>1469180061382</created>
+      <option name="number" value="00002" />
+      <option name="presentableId" value="LOCAL-00002" />
+      <option name="project" value="LOCAL" />
+      <updated>1469180061382</updated>
+    </task>
+    <task id="LOCAL-00003" summary="- pcapreader now returns timestamp for a given packet number">
+      <created>1474711237443</created>
+      <option name="number" value="00003" />
+      <option name="presentableId" value="LOCAL-00003" />
+      <option name="project" value="LOCAL" />
+      <updated>1474711237443</updated>
+    </task>
+    <task id="LOCAL-00004" summary="- removes: pcapreader now returns timestamp for a given packet number&#10;- method getTimestampMuSec returns timestamp for a given packet position">
+      <created>1474738178673</created>
+      <option name="number" value="00004" />
+      <option name="presentableId" value="LOCAL-00004" />
+      <option name="project" value="LOCAL" />
+      <updated>1474738178673</updated>
+    </task>
+    <task id="LOCAL-00005" summary="- Adapted filename of output file">
+      <created>1474738800600</created>
+      <option name="number" value="00005" />
+      <option name="presentableId" value="LOCAL-00005" />
+      <option name="project" value="LOCAL" />
+      <updated>1474738800600</updated>
+    </task>
+    <task id="LOCAL-00006" summary="- Moved files used for boost c++ implementation&#10;- Finished implementation of database storage">
+      <created>1475370704327</created>
+      <option name="number" value="00006" />
+      <option name="presentableId" value="LOCAL-00006" />
+      <option name="project" value="LOCAL" />
+      <updated>1475370704327</updated>
+    </task>
+    <task id="LOCAL-00007" summary="- Cleaned up and extended CMakeLists&#10;- Exposed relevant methods by boost::python&#10;- Deleted old project files">
+      <created>1475431831272</created>
+      <option name="number" value="00007" />
+      <option name="presentableId" value="LOCAL-00007" />
+      <option name="project" value="LOCAL" />
+      <updated>1475431831273</updated>
+    </task>
+    <option name="localTasksCounter" value="8" />
+    <servers />
+  </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="28364000" />
+  </component>
+  <component name="TodoView">
+    <todo-panel id="selected-file">
+      <is-autoscroll-to-source value="true" />
+    </todo-panel>
+    <todo-panel id="all">
+      <are-packages-shown value="true" />
+      <is-autoscroll-to-source value="true" />
+    </todo-panel>
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="0" y="0" width="1674" height="1022" extended-state="0" />
+    <editor active="false" />
+    <layout>
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.15342632" sideWeight="0.4586331" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32890365" sideWeight="0.45899633" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.38222224" sideWeight="0.41479686" order="10" side_tool="false" content_ui="tabs" />
+      <window_info id="CMake" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.27555555" sideWeight="0.42995754" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3298292" sideWeight="0.50211734" order="7" side_tool="true" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32890365" sideWeight="0.49788263" order="8" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.38222224" sideWeight="0.5852032" order="6" side_tool="true" content_ui="tabs" x="0" y="327" width="1676" height="187" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.15342632" sideWeight="0.54136693" order="1" side_tool="true" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32890365" sideWeight="0.497552" order="9" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.19358742" sideWeight="0.5045992" order="2" side_tool="true" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.28539824" sideWeight="0.49547374" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39933628" sideWeight="0.49547374" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Inspection Results" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32890365" sideWeight="0.497552" order="11" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3506732" sideWeight="0.49547374" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+    </layout>
+    <layout-to-restore>
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3298292" sideWeight="0.46098003" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.38384956" sideWeight="0.45866022" order="11" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="CMake" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.1880531" sideWeight="0.47374773" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3298292" sideWeight="0.50211734" order="8" side_tool="true" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39933628" sideWeight="0.49547374" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3298292" sideWeight="0.49788263" order="9" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.38384956" sideWeight="0.54133976" order="7" side_tool="true" content_ui="tabs" x="0" y="327" width="1676" height="187" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32964602" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.15147857" sideWeight="0.48114902" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32964602" sideWeight="0.49788776" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.15147857" sideWeight="0.518851" order="1" side_tool="true" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.19358742" sideWeight="0.5045992" order="2" side_tool="true" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.28539824" sideWeight="0.49547374" order="2" side_tool="false" content_ui="tabs" />
+    </layout-to-restore>
+  </component>
+  <component name="Vcs.Log.UiProperties">
+    <option name="RECENTLY_FILTERED_USER_GROUPS">
+      <collection />
+    </option>
+    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
+      <collection />
+    </option>
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="VcsManagerConfiguration">
+    <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
+    <MESSAGE value="- Initial commit for PcapProcessing library, based on C++ and Boost" />
+    <MESSAGE value="- First release of boost pcapreader library" />
+    <MESSAGE value="- pcapreader now returns timestamp for a given packet number" />
+    <MESSAGE value="- removes: pcapreader now returns timestamp for a given packet number&#10;- method getTimestampMuSec returns timestamp for a given packet position" />
+    <MESSAGE value="- Adapted filename of output file" />
+    <MESSAGE value="- Extended statistics collection, see class Statistics.h&#10;- Started to implement data storage in SQLite DB" />
+    <MESSAGE value="- Moved files used for boost c++ implementation&#10;- Finished implementation of database storage" />
+    <MESSAGE value="- Cleaned up the code&#10;- Added code comments" />
+    <MESSAGE value="- Cleaned up and extended CMakeLists&#10;- Exposed relevant methods by boost::python&#10;- Deleted old project files" />
+    <option name="LAST_COMMIT_MESSAGE" value="- Cleaned up and extended CMakeLists&#10;- Exposed relevant methods by boost::python&#10;- Deleted old project files" />
+    <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
+    <option name="REARRANGE_BEFORE_PROJECT_COMMIT" value="true" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager>
+      <option name="time" value="19" />
+    </breakpoint-manager>
+    <watches-manager />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file:///usr/include/boost/filesystem/path.hpp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="331" column="11" selection-start-line="331" selection-start-column="11" selection-end-line="331" selection-end-column="11" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/c++/4.8/bits/basic_ios.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="171">
+          <caret line="455" column="0" selection-start-line="455" selection-start-column="0" selection-end-line="455" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/c++/4.8/iosfwd">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="150" column="36" selection-start-line="150" selection-start-column="36" selection-end-line="150" selection-end-column="36" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/release_test/pcapreader.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="240">
+          <caret line="23" column="40" selection-start-line="23" selection-start-column="40" selection-end-line="23" selection-end-column="40" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/data_link_type.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="590">
+          <caret line="68" column="48" selection-start-line="68" selection-start-column="48" selection-end-line="68" selection-end-column="48" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/packet_writer.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="2910">
+          <caret line="194" column="9" selection-start-line="194" selection-start-column="9" selection-end-line="194" selection-end-column="9" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/test/testclass.h" />
+    <entry file="file://$PROJECT_DIR$/test/testclass.cpp" />
+    <entry file="file:///usr/include/c++/4.8/chrono">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="239" column="13" selection-start-line="239" selection-start-column="13" selection-end-line="239" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/packet.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="255" column="21" selection-start-line="255" selection-start-column="21" selection-end-line="255" selection-end-column="21" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/ethernetII.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="244">
+          <caret line="45" column="15" selection-start-line="45" selection-start-column="15" selection-end-line="45" selection-end-column="15" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/boost/multi_index_container.hpp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="183">
+          <caret line="483" column="35" selection-start-line="483" selection-start-column="29" selection-end-line="483" selection-end-column="35" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/c++/4.8/bits/move.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="231">
+          <caret line="100" column="4" selection-start-line="100" selection-start-column="4" selection-end-line="100" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/c++/4.8/bits/unordered_map.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="231">
+          <caret line="523" column="6" selection-start-line="523" selection-start-column="6" selection-end-line="523" selection-end-column="6" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/c++/4.8/bits/functional_hash.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-1119">
+          <caret line="57" column="11" selection-start-line="57" selection-start-column="11" selection-end-line="57" selection-end-column="11" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/macros.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="725">
+          <caret line="69" column="12" selection-start-line="69" selection-start-column="12" selection-end-line="69" selection-end-column="12" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/internals.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="51" column="6" selection-start-line="51" selection-start-column="6" selection-end-line="51" selection-end-column="6" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/ip_address.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="43" column="22" selection-start-line="43" selection-start-column="22" selection-end-line="43" selection-end-column="22" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/c++/4.8/bits/stl_iterator_base_funcs.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="214">
+          <caret line="113" column="4" selection-start-line="113" selection-start-column="4" selection-end-line="113" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/stdint.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="212">
+          <caret line="50" column="28" selection-start-line="50" selection-start-column="28" selection-end-line="50" selection-end-column="28" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/c++/4.8/ostream">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="563" column="4" selection-start-line="563" selection-start-column="4" selection-end-line="563" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/pdu.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="273" column="13" selection-start-line="273" selection-start-column="13" selection-end-line="273" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/sniffer.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="2282">
+          <caret line="204" column="8" selection-start-line="204" selection-start-column="8" selection-end-line="204" selection-end-column="8" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/SQLiteCpp/SQLiteCpp.h" />
+    <entry file="file://$PROJECT_DIR$/SQLiteCpp/CMakeLists.txt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="420">
+          <caret line="152" column="11" selection-start-line="152" selection-start-column="11" selection-end-line="152" selection-end-column="11" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/SQLiteCpp/src/Column.cpp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1215">
+          <caret line="81" column="61" selection-start-line="81" selection-start-column="61" selection-end-line="81" selection-end-column="61" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/SQLiteCpp/src/Backup.cpp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="315">
+          <caret line="25" column="24" selection-start-line="25" selection-start-column="24" selection-end-line="25" selection-end-column="24" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/SQLiteCpp/include/SQLiteCpp/Database.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-429">
+          <caret line="89" column="4" selection-start-line="89" selection-start-column="4" selection-end-line="89" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/SQLiteCpp/include/SQLiteCpp/Statement.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="174">
+          <caret line="126" column="12" selection-start-line="126" selection-start-column="12" selection-end-line="126" selection-end-column="12" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/time.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="242" column="18" selection-start-line="242" selection-start-column="18" selection-end-line="242" selection-end-column="18" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/x86_64-linux-gnu/sys/types.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="2085">
+          <caret line="139" column="16" selection-start-line="139" selection-start-column="16" selection-end-line="139" selection-end-column="16" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/x86_64-linux-gnu/bits/typesizes.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="33" column="9" selection-start-line="33" selection-start-column="9" selection-end-line="33" selection-end-column="9" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/x86_64-linux-gnu/bits/types.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="2100">
+          <caret line="140" column="24" selection-start-line="140" selection-start-column="24" selection-end-line="140" selection-end-column="24" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/x86_64-linux-gnu/sys/time.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="70" column="11" selection-start-line="70" selection-start-column="11" selection-end-line="70" selection-end-column="11" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/x86_64-linux-gnu/bits/time.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="176">
+          <caret line="29" column="7" selection-start-line="29" selection-start-column="7" selection-end-line="29" selection-end-column="7" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/x86_64-linux-gnu/bits/stdio2.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="915">
+          <caret line="61" column="44" selection-start-line="61" selection-start-column="44" selection-end-line="61" selection-end-column="44" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/include/c++/4.8/bits/basic_string.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="176">
+          <caret line="2848" column="2" selection-start-line="2848" selection-start-column="2" selection-end-line="2848" selection-end-column="2" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/timestamp.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="291">
+          <caret line="53" column="28" selection-start-line="53" selection-start-column="28" selection-end-line="53" selection-end-column="28" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file:///usr/local/include/tins/tcp.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="192">
+          <caret line="364" column="13" selection-start-line="364" selection-start-column="13" selection-end-line="364" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$APPLICATION_HOME_DIR$/bin/cmake/share/cmake-3.6/Modules/FindBoost.cmake">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="176">
+          <caret line="1458" column="0" selection-start-line="1458" selection-start-column="0" selection-end-line="1458" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/cxx/statistics.cpp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-120">
+          <caret line="190" column="83" selection-start-line="190" selection-start-column="83" selection-end-line="190" selection-end-column="83" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/cxx/statistics_db.cpp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="615">
+          <caret line="242" column="0" selection-start-line="242" selection-start-column="0" selection-end-line="242" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/cxx/statistics_db.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="225">
+          <caret line="17" column="45" selection-start-line="17" selection-start-column="45" selection-end-line="17" selection-end-column="45" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/cxx/statistics.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="345">
+          <caret line="209" column="6" selection-start-line="209" selection-start-column="6" selection-end-line="209" selection-end-column="6" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/.CLion2016.2/clion64.vmoptions">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="240">
+          <caret line="16" column="0" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/cxx_boost/pcapreader.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="121">
+          <caret line="13" column="15" selection-start-line="13" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/cxx_boost/pcapreader.cxx">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="283">
+          <caret line="247" column="55" selection-start-line="247" selection-start-column="55" selection-end-line="247" selection-end-column="55" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/cxx/pcap_processor.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="362">
+          <caret line="44" column="0" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/release_test/pcapreader.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="195">
+          <caret line="13" column="25" selection-start-line="13" selection-start-column="25" selection-end-line="13" selection-end-column="25" />
+          <folding>
+            <element signature="e#29#68#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/cxx/pcap_processor.cpp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1622">
+          <caret line="226" column="0" selection-start-line="226" selection-start-column="0" selection-end-line="241" selection-end-column="3" />
+          <folding>
+            <marker date="1475431165897" expanded="true" signature="8313:8839" ph="//..." />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/CMakeLists.txt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="436">
+          <caret line="47" column="32" selection-start-line="47" selection-start-column="32" selection-end-line="47" selection-end-column="32" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+  </component>
+  <component name="masterDetails">
+    <states>
+      <state key="ScopeChooserConfigurable.UI">
+        <settings>
+          <last-edited>project_files_cxx</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+          <order>
+            <scope name="project_files_cxx" />
+          </order>
+        </settings>
+      </state>
+    </states>
+  </component>
+</project>

+ 61 - 0
code_boost/src/CMakeLists.txt

@@ -0,0 +1,61 @@
+##################################
+# DEFINITION OF C++ PROJECT
+##################################
+project(cpp-pcapreader)
+
+# Define CMake settings
+cmake_minimum_required(VERSION 3.5)
+
+IF (CMAKE_BUILD_TYPE MATCHES Debug)
+    MESSAGE(STATUS "Running DEBUG configuration. Skipping library generation.")
+ELSEIF (CMAKE_BUILD_TYPE MATCHES Release)
+    MESSAGE(STATUS "Running RELEASE configuration. Creating library..")
+ENDIF()
+
+#IF(NOT CMAKE_BUILD_TYPE)
+#    SET(CMAKE_BUILD_TYPE "DEBUG")
+#ENDIF()
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+# Add source files and build executable cpp-pcapreader
+set(SOURCE_FILES cxx/pcap_processor.cpp cxx/pcap_processor.h cxx/statistics.cpp cxx/statistics.h cxx/statistics_db.cpp cxx/statistics_db.h)
+
+# Include SQLiteCpp library and build it
+include_directories(SQLiteCpp/include)
+add_subdirectory(SQLiteCpp)
+
+# Find libtins library and link it to the executable cpp-pcapreader
+# Libs pthread and dl are prerequisites for SQLiteCpp
+FIND_LIBRARY(TINS_LIBRARY tins)
+
+# Find and configure BOOST library
+FIND_PACKAGE(Boost 1.54.0)
+IF (Boost_FOUND AND TINS_LIBRARY)
+    INCLUDE_DIRECTORIES("${Boost_INCLUDE_DIRS}" "/usr/include/python3.4m/")
+    SET(Boost_USE_STATIC_LIBS OFF)
+    SET(Boost_USE_MULTITHREADED ON)
+    SET(Boost_USE_STATIC_RUNTIME OFF)
+
+    FIND_PACKAGE(Boost 1.54.0 COMPONENTS "python-py34")
+
+    ADD_EXECUTABLE(cpp-pcapreader ${SOURCE_FILES})
+    ADD_LIBRARY(pcapreader SHARED ${SOURCE_FILES})
+
+    # link it to the executable cpp-pcapreader
+    # Libs pthread and dl are prerequisites for SQLiteCpp
+    TARGET_LINK_LIBRARIES(pcapreader ${Boost_LIBRARIES} "${TINS_LIBRARY}" SQLiteCpp sqlite3 pthread dl)
+    TARGET_LINK_LIBRARIES(cpp-pcapreader ${Boost_LIBRARIES} "${TINS_LIBRARY}" SQLiteCpp sqlite3 pthread dl)
+ELSE ()
+    MESSAGE(FATAL_ERROR "Unable to find correct Boost version and/or Libtins library")
+ENDIF ()
+
+
+# Check if GNUCXX compiler is configured
+set_target_properties(sqlite3 PROPERTIES POSITION_INDEPENDENT_CODE ON)
+IF(CMAKE_COMPILER_IS_GNUCXX)
+	ADD_DEFINITIONS("-Wall")
+    #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1")        ## Optimize
+ELSE()
+	MESSAGE(FATAL_ERROR "CMakeLists.txt has not been tested...")
+ENDIF()

+ 538 - 0
code_boost/src/SQLiteCpp/.cproject

@@ -0,0 +1,538 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.1034724773">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.1034724773" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.1034724773" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug">
+					<folderInfo id="cdt.managedbuild.config.gnu.exe.debug.1034724773." name="/" resourcePath="">
+						<toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.898681687" name="Linux GCC" nonInternalBuilderId="cdt.managedbuild.target.gnu.builder.exe.debug" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
+							<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.25715897" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
+							<builder buildPath="${ProjDirPath}/build" id="cdt.managedbuild.target.gnu.builder.exe.debug.1103730408" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/>
+							<tool id="cdt.managedbuild.tool.gnu.archiver.base.836634439" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+							<tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1817615032" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug">
+								<option id="gnu.cpp.compiler.exe.debug.option.optimization.level.750523151" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+								<option id="gnu.cpp.compiler.exe.debug.option.debugging.level.1248186067" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1310903331" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.796464367" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug">
+								<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1202477623" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/>
+								<option id="gnu.c.compiler.exe.debug.option.debugging.level.280470620" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1655653012" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.1058275134" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/>
+							<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.1061662206" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug">
+								<option id="gnu.cpp.link.option.libs.1966761747" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+									<listOptionValue builtIn="false" value="pthread"/>
+									<listOptionValue builtIn="false" value="dl"/>
+								</option>
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1636986986" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.258570404" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug">
+								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1571334436" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+			<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+			<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings">
+				<doc-comment-owner id="org.eclipse.cdt.ui.doxygen">
+					<path value=""/>
+				</doc-comment-owner>
+			</storageModule>
+		</cconfiguration>
+		<cconfiguration id="cdt.managedbuild.config.gnu.exe.release.326780594">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.326780594" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.326780594" name="Release" parent="cdt.managedbuild.config.gnu.exe.release">
+					<folderInfo id="cdt.managedbuild.config.gnu.exe.release.326780594." name="/" resourcePath="">
+						<toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.1521127462" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release">
+							<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.1294814790" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/>
+							<builder arguments="BUILD=Release" buildPath="${ProjDirPath}" command="make" id="cdt.managedbuild.target.gnu.builder.exe.release.1733496537" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/>
+							<tool id="cdt.managedbuild.tool.gnu.archiver.base.446006787" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+							<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.2105828055" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release">
+								<option id="gnu.cpp.compiler.exe.release.option.optimization.level.1921346334" name="Optimization Level" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+								<option id="gnu.cpp.compiler.exe.release.option.debugging.level.1660521780" name="Debug Level" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1064866729" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.1329805514" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
+								<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.2130170048" name="Optimization Level" superClass="gnu.c.compiler.exe.release.option.optimization.level" valueType="enumerated"/>
+								<option id="gnu.c.compiler.exe.release.option.debugging.level.1028604453" name="Debug Level" superClass="gnu.c.compiler.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1173224902" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.1484631410" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/>
+							<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.1493084285" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release">
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1398815353" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.1362356526" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release">
+								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.831278578" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+			<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings">
+				<doc-comment-owner id="org.eclipse.cdt.ui.doxygen">
+					<path value=""/>
+				</doc-comment-owner>
+			</storageModule>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="SQLiteC++.cdt.managedbuild.target.gnu.exe.2007535171" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/>
+	</storageModule>
+	<storageModule moduleId="refreshScope" versionNumber="2">
+		<configuration configurationName="Release">
+			<resource resourceType="PROJECT" workspacePath="/SQLiteCpp"/>
+		</configuration>
+		<configuration configurationName="Debug">
+			<resource resourceType="PROJECT" workspacePath="/SQLiteCpp"/>
+		</configuration>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+			<buildOutputProvider>
+				<openAction enabled="true" filePath=""/>
+				<parser enabled="true"/>
+			</buildOutputProvider>
+			<scannerInfoProvider id="specsFile">
+				<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+				<parser enabled="true"/>
+			</scannerInfoProvider>
+		</profile>
+		<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+			<buildOutputProvider>
+				<openAction enabled="true" filePath=""/>
+				<parser enabled="true"/>
+			</buildOutputProvider>
+			<scannerInfoProvider id="makefileGenerator">
+				<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+				<parser enabled="true"/>
+			</scannerInfoProvider>
+		</profile>
+		<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+			<buildOutputProvider>
+				<openAction enabled="true" filePath=""/>
+				<parser enabled="true"/>
+			</buildOutputProvider>
+			<scannerInfoProvider id="specsFile">
+				<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+				<parser enabled="true"/>
+			</scannerInfoProvider>
+		</profile>
+		<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+			<buildOutputProvider>
+				<openAction enabled="true" filePath=""/>
+				<parser enabled="true"/>
+			</buildOutputProvider>
+			<scannerInfoProvider id="specsFile">
+				<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+				<parser enabled="true"/>
+			</scannerInfoProvider>
+		</profile>
+		<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+			<buildOutputProvider>
+				<openAction enabled="true" filePath=""/>
+				<parser enabled="true"/>
+			</buildOutputProvider>
+			<scannerInfoProvider id="specsFile">
+				<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+				<parser enabled="true"/>
+			</scannerInfoProvider>
+		</profile>
+		<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+			<buildOutputProvider>
+				<openAction enabled="true" filePath=""/>
+				<parser enabled="true"/>
+			</buildOutputProvider>
+			<scannerInfoProvider id="specsFile">
+				<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+				<parser enabled="true"/>
+			</scannerInfoProvider>
+		</profile>
+		<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+			<buildOutputProvider>
+				<openAction enabled="true" filePath=""/>
+				<parser enabled="true"/>
+			</buildOutputProvider>
+			<scannerInfoProvider id="specsFile">
+				<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+				<parser enabled="true"/>
+			</scannerInfoProvider>
+		</profile>
+		<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+			<buildOutputProvider>
+				<openAction enabled="true" filePath=""/>
+				<parser enabled="true"/>
+			</buildOutputProvider>
+			<scannerInfoProvider id="specsFile">
+				<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+				<parser enabled="true"/>
+			</scannerInfoProvider>
+		</profile>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.326780594;cdt.managedbuild.config.gnu.exe.release.326780594.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.1329805514;cdt.managedbuild.tool.gnu.c.compiler.input.1173224902">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+			<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="makefileGenerator">
+					<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.1034724773;cdt.managedbuild.config.gnu.exe.debug.1034724773.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1817615032;cdt.managedbuild.tool.gnu.cpp.compiler.input.1310903331">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+			<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="makefileGenerator">
+					<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.326780594;cdt.managedbuild.config.gnu.exe.release.326780594.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.2105828055;cdt.managedbuild.tool.gnu.cpp.compiler.input.1064866729">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+			<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="makefileGenerator">
+					<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.1034724773;cdt.managedbuild.config.gnu.exe.debug.1034724773.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.796464367;cdt.managedbuild.tool.gnu.c.compiler.input.1655653012">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+			<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="makefileGenerator">
+					<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+			<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+				<buildOutputProvider>
+					<openAction enabled="true" filePath=""/>
+					<parser enabled="true"/>
+				</buildOutputProvider>
+				<scannerInfoProvider id="specsFile">
+					<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+					<parser enabled="true"/>
+				</scannerInfoProvider>
+			</profile>
+		</scannerConfigBuildInfo>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+</cproject>

+ 85 - 0
code_boost/src/SQLiteCpp/.project

@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>SQLiteC++</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.python.pydev.PyDevBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>?name?</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.append_environment</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildArguments</key>
+					<value>-j</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildCommand</key>
+					<value>make</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+					<value>clean</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.contents</key>
+					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+					<value>false</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+					<value>all</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.stopOnError</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+					<value>true</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+		<nature>org.python.pydev.pythonNature</nature>
+	</natures>
+</projectDescription>

+ 163 - 0
code_boost/src/SQLiteCpp/.travis.yml

@@ -0,0 +1,163 @@
+# Copyright (c) 2012-2016 Sebastien Rombauts (sebastien.rombauts@gmail.com)
+
+# request for Ubuntu 14.04 Trusty VM
+sudo: true
+dist: trusty
+
+cache:
+  apt: true
+
+# NOTE: no language, so that we can set CXX and CC env vars as required
+#language: cpp
+
+matrix:
+  include:
+    # gcc default
+    - compiler: gcc
+      env:
+        - CC=gcc
+        - CXX=g++
+    # gcc 4.9 std=default
+    - compiler: gcc
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-4.9
+      env:
+        - CC=gcc-4.9
+        - CXX=g++-4.9
+    # gcc 5 std=c++03
+    - compiler: gcc
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-5
+      env:
+        - CC=gcc-5
+        - CXX=g++-5
+        - CXXFLAGS="-std=c++03"
+    # gcc 5 std=c++11
+    - compiler: gcc
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-5
+      env:
+        - CC=gcc-5
+        - CXX=g++-5
+        - CXXFLAGS="-std=c++11"
+    # gcc 5 std=c++14
+    - compiler: gcc
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-5
+      env:
+        - CC=gcc-5
+        - CXX=g++-5
+        - CXXFLAGS="-std=c++14"
+    # gcc 5 std=c++1z
+    - compiler: gcc
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-5
+      env:
+        - CC=gcc-5
+        - CXX=g++-5
+        - CXXFLAGS="-std=c++1z"
+    # gcc 6 std=c++14
+    - compiler: gcc
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-6
+      env:
+        - CXX=g++-6
+        - CXXFLAGS="-std=c++14"
+    # gcc 6 std=c++1z
+    - compiler: gcc
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-6
+      env:
+        - CC=gcc-6
+        - CXX=g++-6
+        - CXXFLAGS="-std=c++1z"
+    # gcc 6 std=c++14 all warnings, pedantic
+    - compiler: gcc
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-6
+      env:
+        - CC=gcc-6
+        - CXX=g++-6
+        - CXXFLAGS="-std=c++14 -Wall -Wextra -pedantic"
+    # clang default
+    - compiler: clang
+      env:
+        - CC=clang
+        - CXX=clang++
+    # clang 3.8
+    - compiler: clang
+      os: linux
+      env:
+        - CC=clang
+        - CXX=clang++
+        - LLVM_VERSION=3.8.0
+        - LLVM_ARCHIVE_PATH=$HOME/clang+llvm.tar.xz
+        - CPPFLAGS="-I $HOME/clang-$LLVM_VERSION/include/c++/v1"
+        - CXXFLAGS=-lc++
+        - PATH=$HOME/clang-$LLVM_VERSION/bin:$PATH
+        - LD_LIBRARY_PATH=$HOME/clang-$LLVM_VERSION/lib:$LD_LIBRARY_PATH
+      before_install:
+        - wget http://llvm.org/releases/$LLVM_VERSION/clang+llvm-$LLVM_VERSION-x86_64-linux-gnu-ubuntu-14.04.tar.xz -O $LLVM_ARCHIVE_PATH
+        - mkdir $HOME/clang-$LLVM_VERSION
+        - tar xf $LLVM_ARCHIVE_PATH -C $HOME/clang-$LLVM_VERSION --strip-components 1
+    # os x
+    - compiler: clang
+      os: osx
+      osx_image: xcode8
+      install:
+        - brew install cmake
+      env:
+        - CC=clang
+        - CXX=clang
+        - CXXFLAGS=-lstdc++
+
+
+before_install:
+  - if [[ "$CXX" == "g++" ]]; then pip install --user cpp-coveralls ; fi
+
+# scripts to run before build
+before_script:
+  - mkdir build
+  - cd build
+  - cmake -DCMAKE_BUILD_TYPE=Debug -DSQLITECPP_USE_GCOV=ON -DSQLITECPP_BUILD_EXAMPLES=ON -DSQLITECPP_BUILD_TESTS=ON ..
+
+# build examples, and run tests (ie make & make test)
+script:
+  - cmake --build .
+  - ctest --verbose --output-on-failure
+
+# generate and publish GCov coveralls results
+after_success:
+  - if [[ "$CXX" == "g++" ]]; then coveralls --root .. -e examples -e googletest -e sqlite3 -e tests -E ".*feature_tests.*" -E ".*CompilerId.*" --gcov-options '\-lp' ; fi

+ 96 - 0
code_boost/src/SQLiteCpp/CHANGELOG.txt

@@ -0,0 +1,96 @@
+Mar 30 2012
+    Start of a new thin C++ SQLite wrapper
+
+Apr 2 2012
+    The wrapper is functionnal
+    Added documentation and examples
+    Publication on GitHub    
+
+Version 0.1.0 - Apr 4 2012
+    Added a Database::exec() methode to execute simple SQL statement
+    Added a version number like in sqlite3.h, starting with 0.1.0
+
+Version 0.2.0 - Apr 11 2012
+    Added getLastInsertId() and setBusyTimout()
+    Added bind() by name methods
+
+Version 0.3.0 - Apr 16 2012
+    Added an easy wrapper Database::execAngGet()
+    
+Version 0.4.0 - Apr 23 2012
+    Added a Database::tableExists() easy to use function
+    
+Dec 10 2012
+    Added a Statement::exec() method to execute a one-step query with no expected result
+    
+Version 0.5.0 - March 9 2013
+    Added assert() on errors on destructors
+    Added getBytes()
+    Added getBlob(), getType() and isInteger/isFloat/isText/isBlob/isNull
+    Added bind() for binary blob data
+    
+Version 0.5.1 - April 7 2013
+    Added Column::getName()
+    
+Version 0.6.0 - November 22 2013
+    Renamed Column::getName() to Column::getOriginName()
+    Added Column::getName() 
+    
+Version 0.7.0 - January 9 2014
+    Added Database::createFunction()
+    Added std::string version of existing APIs
+    Improved CMake with more build options and Doxygen auto-detection
+    
+Version 0.8.0 - February 26 2014
+    Database constructor support opening a database with a custom VFS (default to NULL)
+    Changed Column::getText() to return empty string "" by default instead of NULL pointer (to handle std::string conversion)
+    
+Version 1.0.0 - May 3 2015
+    Public headers file moved to include/ dir
+    Added support to biicode in CMakeLists.txt
+    Added Unit Tests
+    Added aBusyTimeoutMs parameter to Database() constructors
+    Added Database::getTotalChanges()
+    Added Database::getErrorCode()
+    Added Statement::clearBindings()
+    Added Statement::getColumn(aName)
+    Added Statement::getErrorCode()
+    Added Statement::getColumnName(aIndex)
+    Added Statement::getColumnOriginName(aIndex)
+    
+Version 1.1.0 - May 18 2015
+    Fixed valgrind error on Database destructor
+    Added Database::loadExtension
+    
+Version 1.2.0 - September 9 2015
+    Fixed build with GCC 5.1.0
+    Fixed MSVC release build warning
+    Fixed CppDepends warnings
+    Updated documentation on installation
+    Added Database::getHandle()
+    
+Version 1.3.0 - November 1 2015
+    Fixed build with Visual Studio 2015
+    Further improvements to README
+    Added Backup class
+    
+Version 1.3.1 - February 10 2016
+    Swith Linux/Mac build to the provided SQLite3 C library
+    Update SQLite3 from 3.8.8.3 to latest 3.10.2 (2016-01-20)
+    Remove warnings
+    Remove biicode support (defunct service, servers will shutdown the 16th of February 2016)
+
+Version 2.0.0 - July 25 2016
+    Update SQLite3 from 3.10.2 to latest 3.13 (2016-05-18)
+    Move #include <sqlite3.h> from headers to .cpp files only using forward declarations
+    Add Database::VERSION to reach SQLITE_VERSION without including sqlite3.h in application code
+    Add getLibVersion() and getLibVersionNumber() to get runtime version of the library
+    Better exception messages when Statements fail PR #84
+    Variadic templates for bind() (C++14) PR #85
+    Add Statement::bindNoCopy() methods for strings, using SQLITE_STATIC to avoid internal copy by SQLite3 PR #86
+    Add Statement::bind() overload for uint32_t, and Column::getUint() and cast operator to uint32_t PR #86
+    Use the new SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION from SQLite 3.13 for security reason
+    Rename Backup::remainingPageCount()/totalPageCount() to Backup::getRemainingPageCount()/getTotalPageCount() 
+    Remove Column::errmsg() method : use Database or Statement equivalents
+    More unit tests, with code coverage status on the GitHub page
+    Do not force MSVC to use static runtime if unit-tests are not build

+ 286 - 0
code_boost/src/SQLiteCpp/CMakeLists.txt

@@ -0,0 +1,286 @@
+# Main CMake file for compiling the library itself, examples and tests.
+#
+# Copyright (c) 2012-2016 Sebastien Rombauts (sebastien.rombauts@gmail.com)
+#
+# Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt
+# or copy at http://opensource.org/licenses/MIT) 
+cmake_minimum_required(VERSION 2.8.12) # first version with add_compile_options()
+project(SQLiteCpp)
+
+# Define useful variables to handle OS differences:
+if (WIN32)
+    set(DEV_NULL                "NUL")
+else (WIN32) # UNIX
+    set(DEV_NULL                "/dev/null")
+endif (WIN32)
+
+# then Compiler/IDE differences:
+if (MSVC)
+    set(CPPLINT_ARG_OUTPUT      "--output=vs7")
+    set(CPPCHECK_ARG_TEMPLATE   "--template=vs")
+    # disable Visual Studio warnings for fopen() used in the example
+    add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+    # Flags for linking with multithread static C++ runtime, required by googletest
+    if (SQLITECPP_BUILD_TESTS)
+        message(STATUS "Linking against multithread static C++ runtime for unit tests with googletest")
+        set(CMAKE_C_FLAGS_RELEASE   "${CMAKE_C_FLAGS_RELEASE} /MT")
+        set(CMAKE_C_FLAGS_DEBUG     "${CMAKE_C_FLAGS_DEBUG} /MTd")
+        set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
+        set(CMAKE_CXX_FLAGS_DEBUG   "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
+    endif (SQLITECPP_BUILD_TESTS)
+else (MSVC)
+    set(CPPLINT_ARG_OUTPUT      "--output=eclipse")
+    set(CPPCHECK_ARG_TEMPLATE   "--template=gcc")
+    # Useful compile flags and extra warnings 
+    add_compile_options(-fstack-protector -Wall -Winit-self -Wswitch-enum -Wshadow -Winline)
+    if (CMAKE_COMPILER_IS_GNUCXX)
+        # GCC flags
+        if (SQLITECPP_USE_GCOV AND CMAKE_COMPILER_IS_GNUCXX)
+            if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+                message (STATUS "Using GCov instrumentation")
+            else ()
+                message (WARNING "GCov instrumentation works best in Debug mode")
+            endif ()
+            add_compile_options (-coverage) # NOTE would be usefull but not working with current google test and gcc 4.8 -fkeep-inline-functions
+            set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -coverage")
+        endif ()
+    endif (CMAKE_COMPILER_IS_GNUCXX)
+endif (MSVC)
+# and then common variables
+set(CPPLINT_ARG_VERBOSE "--verbose=3")
+set(CPPLINT_ARG_LINELENGTH "--linelength=120")
+
+# Print CXX compiler information
+message (STATUS "CMAKE_CXX_COMPILER '${CMAKE_CXX_COMPILER}' '${CMAKE_CXX_COMPILER_ID}' '${CMAKE_CXX_COMPILER_VERSION}'")
+
+# Print CXX FLAGS
+message (STATUS "CMAKE_CXX_FLAGS                '${CMAKE_CXX_FLAGS}'")
+if (MSVC)
+    message (STATUS "CMAKE_CXX_FLAGS_DEBUG          '${CMAKE_CXX_FLAGS_DEBUG}'")
+    message (STATUS "CMAKE_CXX_FLAGS_RELEASE        '${CMAKE_CXX_FLAGS_RELEASE}'")
+    message (STATUS "CMAKE_CXX_FLAGS_RELWITHDEBINFO '${CMAKE_CXX_FLAGS_RELWITHDEBINFO}'")
+    message (STATUS "CMAKE_CXX_FLAGS_MINSIZEREL     '${CMAKE_CXX_FLAGS_MINSIZEREL}'")
+else (NOT MSVC)
+    if     (CMAKE_BUILD_TYPE STREQUAL Debug)
+        message (STATUS "CMAKE_CXX_FLAGS_DEBUG          '${CMAKE_CXX_FLAGS_DEBUG}'")
+    elseif (CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo)
+        message (STATUS "CMAKE_CXX_FLAGS_RELWITHDEBINFO '${CMAKE_CXX_FLAGS_RELWITHDEBINFO}'")
+    elseif (CMAKE_BUILD_TYPE STREQUAL MinSizeRel)
+        message (STATUS "CMAKE_CXX_FLAGS_MINSIZEREL     '${CMAKE_CXX_FLAGS_MINSIZEREL}'")
+    else ()
+        message (STATUS "CMAKE_CXX_FLAGS_RELEASE        '${CMAKE_CXX_FLAGS_RELEASE}'")
+    endif ()
+endif ()
+
+# Options relative to SQLite and SQLiteC++ functions
+
+option(SQLITE_ENABLE_COLUMN_METADATA "Enable Column::getColumnOriginName(). Require support from sqlite3 library." ON)
+if (SQLITE_ENABLE_COLUMN_METADATA) 
+    # Enable the use of SQLite column metadata and Column::getColumnOriginName() method,
+    # Require that the sqlite3 library is also compiled with this flag (default under Debian/Ubuntu, but not on Mac OS X).
+    add_definitions(-DSQLITE_ENABLE_COLUMN_METADATA)
+endif (SQLITE_ENABLE_COLUMN_METADATA)
+
+option(SQLITE_ENABLE_ASSERT_HANDLER "Enable the user defintion of a assertion_failed() handler." OFF)
+if (SQLITE_ENABLE_ASSERT_HANDLER) 
+    # Enable the user defintion of a assertion_failed() handler (default to false, easier to handler for begginers).
+    add_definitions(-DSQLITECPP_ENABLE_ASSERT_HANDLER)
+endif (SQLITE_ENABLE_ASSERT_HANDLER)
+
+
+## Build the C++ Wrapper ##
+
+# adding a new file require explicittly modifing the CMakeLists.txt
+# so that CMake knows that it should rebuild the project (it is best practice)
+
+# list of sources files of the library
+set(SQLITECPP_SRC
+ ${PROJECT_SOURCE_DIR}/src/Backup.cpp
+ ${PROJECT_SOURCE_DIR}/src/Column.cpp
+ ${PROJECT_SOURCE_DIR}/src/Database.cpp
+ ${PROJECT_SOURCE_DIR}/src/Exception.cpp
+ ${PROJECT_SOURCE_DIR}/src/Statement.cpp
+ ${PROJECT_SOURCE_DIR}/src/Transaction.cpp
+)
+source_group(src FILES ${SQLITECPP_SRC})
+
+# list of header files of the library
+set(SQLITECPP_INC
+ ${PROJECT_SOURCE_DIR}/include/SQLiteCpp/SQLiteCpp.h
+ ${PROJECT_SOURCE_DIR}/include/SQLiteCpp/Assertion.h
+ ${PROJECT_SOURCE_DIR}/include/SQLiteCpp/Backup.h
+ ${PROJECT_SOURCE_DIR}/include/SQLiteCpp/Column.h
+ ${PROJECT_SOURCE_DIR}/include/SQLiteCpp/Database.h
+ ${PROJECT_SOURCE_DIR}/include/SQLiteCpp/Exception.h
+ ${PROJECT_SOURCE_DIR}/include/SQLiteCpp/Statement.h
+ ${PROJECT_SOURCE_DIR}/include/SQLiteCpp/Transaction.h
+ ${PROJECT_SOURCE_DIR}/include/SQLiteCpp/VariadicBind.h
+)
+source_group(inc FILES ${SQLITECPP_INC})
+
+# list of test files of the library
+set(SQLITECPP_TESTS
+ tests/Column_test.cpp
+ tests/Database_test.cpp
+ tests/Statement_test.cpp
+ tests/Backup_test.cpp
+ tests/Transaction_test.cpp
+ tests/VariadicBind_test.cpp
+)
+source_group(tests FILES ${SQLITECPP_TESTS})
+
+# list of example files of the library
+set(SQLITECPP_EXAMPLES
+ examples/example1/main.cpp
+)
+source_group(example1 FILES ${SQLITECPP_EXAMPLES})
+
+# list of doc files of the library
+set(SQLITECPP_DOC
+ README.md
+ LICENSE.txt
+ CHANGELOG.txt
+ TODO.txt
+)
+source_group(doc FILES ${SQLITECPP_DOC})
+
+# list of script files of the library
+set(SQLITECPP_SCRIPT
+ .travis.yml
+ appveyor.yml
+ build.bat
+ build.sh
+ cpplint.py
+ Doxyfile
+ FindSQLiteCpp.cmake
+)
+source_group(scripts FILES ${SQLITECPP_SCRIPT})
+
+# All includes are relative to the "include" directory 
+include_directories("${PROJECT_SOURCE_DIR}/include")
+
+# add sources of the wrapper as a "SQLiteCpp" static library
+add_library(SQLiteCpp ${SQLITECPP_SRC} ${SQLITECPP_INC} ${SQLITECPP_DOC} ${SQLITECPP_SCRIPT})
+target_include_directories(SQLiteCpp PUBLIC "${PROJECT_SOURCE_DIR}/include")
+
+if (UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))
+    set_target_properties(SQLiteCpp PROPERTIES COMPILE_FLAGS "-fPIC")
+endif (UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))
+
+
+## Build provided copy of SQLite3 C library ##
+
+option(SQLITECPP_INTERNAL_SQLITE "Add the internal SQLite3 source to the project." ON)
+if (SQLITECPP_INTERNAL_SQLITE)
+    # build the SQLite3 C library (for ease of use/compatibility) versus Linux sqlite3-dev package
+    add_subdirectory(sqlite3)
+    include_directories("${PROJECT_SOURCE_DIR}/sqlite3")
+    target_include_directories(sqlite3 PUBLIC "${PROJECT_SOURCE_DIR}/sqlite3")
+endif (SQLITECPP_INTERNAL_SQLITE)
+
+
+# Optional additional targets:
+
+option(SQLITECPP_RUN_CPPLINT "Run cpplint.py tool for Google C++ StyleGuide." ON)
+if (SQLITECPP_RUN_CPPLINT)
+    find_package(PythonInterp)
+    if (PYTHONINTERP_FOUND)
+        # add a cpplint target to the "all" target
+        add_custom_target(SQLiteCpp_cpplint
+         ALL
+         COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/cpplint.py ${CPPLINT_ARG_OUTPUT} ${CPPLINT_ARG_VERBOSE} ${CPPLINT_ARG_LINELENGTH} ${SQLITECPP_SRC} ${SQLITECPP_INC}
+        )
+    endif (PYTHONINTERP_FOUND)
+else (SQLITECPP_RUN_CPPLINT)
+    message(STATUS "SQLITECPP_RUN_CPPLINT OFF")
+endif (SQLITECPP_RUN_CPPLINT)
+
+option(SQLITECPP_RUN_CPPCHECK "Run cppcheck C++ static analysis tool." ON)
+if (SQLITECPP_RUN_CPPCHECK)
+    find_program(CPPCHECK_EXECUTABLE NAMES cppcheck)
+    if (CPPCHECK_EXECUTABLE)
+        # add a cppcheck target to the "all" target
+        add_custom_target(SQLiteCpp_cppcheck
+         ALL
+         COMMAND ${CPPCHECK_EXECUTABLE} -j 8 cppcheck --enable=style --quiet ${CPPCHECK_ARG_TEMPLATE} ${PROJECT_SOURCE_DIR}/src
+        )
+        execute_process(COMMAND "${CPPCHECK_EXECUTABLE}" --version OUTPUT_VARIABLE CPPCHECK_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+        message(STATUS "Found Cppcheck: ${CPPCHECK_EXECUTABLE} ${CPPCHECK_VERSION}")
+    else (CPPCHECK_EXECUTABLE)
+        message(STATUS "Could NOT find cppcheck")
+    endif (CPPCHECK_EXECUTABLE)
+else (SQLITECPP_RUN_CPPCHECK)
+    message(STATUS "SQLITECPP_RUN_CPPCHECK OFF")
+endif (SQLITECPP_RUN_CPPCHECK)
+
+option(SQLITECPP_RUN_DOXYGEN "Run Doxygen C++ documentation tool." OFF)
+if (SQLITECPP_RUN_DOXYGEN)
+    find_package(Doxygen)
+    if (DOXYGEN_FOUND)
+        # add a Doxygen target to the "all" target
+        add_custom_target(SQLiteCpp_doxygen
+         ALL
+         COMMAND doxygen Doxyfile > ${DEV_NULL}
+         WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+        )
+    endif (DOXYGEN_FOUND)
+else (SQLITECPP_RUN_DOXYGEN)
+    message(STATUS "SQLITECPP_RUN_DOXYGEN OFF")
+endif (SQLITECPP_RUN_DOXYGEN)
+
+option(SQLITECPP_BUILD_EXAMPLES "Build examples." OFF)
+if (SQLITECPP_BUILD_EXAMPLES)
+    # add the basic example executable
+    add_executable(SQLiteCpp_example1 ${SQLITECPP_EXAMPLES})
+    target_link_libraries(SQLiteCpp_example1 SQLiteCpp sqlite3)
+    # Link target with pthread and dl for linux
+    if (UNIX)
+        target_link_libraries(SQLiteCpp_example1 pthread)
+        if (NOT APPLE)
+            target_link_libraries(SQLiteCpp_example1 dl)
+        endif ()
+    elseif (MSYS OR MINGW)
+        target_link_libraries(SQLiteCpp_example1 ssp)
+    endif ()    
+else (SQLITECPP_BUILD_EXAMPLES)
+    message(STATUS "SQLITECPP_BUILD_EXAMPLES OFF")
+endif (SQLITECPP_BUILD_EXAMPLES)
+
+option(SQLITECPP_BUILD_TESTS "Build and run tests." OFF)
+if (SQLITECPP_BUILD_TESTS)
+    # deactivate some warnings for compiling the gtest library
+    if (NOT MSVC)
+        add_compile_options(-Wno-variadic-macros -Wno-long-long -Wno-switch-enum -Wno-float-equal -Wno-conversion-null -Wno-switch-default -Wno-pedantic)
+    endif (NOT MSVC)
+
+    # add the subdirectory containing the CMakeLists.txt for the gtest library
+    # TODO: under Linux, uses libgtest-dev if found
+    # TODO: move to the new googletest Github repository
+    if (NOT EXISTS "${PROJECT_SOURCE_DIR}/googletest/CMakeLists.txt")
+        message(FATAL_ERROR "Missing 'googletest' submodule! Either use 'git init submodule' and 'git update submodule' to get googletest according to the README, or deactivate unit tests with -DSQLITECPP_BUILD_TESTS=OFF")
+    endif ()
+    add_subdirectory(googletest) 
+    include_directories("${PROJECT_SOURCE_DIR}/googletest/googletest/include")
+
+    # add the unit test executable
+    add_executable(SQLiteCpp_tests ${SQLITECPP_TESTS})
+    target_link_libraries(SQLiteCpp_tests gtest_main SQLiteCpp sqlite3)
+    # Link target with dl for linux
+    if (UNIX AND NOT APPLE)
+        target_link_libraries(SQLiteCpp_tests dl)
+    endif ()    
+
+    # add a "test" target:
+    enable_testing()
+
+    # does the tests pass?
+    add_test(UnitTests SQLiteCpp_tests)
+
+    if (SQLITECPP_BUILD_EXAMPLES)
+        # does the example1 runs successfully?
+        add_test(Example1Run SQLiteCpp_example1)
+    endif (SQLITECPP_BUILD_EXAMPLES)
+else (SQLITECPP_BUILD_TESTS)
+    message(STATUS "SQLITECPP_BUILD_TESTS OFF")
+endif (SQLITECPP_BUILD_TESTS)
+

+ 2304 - 0
code_boost/src/SQLiteCpp/Doxyfile

@@ -0,0 +1,2304 @@
+# Doxyfile 1.8.6
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME           = SQLiteC++
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER         = 2.0.0
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF          = "SQLiteC++ is a smart and easy to use C++ SQLite3 wrapper."
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO           =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
+FULL_PATH_NAMES        = YES
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH        =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
+STRIP_FROM_INC_PATH    =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE               = 7
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
+ALIASES                =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST              =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C.
+#
+# Note For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING      =
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT       = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT       = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
+SUBGROUPING            = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS  = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE      = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES       = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC  = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES   = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING  = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
+SHOW_USED_FILES        = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES        = NO
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
+FILE_VERSION_FILTER    =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE            =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES         =
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS               = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+WARN_NO_PARAMDOC       = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
+#WARN_FORMAT            = "$file:$line: $text"   # GCC warning format
+WARN_FORMAT            = "$file($line): $text"  # MSVC warning format
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
+WARN_LOGFILE           =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT                  = src \
+                         include
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS          = *.cpp \
+                         *.h
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE                =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS        =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
+EXAMPLE_PATH           =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
+EXAMPLE_PATTERNS       = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
+IMAGE_PATH             =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+INPUT_FILTER           =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES    = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+STRIP_CODE_COMMENTS    = NO
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS        = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX     = YES
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET        =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET  =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES       =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE    = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT    = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA  = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP         = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET        = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME  = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP      = NO
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE               =
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION           =
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI           = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING     =
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE          = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION           =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP   = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID         = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX          = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW      = YES
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH         = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW    = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE       = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT    = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX            = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT         = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH        = http://www.mathjax.org/mathjax
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS     =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE       =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE           = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavours of web server based searching depending on the
+# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
+# searching and an index file used by the script. When EXTERNAL_SEARCH is
+# enabled the indexing and searching needs to be provided by external tools. See
+# the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH    = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH        = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL       =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE        = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID     =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS  =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE             = a4
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+EXTRA_PACKAGES         =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER           =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER           =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES      =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS         = YES
+
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BATCHMODE        = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HIDE_INDICES     = NO
+
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE      = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE        = plain
+
+#---------------------------------------------------------------------------
+# Configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_OUTPUT             = xml
+
+# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK       = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT         = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://autogen.sf.net) file that captures the structure of
+# the code including all documentation. Note that this feature is still
+# experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
+# in the source code. If set to NO only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH           =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+INCLUDE_FILE_PATTERNS  =
+
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+PREDEFINED             = __cplusplus=201402L
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all refrences to function-like macros that are alone on a line, have an
+# all uppercase name, and do not end with a semicolon. Such function macros are
+# typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have an unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
+
+TAGFILES               =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+GENERATE_TAGFILE       =
+
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
+# the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
+
+EXTERNAL_GROUPS        = YES
+
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES         = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            =
+
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_PATH               =
+
+# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: NO.
+
+HAVE_DOT               = NO
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS        = 0
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME           = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LOOK               = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS   = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDE_GRAPH          = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALL_GRAPH             = YES
+
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH           = YES
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_IMAGE_FORMAT       = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG        = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_PATH               =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS           =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS           =
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS           =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_CLEANUP            = YES

+ 58 - 0
code_boost/src/SQLiteCpp/FindSQLiteCpp.cmake

@@ -0,0 +1,58 @@
+# @file    CMakeLists.txt
+# @ingroup SQLiteCpp
+# @brief   SQLiteCpp CMake module.
+#
+# Copyright (c) 2010-2014 Kartik Kumar (me@kartikkumar.com)
+#
+# Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt
+# or copy at http://opensource.org/licenses/MIT)
+
+macro(_sqlitecpp_check_version)
+  file(READ "${SQLITECPP_INCLUDE_DIR}/SQLiteCpp.h" _sqlitecpp_header)
+
+  string(REGEX MATCH "define[ \t]+SQLITECPP_VERSION_NUMBER[ \t]+([0-9]+)" 
+         _sqlitecpp_version_match "${_sqlitecpp_header}")
+  set(SQLITECPP_VERSION "${CMAKE_MATCH_1}")
+  if(${SQLITECPP_VERSION} VERSION_LESS ${SQLiteCpp_FIND_VERSION})
+    set(SQLITECPP_VERSION_OK FALSE)
+  else(${SQLITECPP_VERSION} VERSION_LESS ${SQLiteCpp_FIND_VERSION})
+    set(SQLITECPP_VERSION_OK TRUE)
+  endif(${SQLITECPP_VERSION} VERSION_LESS ${SQLiteCpp_FIND_VERSION})
+
+  if(NOT SQLITECPP_VERSION_OK)
+    message(STATUS "SQLiteCpp version ${SQLITECPP_VERSION} found in ${SQLITECPP_INCLUDE_DIR}, "
+                   "but at least version ${SQLiteCpp_FIND_VERSION} is required!")
+  endif(NOT SQLITECPP_VERSION_OK)
+
+  set(SQLITECPP_LIBRARY "SQLiteCpp")
+  link_directories(${SQLITECPP_LIBRARY_DIR})
+endmacro(_sqlitecpp_check_version)
+
+if(SQLITECPP_INCLUDE_DIR)
+  # Check if SQLiteCpp is already present in cache.
+  _sqlitecpp_check_version()
+  set(SQLITECPP_FOUND ${SQLITECPP_VERSION_OK})
+
+else (SQLITECPP_INCLUDE_DIR)
+  find_path(SQLITECPP_BASE_PATH NAMES SQLiteCpp.h
+      PATHS
+      ${PROJECT_SOURCE_DIR}
+      ${PROJECT_SOURCE_DIR}/..
+      ${PROJECT_SOURCE_DIR}/../..
+      ${PROJECT_SOURCE_DIR}/../../..
+      ${PROJECT_SOURCE_DIR}/../../../..      
+      PATH_SUFFIXES SQLiteCpp/include/SQLiteCpp
+    )
+  set(SQLITECPP_INCLUDE_DIR ${SQLITECPP_BASE_PATH})
+  set(SQLITECPP_LIBRARY_DIR ${SQLITECPP_BASE_PATH}/../../build)
+
+  if(SQLITECPP_INCLUDE_DIR)
+    _sqlitecpp_check_version()
+  endif(SQLITECPP_INCLUDE_DIR)
+
+  include(FindPackageHandleStandardArgs)
+  find_package_handle_standard_args(SQLITECPP DEFAULT_MSG SQLITECPP_INCLUDE_DIR SQLITECPP_VERSION_OK)
+
+  mark_as_advanced(SQLITECPP_INCLUDE_DIR)
+
+endif(SQLITECPP_INCLUDE_DIR)

+ 20 - 0
code_boost/src/SQLiteCpp/LICENSE.txt

@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2012-2016 Sebastien Rombauts (sebastien.rombauts@gmail.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in 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:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+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
+AUTHORS 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 IN THE SOFTWARE.

+ 302 - 0
code_boost/src/SQLiteCpp/README.md

@@ -0,0 +1,302 @@
+SQLiteC++
+---------
+
+[![release](https://img.shields.io/github/release/SRombauts/SQLiteCpp.svg)](https://github.com/SRombauts/SQLiteCpp/releases)
+[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/SRombauts/SQLiteCpp/blob/master/LICENSE.txt)
+[![Travis CI Linux Build Status](https://travis-ci.org/SRombauts/SQLiteCpp.svg)](https://travis-ci.org/SRombauts/SQLiteCpp "Travis CI Linux Build Status")
+[![AppVeyor Windows Build status](https://ci.appveyor.com/api/projects/status/github/SRombauts/SQLiteCpp?svg=true)](https://ci.appveyor.com/project/SbastienRombauts/SQLiteCpp "AppVeyor Windows Build status")
+[![Coveralls](https://img.shields.io/coveralls/SRombauts/SQLiteCpp.svg)](https://coveralls.io/github/SRombauts/SQLiteCpp "Coveralls test coverage")
+[![Join the chat at https://gitter.im/SRombauts/SQLiteCpp](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/SRombauts/SQLiteCpp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+
+
+SQLiteC++ (SQLiteCpp) is a smart and easy to use C++ SQLite3 wrapper.
+
+See SQLiteC++ website http://srombauts.github.com/SQLiteCpp on GitHub.
+
+Keywords: sqlite, sqlite3, C, library, wrapper C++
+
+## About SQLiteC++:
+
+SQLiteC++ offers an encapsulation around the native C APIs of SQLite,
+with a few intuitive and well documented C++ classes.
+
+### License:
+
+Copyright (c) 2012-2016 Sébastien Rombauts (sebastien.rombauts@gmail.com)
+
+Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt
+or copy at http://opensource.org/licenses/MIT)
+
+#### Note on redistribution of SQLite source files
+
+As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code
+the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
+
+I would love a mention in your README, a web link to the SQLite repository, and a mention of the author,
+but none of those are mandatory.
+
+### About SQLite underlying library:
+
+SQLite is a library that implements a serverless transactional SQL database engine.
+It is the most widely deployed SQL database engine in the world.
+All of the code and documentation in SQLite has been dedicated to the public domain by the authors.
+http://www.sqlite.org/about.html
+
+### The goals of SQLiteC++ are:
+
+- to offer the best of the existing simple C++ SQLite wrappers
+- to be elegantly written with good C++ design, STL, exceptions and RAII idiom
+- to keep dependencies to a minimum (STL and SQLite3)
+- to be portable
+- to be light and fast
+- to be thread-safe only as much as SQLite "Multi-thread" mode (see below)
+- to have a good unit test coverage
+- to use API names sticking with those of the SQLite library
+- to be well documented with Doxygen tags, and with some good examples
+- to be well maintained
+- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
+
+It is designed using the Resource Acquisition Is Initialization (RAII) idiom
+(see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization),
+and throwing exceptions in case of SQLite errors (exept in destructors,
+where assert() are used instead).
+Each SQLiteC++ object must be constructed with a valid SQLite database connection,
+and then is always valid until destroyed.
+
+### Supported platforms:
+
+Developements and tests are done under the following OSs:
+- Ubuntu 14.04 (Travis CI)
+- Windows XP/10
+- OS X 10.11 (Travis CI)
+And the following IDEs/Compilers
+- GCC 4.8.4, 4.9.3, 5.3.0 and 6.1.1 (C++03, C++11, C++14, C++1z)
+- Clang 3.5 and 3.8
+- Xcode 8
+- Visual Studio Community 2015
+- Eclipse CDT under Linux
+
+### Dependencies
+
+- an STL implementation (even an old one, like the one provided with VC6 should work)
+- exception support (the class Exception inherits from std::runtime_error)
+- the SQLite library, either by linking to it dynamicaly or statically (install the libsqlite3-dev package under Debian/Ubuntu/Mint Linux),
+  or by adding its source file in your project code base (source code provided in src/sqlite3 for Windows),
+  with the SQLITE_ENABLE_COLUMN_METADATA macro defined (see http://www.sqlite.org/compile.html#enable_column_metadata).
+
+## Getting started
+### Installation
+
+To use this wrapper, you need to add the SQLiteC++ source files from the src/ directory
+in your project code base, and compile/link against the sqlite library.
+
+The easiest way to do this is to add the wrapper as a library.
+The "CMakeLists.txt" file defining the static library is provided in the root directory,
+so you simply have to add_subdirectory(SQLiteCpp) to you main CMakeLists.txt
+and link to the "SQLiteCpp" wrapper library.
+
+Thus this SQLiteCpp repository can be directly used as a Git submoldule.
+See the [SQLiteCpp_Example](https://github.com/SRombauts/SQLiteCpp_Example) side repository for a standalone "from scratch" example.
+
+Under Debian/Ubuntu/Mint Linux, you can install the libsqlite3-dev package if you don't want to use the embedded sqlite3 library.
+
+### Building example and unit-tests:
+
+Use git to clone the repository. Then init and update submodule "googletest".
+
+```Shell
+git clone https://github.com/SRombauts/SQLiteCpp.git
+cd SQLiteCpp
+git submodule init
+git submodule update
+```
+
+#### CMake and tests
+A CMake configuration file is also provided for multiplatform support and testing.
+
+Typical generic build for MS Visual Studio under Windows (from [build.bat](build.bat)):
+
+```Batchfile
+mkdir build
+cd build
+
+cmake ..        # cmake .. -G "Visual Studio 10"    # for Visual Studio 2010
+@REM Generate a Visual Studio solution for latest version found
+cmake -DSQLITECPP_BUILD_EXAMPLES=ON -DSQLITECPP_BUILD_TESTS=ON ..
+
+@REM Build default configuration (ie 'Debug')
+cmake --build .
+
+@REM Build and run tests
+ctest --output-on-failure
+```
+
+Generating the Linux Makefile, building in Debug and executing the tests (from [build.sh](build.sh)):
+
+```Shell
+mkdir Debug
+cd Debug
+
+# Generate a Makefile for GCC (or Clang, depanding on CC/CXX envvar)
+cmake -DSQLITECPP_BUILD_EXAMPLES=ON -DSQLITECPP_BUILD_TESTS=ON ..
+
+# Build (ie 'make')
+cmake --build .
+
+# Build and run unit-tests (ie 'make test')
+ctest --output-on-failure
+```
+
+#### CMake options
+
+  * For more options on customizing the build, see the [CMakeLists.txt](https://github.com/SRombauts/SQLiteCpp/blob/master/CMakeLists.txt) file.
+
+#### Troubleshooting
+
+Under Linux, if you get muliple linker errors like "undefined reference to sqlite3_xxx",
+it's that you lack the "sqlite3" library: install the libsqlite3-dev package.
+
+If you get a single linker error "Column.cpp: undefined reference to sqlite3_column_origin_name",
+it's that your "sqlite3" library was not compiled with
+the SQLITE_ENABLE_COLUMN_METADATA macro defined (see http://www.sqlite.org/compile.html#enable_column_metadata).
+You can either recompile it yourself (seek help online) or you can comment out the following line in src/Column.h:
+
+```C++
+#define SQLITE_ENABLE_COLUMN_METADATA
+```
+
+### Continuous Integration
+
+This project is continuously tested under Ubuntu Linux with the gcc and clang compilers
+using the Travis CI community service with the above CMake building and testing procedure.
+It is also tested in the same way under Windows Server 2012 R2 with Visual Studio 2013 compiler
+using the AppVeyor countinuous integration service.
+
+Detailed results can be seen online:
+ - https://travis-ci.org/SRombauts/SQLiteCpp
+ - https://ci.appveyor.com/project/SbastienRombauts/SQLiteCpp
+
+### Thread-safety
+
+SQLite supports three modes of thread safety, as describe in "SQLite And Multiple Threads":
+see http://www.sqlite.org/threadsafe.html
+
+This SQLiteC++ wrapper does no add any locks (no mutexes) nor any other thread-safety mechanism
+above the SQLite library itself, by design, for lightness and speed.
+
+Thus, SQLiteC++ naturally supports the "Multi Thread" mode of SQLite:
+"In this mode, SQLite can be safely used by multiple threads
+provided that no single database connection is used simultaneously in two or more threads."
+
+But SQLiteC++ does not support the fully thread-safe "Serialized" mode of SQLite,
+because of the way it shares the underlying SQLite precompiled statement
+in a custom shared pointer (See the inner class "Statement::Ptr").
+
+## Examples
+### The first sample demonstrates how to query a database and get results: 
+
+```C++
+try
+{
+    // Open a database file
+    SQLite::Database    db("example.db3");
+    
+    // Compile a SQL query, containing one parameter (index 1)
+    SQLite::Statement   query(db, "SELECT * FROM test WHERE size > ?");
+    
+    // Bind the integer value 6 to the first parameter of the SQL query
+    query.bind(1, 6);
+    
+    // Loop to execute the query step by step, to get rows of result
+    while (query.executeStep())
+    {
+        // Demonstrate how to get some typed column value
+        int         id      = query.getColumn(0);
+        const char* value   = query.getColumn(1);
+        int         size    = query.getColumn(2);
+        
+        std::cout << "row: " << id << ", " << value << ", " << size << std::endl;
+    }
+}
+catch (std::exception& e)
+{
+    std::cout << "exception: " << e.what() << std::endl;
+}
+```
+
+### The second sample shows how to manage a transaction:
+
+```C++
+try
+{
+    SQLite::Database    db("transaction.db3", SQLite::OPEN_READWRITE|SQLite::OPEN_CREATE);
+
+    db.exec("DROP TABLE IF EXISTS test");
+
+    // Begin transaction
+    SQLite::Transaction transaction(db);
+
+    db.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, value TEXT)");
+
+    int nb = db.exec("INSERT INTO test VALUES (NULL, \"test\")");
+    std::cout << "INSERT INTO test VALUES (NULL, \"test\")\", returned " << nb << std::endl;
+
+    // Commit transaction
+    transaction.commit();
+}
+catch (std::exception& e)
+{
+    std::cout << "exception: " << e.what() << std::endl;
+}
+```
+
+### How to handle assertion in SQLiteC++:
+Exceptions shall not be used in destructors, so SQLiteC++ uses SQLITECPP_ASSERT() to check for errors in destructors.
+If you don't want assert() to be called, you have to enable and define an assert handler as shown below,
+and by setting the flag SQLITECPP_ENABLE_ASSERT_HANDLER when compiling the lib.
+
+```C++
+#ifdef SQLITECPP_ENABLE_ASSERT_HANDLER
+namespace SQLite
+{
+/// definition of the assertion handler enabled when SQLITECPP_ENABLE_ASSERT_HANDLER is defined in the project (CMakeList.txt)
+void assertion_failed(const char* apFile, const long apLine, const char* apFunc, const char* apExpr, const char* apMsg)
+{
+    // Print a message to the standard error output stream, and abort the program.
+    std::cerr << apFile << ":" << apLine << ":" << " error: assertion failed (" << apExpr << ") in " << apFunc << "() with message \"" << apMsg << "\"\n";
+    std::abort();
+}
+}
+#endif
+```
+
+## How to contribute
+### GitHub website
+The most efficient way to help and contribute to this wrapper project is to
+use the tools provided by GitHub:
+- please fill bug reports and feature requests here: https://github.com/SRombauts/SQLiteCpp/issues
+- fork the repository, make some small changes and submit them with pull-request
+
+### Contact
+You can also email me directly, I will try to answer questions and requests whenever I get the time for it.
+
+### Coding Style Guidelines
+The source code use the CamelCase naming style variant where:
+- type names (class, struct, typedef, enums...) begin with a capital letter
+- files (.cpp/.h) are named like the class they contain
+- function and variable names begin with a lower case letter
+- member variables begin with a 'm', function arguments begin with a 'a', booleans with a 'b', pointers with a 'p'
+- each file, class, method and member variable is documented using Doxygen tags
+See also http://www.appinf.com/download/CppCodingStyleGuide.pdf for good guidelines
+
+## See also - Some other simple C++ SQLite wrappers:
+
+See bellow a short comparison of other wrappers done at the time of writing:
+ - [sqdbcpp](http://code.google.com/p/sqdbcpp/): RAII design, simple, no dependencies, UTF-8/UTF-16, new BSD license
+ - [sqlite3cc](http://ed.am/dev/sqlite3cc): uses boost, modern design, LPGPL
+ - [sqlite3pp](https://github.com/iwongu/sqlite3pp): modern design inspired by boost, MIT License
+ - [SQLite++](http://sqlitepp.berlios.de/): uses boost build system, Boost License 1.0 
+ - [CppSQLite](http://www.codeproject.com/Articles/6343/CppSQLite-C-Wrapper-for-SQLite/): famous Code Project but old design, BSD License 
+ - [easySQLite](http://code.google.com/p/easysqlite/): manages table as structured objects, complex 
+ - [sqlite_modern_cpp](https://github.com/keramer/sqlite_modern_cpp): modern C++11, all in one file, MIT license
+ 

+ 30 - 0
code_boost/src/SQLiteCpp/TODO.txt

@@ -0,0 +1,30 @@
+Switch to C++11 for v2.0.0 with removal of include <sqlite.h> in headers
+
+Add a Tutorial for SQLite newbies
+Add a real example in the form of a small interactive console application
+
+Improve Github Wiki pages with the FAQ: Installation, Examples, Tutorial, How to contribute
+Publish the Doxygen Documentation in the Github Pages (gh-pages branch)
+
+Missing features in v2.0.0:
+- #24: executemany() like in Python https://docs.python.org/2/library/sqlite3.html#sqlite3.Connection.executemany
+- #34: Better type for getColumn
+
+Missing documentation in v2.0.0:
+- explain the noncopyable property for RAII design
+- comment on returning error code instead of exception that shall not be thrown when expected (!?)
+
+Missing unit tests in v2.0.0:
+- Load Extension (not practicable, and easy to verify by code review)
+
+Advanced missing features:
+- #39: SAVEPOINT https://www.sqlite.org/lang_savepoint.html
+
+- Add optional usage of experimental sqlite3_trace() function to enable statistics 
+- Agregate ?
+
+- support for different transaction mode ? NO: too specific
+- operator<< binding ? NO: redundant with bind()
+- ATTACH Database ? NO: can already be done by "ATTACH" Statement
+
+Post an article to CodeProject: Is there a license issue ?

+ 26 - 0
code_boost/src/SQLiteCpp/appveyor.yml

@@ -0,0 +1,26 @@
+# Copyright (c) 2012-2016 Sebastien Rombauts (sebastien.rombauts@gmail.com)
+
+# build format
+version: "{build}"
+
+# scripts that run after cloning repository
+install:
+ - git submodule update --init googletest
+
+# configurations to add to build matrix
+# TODO: VS2010->VS2015 and Win32/Win64 (see https://github.com/google/googletest/blob/master/appveyor.yml)
+# TODO: MinGW Makefiles and MSYS Makefiles
+configuration:
+  - Debug
+# - Release # CMake can only build the default configuration on Visual Studio
+ 
+# scripts to run before build
+before_build:
+  - mkdir build
+  - cd build
+  - cmake -DSQLITECPP_BUILD_EXAMPLES=ON -DSQLITECPP_BUILD_TESTS=ON -DSQLITECPP_RUN_CPPCHECK=OFF ..
+
+# build examples, and run tests (ie make & make test)
+build_script:
+  - cmake --build .
+  - ctest --output-on-failure

+ 25 - 0
code_boost/src/SQLiteCpp/build.bat

@@ -0,0 +1,25 @@
+@REM Copyright (c) 2012-2016 Sebastien Rombauts (sebastien.rombauts@gmail.com)
+@REM
+@REM Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt
+@REM or copy at http://opensource.org/licenses/MIT)
+mkdir build
+cd build
+
+@REM Generate a Visual Studio solution for latest version found
+cmake -DSQLITECPP_BUILD_EXAMPLES=ON -DSQLITECPP_BUILD_TESTS=ON ..
+if ERRORLEVEL 1 goto onError
+
+@REM Build default configuration (ie 'Debug')
+cmake --build .
+if ERRORLEVEL 1 goto onError
+
+@REM Build and run tests
+ctest --output-on-failure
+if ERRORLEVEL 1 goto onError
+
+cd ..
+exit
+
+:onError
+@echo An error occured!
+cd ..

+ 20 - 0
code_boost/src/SQLiteCpp/build.sh

@@ -0,0 +1,20 @@
+#!/bin/sh
+# Copyright (c) 2012-2016 Sébastien Rombauts (sebastien.rombauts@gmail.com)
+#
+# Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt
+# or copy at http://opensource.org/licenses/MIT)
+
+# exit on firts error
+set -e
+
+mkdir -p build
+cd build
+
+# Generate a Makefile for GCC (or Clang, depanding on CC/CXX envvar)
+cmake -DCMAKE_BUILD_TYPE=Debug -DSQLITECPP_USE_GCOV=OFF -DSQLITECPP_BUILD_EXAMPLES=ON -DSQLITECPP_BUILD_TESTS=ON ..
+
+# Build (ie 'make')
+cmake --build .
+
+# Build and run unit-tests (ie 'make test')
+ctest --output-on-failure

+ 423 - 0
code_boost/src/SQLiteCpp/build/CMakeCache.txt

@@ -0,0 +1,423 @@
+# This is the CMakeCache file.
+# For build in directory: /mnt/hgfs/vm-exchange/SQLiteCpp/build
+# It was generated by CMake: /usr/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Builds the googlemock subproject
+BUILD_GMOCK:BOOL=ON
+
+//Builds the googletest subproject
+BUILD_GTEST:BOOL=OFF
+
+//Build shared libraries (DLLs).
+BUILD_SHARED_LIBS:BOOL=OFF
+
+//Path to a program.
+CMAKE_AR:FILEPATH=/usr/bin/ar
+
+//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
+// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Enable/Disable color output during build.
+CMAKE_COLOR_MAKEFILE:BOOL=ON
+
+//CXX compiler.
+CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release minsize builds.
+CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds (/MD /Ob1 /Oi
+// /Ot /Oy /Gs will produce slightly less optimized but smaller
+// files).
+CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during Release with Debug Info builds.
+CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//C compiler.
+CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release minsize builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds (/MD /Ob1 /Oi
+// /Ot /Oy /Gs will produce slightly less optimized but smaller
+// files).
+CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during Release with Debug Info builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=' '
+
+//Flags used by the linker during debug builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Enable/Disable output of compile commands during generation.
+CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/usr/bin/ld
+
+//Path to a program.
+CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=' '
+
+//Flags used by the linker during debug builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/usr/bin/nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=SQLiteCpp
+
+//Path to a program.
+CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=' '
+
+//Flags used by the linker during debug builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_STRIP:FILEPATH=/usr/bin/strip
+
+//If true, cmake will use relative paths in makefiles and projects.
+CMAKE_USE_RELATIVE_PATHS:BOOL=OFF
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make.  This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//Path to a program.
+CPPCHECK_EXECUTABLE:FILEPATH=CPPCHECK_EXECUTABLE-NOTFOUND
+
+//Path to a program.
+PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python
+
+//Build examples.
+SQLITECPP_BUILD_EXAMPLES:BOOL=ON
+
+//Build and run tests.
+SQLITECPP_BUILD_TESTS:BOOL=ON
+
+//Add the internal SQLite3 source to the project.
+SQLITECPP_INTERNAL_SQLITE:BOOL=ON
+
+//Run cppcheck C++ static analysis tool.
+SQLITECPP_RUN_CPPCHECK:BOOL=ON
+
+//Run cpplint.py tool for Google C++ StyleGuide.
+SQLITECPP_RUN_CPPLINT:BOOL=ON
+
+//Run Doxygen C++ documentation tool.
+SQLITECPP_RUN_DOXYGEN:BOOL=OFF
+
+//No help, variable specified on the command line.
+SQLITECPP_USE_GCOV:UNINITIALIZED=OFF
+
+//Enable the user defintion of a assertion_failed() handler.
+SQLITE_ENABLE_ASSERT_HANDLER:BOOL=OFF
+
+//Enable Column::getColumnOriginName(). Require support from sqlite3
+// library.
+SQLITE_ENABLE_COLUMN_METADATA:BOOL=ON
+
+//Value Computed by CMake
+SQLiteCpp_BINARY_DIR:STATIC=/mnt/hgfs/vm-exchange/SQLiteCpp/build
+
+//Dependencies for target
+SQLiteCpp_LIB_DEPENDS:STATIC=
+
+//Value Computed by CMake
+SQLiteCpp_SOURCE_DIR:STATIC=/mnt/hgfs/vm-exchange/SQLiteCpp
+
+//Value Computed by CMake
+gmock_BINARY_DIR:STATIC=/mnt/hgfs/vm-exchange/SQLiteCpp/build/googletest/googlemock
+
+//Dependencies for the target
+gmock_LIB_DEPENDS:STATIC=general;-lpthread;
+
+//Value Computed by CMake
+gmock_SOURCE_DIR:STATIC=/mnt/hgfs/vm-exchange/SQLiteCpp/googletest/googlemock
+
+//Build all of Google Mock's own tests.
+gmock_build_tests:BOOL=OFF
+
+//Dependencies for the target
+gmock_main_LIB_DEPENDS:STATIC=general;-lpthread;
+
+//Value Computed by CMake
+googletest-distribution_BINARY_DIR:STATIC=/mnt/hgfs/vm-exchange/SQLiteCpp/build/googletest
+
+//Value Computed by CMake
+googletest-distribution_SOURCE_DIR:STATIC=/mnt/hgfs/vm-exchange/SQLiteCpp/googletest
+
+//Value Computed by CMake
+gtest_BINARY_DIR:STATIC=/mnt/hgfs/vm-exchange/SQLiteCpp/build/googletest/googlemock/gtest
+
+//Dependencies for the target
+gtest_LIB_DEPENDS:STATIC=general;-lpthread;
+
+//Value Computed by CMake
+gtest_SOURCE_DIR:STATIC=/mnt/hgfs/vm-exchange/SQLiteCpp/googletest/googletest
+
+//Build gtest's sample programs.
+gtest_build_samples:BOOL=OFF
+
+//Build all of gtest's own tests.
+gtest_build_tests:BOOL=OFF
+
+//Disable uses of pthreads in gtest.
+gtest_disable_pthreads:BOOL=OFF
+
+//Use shared (DLL) run-time lib even when Google Test is built
+// as static lib.
+gtest_force_shared_crt:BOOL=OFF
+
+//Build gtest with internal symbols hidden in shared libraries.
+gtest_hide_internal_symbols:BOOL=OFF
+
+//Dependencies for the target
+gtest_main_LIB_DEPENDS:STATIC=general;-lpthread;general;gtest;
+
+//Dependencies for target
+sqlite3_LIB_DEPENDS:STATIC=
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_BUILD_TOOL
+CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1
+//What is the target build tool cmake is generating for.
+CMAKE_BUILD_TOOL:INTERNAL=/usr/bin/make
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/mnt/hgfs/vm-exchange/SQLiteCpp/build
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=8
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=12
+//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
+CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest
+//ADVANCED property for variable: CMAKE_CXX_COMPILER
+CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS
+CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
+CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
+CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
+CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
+CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER
+CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Executable file format
+CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
+CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Unix Makefiles
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Have symbol pthread_create
+CMAKE_HAVE_LIBC_CREATE:INTERNAL=
+//Have library pthreads
+CMAKE_HAVE_PTHREADS_CREATE:INTERNAL=
+//Have library pthread
+CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1
+//Have include pthread.h
+CMAKE_HAVE_PTHREAD_H:INTERNAL=1
+//Start directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/mnt/hgfs/vm-exchange/SQLiteCpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
+CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=5
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/usr/share/cmake-2.8
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/bin/uname
+//ADVANCED property for variable: CMAKE_USE_RELATIVE_PATHS
+CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+//Details about finding PythonInterp
+FIND_PACKAGE_MESSAGE_DETAILS_PythonInterp:INTERNAL=[/usr/bin/python][v2.7.6()]
+//Details about finding Threads
+FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()]
+//ADVANCED property for variable: PYTHON_EXECUTABLE
+PYTHON_EXECUTABLE-ADVANCED:INTERNAL=1
+

+ 56 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake

@@ -0,0 +1,56 @@
+set(CMAKE_C_COMPILER "/usr/bin/cc")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "GNU")
+set(CMAKE_C_COMPILER_VERSION "4.8.4")
+set(CMAKE_C_PLATFORM_ID "Linux")
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_LINKER "/usr/bin/ld")
+set(CMAKE_COMPILER_IS_GNUCC 1)
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+endif()
+
+
+
+
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
+
+
+

+ 57 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake

@@ -0,0 +1,57 @@
+set(CMAKE_CXX_COMPILER "/usr/bin/c++")
+set(CMAKE_CXX_COMPILER_ARG1 "")
+set(CMAKE_CXX_COMPILER_ID "GNU")
+set(CMAKE_CXX_COMPILER_VERSION "4.8.4")
+set(CMAKE_CXX_PLATFORM_ID "Linux")
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_LINKER "/usr/bin/ld")
+set(CMAKE_COMPILER_IS_GNUCXX 1)
+set(CMAKE_CXX_COMPILER_LOADED 1)
+set(CMAKE_CXX_COMPILER_WORKS TRUE)
+set(CMAKE_CXX_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_CXX_COMPILER_ID_RUN 1)
+set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP)
+set(CMAKE_CXX_LINKER_PREFERENCE 30)
+set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
+
+# Save compiler ABI information.
+set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
+set(CMAKE_CXX_COMPILER_ABI "ELF")
+set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_CXX_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
+endif()
+
+if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+endif()
+
+
+
+
+set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c")
+set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
+set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
+
+
+

BIN
code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin


BIN
code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_CXX.bin


+ 15 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CMakeSystem.cmake

@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Linux-3.19.0-32-generic")
+set(CMAKE_HOST_SYSTEM_NAME "Linux")
+set(CMAKE_HOST_SYSTEM_VERSION "3.19.0-32-generic")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+
+
+set(CMAKE_SYSTEM "Linux-3.19.0-32-generic")
+set(CMAKE_SYSTEM_NAME "Linux")
+set(CMAKE_SYSTEM_VERSION "3.19.0-32-generic")
+set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_CROSSCOMPILING "FALSE")
+
+set(CMAKE_SYSTEM_LOADED 1)

+ 389 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c

@@ -0,0 +1,389 @@
+#ifdef __cplusplus
+# error "A C++ compiler has been selected for C."
+#endif
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__18CXX)
+# define ID_VOID_MAIN
+#endif
+
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+  /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER    % 10)
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+  /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "Watcom"
+  /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__WATCOMC__ % 100)
+
+#elif defined(__SUNPRO_C)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_C >= 0x5100
+   /* __SUNPRO_C = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)
+# else
+   /* __SUNPRO_C = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)
+# endif
+
+#elif defined(__HP_cc)
+# define COMPILER_ID "HP"
+  /* __HP_cc = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_cc     % 100)
+
+#elif defined(__DECC)
+# define COMPILER_ID "Compaq"
+  /* __DECC_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECC_VER         % 10000)
+
+#elif defined(__IBMC__)
+# if defined(__COMPILER_VER__)
+#  define COMPILER_ID "zOS"
+# else
+#  if __IBMC__ >= 800
+#   define COMPILER_ID "XL"
+#  else
+#   define COMPILER_ID "VisualAge"
+#  endif
+   /* __IBMC__ = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+#  define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+# endif
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__TINYC__)
+# define COMPILER_ID "TinyCC"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+/* Analog VisualDSP++ >= 4.5.6 */
+#elif defined(__VISUALDSPVERSION__)
+# define COMPILER_ID "ADSP"
+  /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8  & 0xFF)
+
+/* Analog VisualDSP++ < 4.5.6 */
+#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+
+/* IAR Systems compiler for embedded systems.
+   http://www.iar.com */
+#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
+# define COMPILER_ID "IAR"
+
+/* sdcc, the small devices C compiler for embedded systems,
+   http://sdcc.sourceforge.net  */
+#elif defined(SDCC)
+# define COMPILER_ID "SDCC"
+  /* SDCC = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(SDCC/100)
+#  define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(SDCC    % 10)
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+  /* _SGI_COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION    % 10)
+# else
+  /* _COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION    % 10)
+# endif
+
+/* This compiler is either not known or is too old to define an
+   identification macro.  Try to identify the platform and guess that
+   it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#else /* unknown platform */
+# define PLATFORM_ID ""
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID ""
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef ID_VOID_MAIN
+void main() {}
+#else
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+  require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+  (void)argv;
+  return require;
+}
+#endif

BIN
code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CompilerIdC/a.out


+ 377 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CompilerIdCXX/CMakeCXXCompilerId.cpp

@@ -0,0 +1,377 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+   recognize the extension without flags.  Borland does not know .cxx for
+   example.  */
+#ifndef __cplusplus
+# error "A C compiler has been selected for C++."
+#endif
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__COMO__)
+# define COMPILER_ID "Comeau"
+  /* __COMO_VERSION__ = VRR */
+# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
+
+#elif defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+  /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER    % 10)
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+  /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "Watcom"
+  /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__WATCOMC__ % 100)
+
+#elif defined(__SUNPRO_CC)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_CC >= 0x5100
+   /* __SUNPRO_CC = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# else
+   /* __SUNPRO_CC = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# endif
+
+#elif defined(__HP_aCC)
+# define COMPILER_ID "HP"
+  /* __HP_aCC = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_aCC     % 100)
+
+#elif defined(__DECCXX)
+# define COMPILER_ID "Compaq"
+  /* __DECCXX_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER         % 10000)
+
+#elif defined(__IBMCPP__)
+# if defined(__COMPILER_VER__)
+#  define COMPILER_ID "zOS"
+# else
+#  if __IBMCPP__ >= 800
+#   define COMPILER_ID "XL"
+#  else
+#   define COMPILER_ID "VisualAge"
+#  endif
+   /* __IBMCPP__ = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+#  define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+# endif
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+/* Analog VisualDSP++ >= 4.5.6 */
+#elif defined(__VISUALDSPVERSION__)
+# define COMPILER_ID "ADSP"
+  /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8  & 0xFF)
+
+/* Analog VisualDSP++ < 4.5.6 */
+#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+
+/* IAR Systems compiler for embedded systems.
+   http://www.iar.com */
+#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
+# define COMPILER_ID "IAR"
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+  /* _SGI_COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION    % 10)
+# else
+  /* _COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION    % 10)
+# endif
+
+/* This compiler is either not known or is too old to define an
+   identification macro.  Try to identify the platform and guess that
+   it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#else /* unknown platform */
+# define PLATFORM_ID ""
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID ""
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+  (void)argv;
+  return require;
+}

BIN
code_boost/src/SQLiteCpp/build/CMakeFiles/2.8.12.2/CompilerIdCXX/a.out


+ 16 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/CMakeDirectoryInformation.cmake

@@ -0,0 +1,16 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# Relative path conversion top directories.
+SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/mnt/hgfs/vm-exchange/SQLiteCpp")
+SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/mnt/hgfs/vm-exchange/SQLiteCpp/build")
+
+# Force unix paths in dependencies.
+SET(CMAKE_FORCE_UNIX_PATHS 1)
+
+
+# The C and CXX include file regular expressions for this directory.
+SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
+SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
+SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
+SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})

+ 57 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/CMakeError.log

@@ -0,0 +1,57 @@
+Determining if the pthread_create exist failed with the following output:
+Change Dir: /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec3067163014/fast"
+make: Warning: File `Makefile' has modification time 73 s in the future
+/usr/bin/make -f CMakeFiles/cmTryCompileExec3067163014.dir/build.make CMakeFiles/cmTryCompileExec3067163014.dir/build
+make[1]: Entering directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: Warning: File `CMakeFiles/cmTryCompileExec3067163014.dir/flags.make' has modification time 73 s in the future
+/usr/bin/cmake -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building C object CMakeFiles/cmTryCompileExec3067163014.dir/CheckSymbolExists.c.o
+/usr/bin/cc    -o CMakeFiles/cmTryCompileExec3067163014.dir/CheckSymbolExists.c.o   -c /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c
+Linking C executable cmTryCompileExec3067163014
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec3067163014.dir/link.txt --verbose=1
+/usr/bin/cc       CMakeFiles/cmTryCompileExec3067163014.dir/CheckSymbolExists.c.o  -o cmTryCompileExec3067163014 -rdynamic 
+CMakeFiles/cmTryCompileExec3067163014.dir/CheckSymbolExists.c.o: In function `main':
+CheckSymbolExists.c:(.text+0x16): undefined reference to `pthread_create'
+collect2: error: ld returned 1 exit status
+make[1]: Leaving directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: *** [cmTryCompileExec3067163014] Error 1
+make: *** [cmTryCompileExec3067163014/fast] Error 2
+
+File /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:
+/* */
+#include <pthread.h>
+
+int main(int argc, char** argv)
+{
+  (void)argv;
+#ifndef pthread_create
+  return ((int*)(&pthread_create))[argc];
+#else
+  (void)argc;
+  return 0;
+#endif
+}
+
+Determining if the function pthread_create exists in the pthreads failed with the following output:
+Change Dir: /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec366352226/fast"
+make: /usr/bin/make -f CMakeFiles/cmTryCompileExec366352226.dir/build.make CMakeFiles/cmTryCompileExec366352226.dir/build
+Warning: File `Makefile' has modification time 73 s in the future
+make[1]: Entering directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: Warning: File `CMakeFiles/cmTryCompileExec366352226.dir/flags.make' has modification time 73 s in the future
+/usr/bin/cmake -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building C object CMakeFiles/cmTryCompileExec366352226.dir/CheckFunctionExists.c.o
+/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTryCompileExec366352226.dir/CheckFunctionExists.c.o   -c /usr/share/cmake-2.8/Modules/CheckFunctionExists.c
+Linking C executable cmTryCompileExec366352226
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec366352226.dir/link.txt --verbose=1
+/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=pthread_create    CMakeFiles/cmTryCompileExec366352226.dir/CheckFunctionExists.c.o  -o cmTryCompileExec366352226 -rdynamic -lpthreads 
+/usr/bin/ld: cannot find -lpthreads
+collect2: error: ld returned 1 exit status
+make[1]: *** [cmTryCompileExec366352226] Error 1
+make[1]: Leaving directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make: *** [cmTryCompileExec366352226/fast] Error 2
+
+

+ 321 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/CMakeOutput.log

@@ -0,0 +1,321 @@
+The system is: Linux - 3.19.0-32-generic - x86_64
+Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
+Compiler: /usr/bin/cc 
+Build flags: 
+Id flags: 
+
+The output was:
+0
+
+
+Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out"
+
+The C compiler identification is GNU, found in "/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/2.8.12.2/CompilerIdC/a.out"
+
+Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
+Compiler: /usr/bin/c++ 
+Build flags: 
+Id flags: 
+
+The output was:
+0
+
+
+Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
+
+The CXX compiler identification is GNU, found in "/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/2.8.12.2/CompilerIdCXX/a.out"
+
+Determining if the C compiler works passed with the following output:
+Change Dir: /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec1723771239/fast"
+make: Warning: File `Makefile' has modification time 73 s in the future
+/usr/bin/make -f CMakeFiles/cmTryCompileExec1723771239.dir/build.make CMakeFiles/cmTryCompileExec1723771239.dir/build
+make[1]: Entering directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: Warning: File `CMakeFiles/cmTryCompileExec1723771239.dir/flags.make' has modification time 73 s in the future
+/usr/bin/cmake -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building C object CMakeFiles/cmTryCompileExec1723771239.dir/testCCompiler.c.o
+/usr/bin/cc    -o CMakeFiles/cmTryCompileExec1723771239.dir/testCCompiler.c.o   -c /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/testCCompiler.c
+Linking C executable cmTryCompileExec1723771239
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1723771239.dir/link.txt --verbose=1
+/usr/bin/cc       CMakeFiles/cmTryCompileExec1723771239.dir/testCCompiler.c.o  -o cmTryCompileExec1723771239 -rdynamic 
+make[1]: Leaving directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: warning:  Clock skew detected.  Your build may be incomplete.
+make: warning:  Clock skew detected.  Your build may be incomplete.
+
+
+Detecting C compiler ABI info compiled with the following output:
+Change Dir: /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec1220870104/fast"
+make: Warning: File `Makefile' has modification time 73 s in the future
+/usr/bin/make -f CMakeFiles/cmTryCompileExec1220870104.dir/build.make CMakeFiles/cmTryCompileExec1220870104.dir/build
+make[1]: Entering directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: Warning: File `CMakeFiles/cmTryCompileExec1220870104.dir/flags.make' has modification time 73 s in the future
+/usr/bin/cmake -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building C object CMakeFiles/cmTryCompileExec1220870104.dir/CMakeCCompilerABI.c.o
+/usr/bin/cc    -o CMakeFiles/cmTryCompileExec1220870104.dir/CMakeCCompilerABI.c.o   -c /usr/share/cmake-2.8/Modules/CMakeCCompilerABI.c
+Linking C executable cmTryCompileExec1220870104
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1220870104.dir/link.txt --verbose=1
+/usr/bin/cc     -v CMakeFiles/cmTryCompileExec1220870104.dir/CMakeCCompilerABI.c.o  -o cmTryCompileExec1220870104 -rdynamic  
+Using built-in specs.
+COLLECT_GCC=/usr/bin/cc
+COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
+Target: x86_64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
+Thread model: posix
+gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 
+COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/
+LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/
+COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec1220870104' '-rdynamic' '-mtune=generic' '-march=x86-64'
+ /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec1220870104 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. CMakeFiles/cmTryCompileExec1220870104.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o
+make[1]: Leaving directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: warning:  Clock skew detected.  Your build may be incomplete.
+make: warning:  Clock skew detected.  Your build may be incomplete.
+
+
+Parsed C implicit link information from above output:
+  link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)]
+  ignore line: [Change Dir: /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp]
+  ignore line: []
+  ignore line: [Run Build Command:/usr/bin/make "cmTryCompileExec1220870104/fast"]
+  ignore line: [make: Warning: File `Makefile' has modification time 73 s in the future]
+  ignore line: [/usr/bin/make -f CMakeFiles/cmTryCompileExec1220870104.dir/build.make CMakeFiles/cmTryCompileExec1220870104.dir/build]
+  ignore line: [make[1]: Entering directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp']
+  ignore line: [make[1]: Warning: File `CMakeFiles/cmTryCompileExec1220870104.dir/flags.make' has modification time 73 s in the future]
+  ignore line: [/usr/bin/cmake -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CMakeFiles 1]
+  ignore line: [Building C object CMakeFiles/cmTryCompileExec1220870104.dir/CMakeCCompilerABI.c.o]
+  ignore line: [/usr/bin/cc    -o CMakeFiles/cmTryCompileExec1220870104.dir/CMakeCCompilerABI.c.o   -c /usr/share/cmake-2.8/Modules/CMakeCCompilerABI.c]
+  ignore line: [Linking C executable cmTryCompileExec1220870104]
+  ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1220870104.dir/link.txt --verbose=1]
+  ignore line: [/usr/bin/cc     -v CMakeFiles/cmTryCompileExec1220870104.dir/CMakeCCompilerABI.c.o  -o cmTryCompileExec1220870104 -rdynamic  ]
+  ignore line: [Using built-in specs.]
+  ignore line: [COLLECT_GCC=/usr/bin/cc]
+  ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper]
+  ignore line: [Target: x86_64-linux-gnu]
+  ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
+  ignore line: [Thread model: posix]
+  ignore line: [gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ]
+  ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/]
+  ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/]
+  ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec1220870104' '-rdynamic' '-mtune=generic' '-march=x86-64']
+  link line: [ /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec1220870104 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. CMakeFiles/cmTryCompileExec1220870104.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o]
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/collect2] ==> ignore
+    arg [--sysroot=/] ==> ignore
+    arg [--build-id] ==> ignore
+    arg [--eh-frame-hdr] ==> ignore
+    arg [-m] ==> ignore
+    arg [elf_x86_64] ==> ignore
+    arg [--hash-style=gnu] ==> ignore
+    arg [--as-needed] ==> ignore
+    arg [-export-dynamic] ==> ignore
+    arg [-dynamic-linker] ==> ignore
+    arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
+    arg [-zrelro] ==> ignore
+    arg [-o] ==> ignore
+    arg [cmTryCompileExec1220870104] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o] ==> ignore
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib]
+    arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
+    arg [-L/lib/../lib] ==> dir [/lib/../lib]
+    arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
+    arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..]
+    arg [CMakeFiles/cmTryCompileExec1220870104.dir/CMakeCCompilerABI.c.o] ==> ignore
+    arg [-lgcc] ==> lib [gcc]
+    arg [--as-needed] ==> ignore
+    arg [-lgcc_s] ==> lib [gcc_s]
+    arg [--no-as-needed] ==> ignore
+    arg [-lc] ==> lib [c]
+    arg [-lgcc] ==> lib [gcc]
+    arg [--as-needed] ==> ignore
+    arg [-lgcc_s] ==> lib [gcc_s]
+    arg [--no-as-needed] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o] ==> ignore
+  remove lib [gcc]
+  remove lib [gcc_s]
+  remove lib [gcc]
+  remove lib [gcc_s]
+  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.8]
+  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] ==> [/usr/lib]
+  collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
+  collapse library dir [/lib/../lib] ==> [/lib]
+  collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+  collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
+  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] ==> [/usr/lib]
+  implicit libs: [c]
+  implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
+  implicit fwks: []
+
+
+Determining if the CXX compiler works passed with the following output:
+Change Dir: /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec3594789640/fast"
+make: Warning: File `Makefile' has modification time 73 s in the future
+/usr/bin/make -f CMakeFiles/cmTryCompileExec3594789640.dir/build.make CMakeFiles/cmTryCompileExec3594789640.dir/build
+make[1]: Entering directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: Warning: File `CMakeFiles/cmTryCompileExec3594789640.dir/flags.make' has modification time 73 s in the future
+/usr/bin/cmake -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building CXX object CMakeFiles/cmTryCompileExec3594789640.dir/testCXXCompiler.cxx.o
+/usr/bin/c++     -o CMakeFiles/cmTryCompileExec3594789640.dir/testCXXCompiler.cxx.o -c /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
+Linking CXX executable cmTryCompileExec3594789640
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec3594789640.dir/link.txt --verbose=1
+/usr/bin/c++        CMakeFiles/cmTryCompileExec3594789640.dir/testCXXCompiler.cxx.o  -o cmTryCompileExec3594789640 -rdynamic 
+make[1]: Leaving directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: warning:  Clock skew detected.  Your build may be incomplete.
+make: warning:  Clock skew detected.  Your build may be incomplete.
+
+
+Detecting CXX compiler ABI info compiled with the following output:
+Change Dir: /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec1293492777/fast"
+make: Warning: File `Makefile' has modification time 73 s in the future
+/usr/bin/make -f CMakeFiles/cmTryCompileExec1293492777.dir/build.make CMakeFiles/cmTryCompileExec1293492777.dir/build
+make[1]: Entering directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: Warning: File `CMakeFiles/cmTryCompileExec1293492777.dir/flags.make' has modification time 73 s in the future
+/usr/bin/cmake -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building CXX object CMakeFiles/cmTryCompileExec1293492777.dir/CMakeCXXCompilerABI.cpp.o
+/usr/bin/c++     -o CMakeFiles/cmTryCompileExec1293492777.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-2.8/Modules/CMakeCXXCompilerABI.cpp
+Linking CXX executable cmTryCompileExec1293492777
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1293492777.dir/link.txt --verbose=1
+/usr/bin/c++      -v CMakeFiles/cmTryCompileExec1293492777.dir/CMakeCXXCompilerABI.cpp.o  -o cmTryCompileExec1293492777 -rdynamic  
+Using built-in specs.
+COLLECT_GCC=/usr/bin/c++
+COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
+Target: x86_64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
+Thread model: posix
+gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 
+COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/
+LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/
+COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec1293492777' '-rdynamic' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
+ /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec1293492777 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. CMakeFiles/cmTryCompileExec1293492777.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o
+make[1]: Leaving directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: warning:  Clock skew detected.  Your build may be incomplete.
+make: warning:  Clock skew detected.  Your build may be incomplete.
+
+
+Parsed CXX implicit link information from above output:
+  link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)]
+  ignore line: [Change Dir: /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp]
+  ignore line: []
+  ignore line: [Run Build Command:/usr/bin/make "cmTryCompileExec1293492777/fast"]
+  ignore line: [make: Warning: File `Makefile' has modification time 73 s in the future]
+  ignore line: [/usr/bin/make -f CMakeFiles/cmTryCompileExec1293492777.dir/build.make CMakeFiles/cmTryCompileExec1293492777.dir/build]
+  ignore line: [make[1]: Entering directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp']
+  ignore line: [make[1]: Warning: File `CMakeFiles/cmTryCompileExec1293492777.dir/flags.make' has modification time 73 s in the future]
+  ignore line: [/usr/bin/cmake -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CMakeFiles 1]
+  ignore line: [Building CXX object CMakeFiles/cmTryCompileExec1293492777.dir/CMakeCXXCompilerABI.cpp.o]
+  ignore line: [/usr/bin/c++     -o CMakeFiles/cmTryCompileExec1293492777.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-2.8/Modules/CMakeCXXCompilerABI.cpp]
+  ignore line: [Linking CXX executable cmTryCompileExec1293492777]
+  ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1293492777.dir/link.txt --verbose=1]
+  ignore line: [/usr/bin/c++      -v CMakeFiles/cmTryCompileExec1293492777.dir/CMakeCXXCompilerABI.cpp.o  -o cmTryCompileExec1293492777 -rdynamic  ]
+  ignore line: [Using built-in specs.]
+  ignore line: [COLLECT_GCC=/usr/bin/c++]
+  ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper]
+  ignore line: [Target: x86_64-linux-gnu]
+  ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
+  ignore line: [Thread model: posix]
+  ignore line: [gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ]
+  ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/]
+  ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/]
+  ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec1293492777' '-rdynamic' '-shared-libgcc' '-mtune=generic' '-march=x86-64']
+  link line: [ /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec1293492777 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. CMakeFiles/cmTryCompileExec1293492777.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o]
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/collect2] ==> ignore
+    arg [--sysroot=/] ==> ignore
+    arg [--build-id] ==> ignore
+    arg [--eh-frame-hdr] ==> ignore
+    arg [-m] ==> ignore
+    arg [elf_x86_64] ==> ignore
+    arg [--hash-style=gnu] ==> ignore
+    arg [--as-needed] ==> ignore
+    arg [-export-dynamic] ==> ignore
+    arg [-dynamic-linker] ==> ignore
+    arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
+    arg [-zrelro] ==> ignore
+    arg [-o] ==> ignore
+    arg [cmTryCompileExec1293492777] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o] ==> ignore
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib]
+    arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
+    arg [-L/lib/../lib] ==> dir [/lib/../lib]
+    arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
+    arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
+    arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..]
+    arg [CMakeFiles/cmTryCompileExec1293492777.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
+    arg [-lstdc++] ==> lib [stdc++]
+    arg [-lm] ==> lib [m]
+    arg [-lgcc_s] ==> lib [gcc_s]
+    arg [-lgcc] ==> lib [gcc]
+    arg [-lc] ==> lib [c]
+    arg [-lgcc_s] ==> lib [gcc_s]
+    arg [-lgcc] ==> lib [gcc]
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o] ==> ignore
+    arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o] ==> ignore
+  remove lib [gcc_s]
+  remove lib [gcc]
+  remove lib [gcc_s]
+  remove lib [gcc]
+  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.8]
+  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] ==> [/usr/lib]
+  collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
+  collapse library dir [/lib/../lib] ==> [/lib]
+  collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+  collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
+  collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] ==> [/usr/lib]
+  implicit libs: [stdc++;m;c]
+  implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
+  implicit fwks: []
+
+
+Determining if files pthread.h exist passed with the following output:
+Change Dir: /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec1167686631/fast"
+make: Warning: File `Makefile' has modification time 73 s in the future
+/usr/bin/make -f CMakeFiles/cmTryCompileExec1167686631.dir/build.make CMakeFiles/cmTryCompileExec1167686631.dir/build
+make[1]: Entering directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: Warning: File `CMakeFiles/cmTryCompileExec1167686631.dir/flags.make' has modification time 73 s in the future
+/usr/bin/cmake -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building C object CMakeFiles/cmTryCompileExec1167686631.dir/CheckIncludeFiles.c.o
+/usr/bin/cc    -o CMakeFiles/cmTryCompileExec1167686631.dir/CheckIncludeFiles.c.o   -c /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CheckIncludeFiles.c
+Linking C executable cmTryCompileExec1167686631
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1167686631.dir/link.txt --verbose=1
+/usr/bin/cc       CMakeFiles/cmTryCompileExec1167686631.dir/CheckIncludeFiles.c.o  -o cmTryCompileExec1167686631 -rdynamic 
+make[1]: Leaving directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: warning:  Clock skew detected.  Your build may be incomplete.
+make: warning:  Clock skew detected.  Your build may be incomplete.
+
+
+Determining if the function pthread_create exists in the pthread passed with the following output:
+Change Dir: /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp
+
+Run Build Command:/usr/bin/make "cmTryCompileExec3699612806/fast"
+make: Warning: File `Makefile' has modification time 73 s in the future
+/usr/bin/make -f CMakeFiles/cmTryCompileExec3699612806.dir/build.make CMakeFiles/cmTryCompileExec3699612806.dir/build
+make[1]: Entering directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: Warning: File `CMakeFiles/cmTryCompileExec3699612806.dir/flags.make' has modification time 73 s in the future
+/usr/bin/cmake -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp/CMakeFiles 1
+Building C object CMakeFiles/cmTryCompileExec3699612806.dir/CheckFunctionExists.c.o
+/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTryCompileExec3699612806.dir/CheckFunctionExists.c.o   -c /usr/share/cmake-2.8/Modules/CheckFunctionExists.c
+Linking C executable cmTryCompileExec3699612806
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec3699612806.dir/link.txt --verbose=1
+/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=pthread_create    CMakeFiles/cmTryCompileExec3699612806.dir/CheckFunctionExists.c.o  -o cmTryCompileExec3699612806 -rdynamic -lpthread 
+make[1]: Leaving directory `/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/CMakeTmp'
+make[1]: warning:  Clock skew detected.  Your build may be incomplete.
+make: warning:  Clock skew detected.  Your build may be incomplete.
+
+

+ 2 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/CMakeRuleHashes.txt

@@ -0,0 +1,2 @@
+# Hashes of file build rules.
+8c8298477051981397dcb8bf7defa220 CMakeFiles/SQLiteCpp_cpplint

+ 68 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/Makefile.cmake

@@ -0,0 +1,68 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# The generator used is:
+SET(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
+
+# The top level Makefile was generated from the following files:
+SET(CMAKE_MAKEFILE_DEPENDS
+  "CMakeCache.txt"
+  "../CMakeLists.txt"
+  "CMakeFiles/2.8.12.2/CMakeCCompiler.cmake"
+  "CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake"
+  "CMakeFiles/2.8.12.2/CMakeSystem.cmake"
+  "../googletest/CMakeLists.txt"
+  "../googletest/googlemock/CMakeLists.txt"
+  "../googletest/googletest/CMakeLists.txt"
+  "../googletest/googletest/cmake/internal_utils.cmake"
+  "../sqlite3/CMakeLists.txt"
+  "/usr/share/cmake-2.8/Modules/CMakeCInformation.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeCXXInformation.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeCommonLanguageInclude.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeGenericSystem.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeParseArguments.cmake"
+  "/usr/share/cmake-2.8/Modules/CMakeSystemSpecificInformation.cmake"
+  "/usr/share/cmake-2.8/Modules/CheckIncludeFiles.cmake"
+  "/usr/share/cmake-2.8/Modules/CheckLibraryExists.cmake"
+  "/usr/share/cmake-2.8/Modules/CheckSymbolExists.cmake"
+  "/usr/share/cmake-2.8/Modules/Compiler/GNU-C.cmake"
+  "/usr/share/cmake-2.8/Modules/Compiler/GNU-CXX.cmake"
+  "/usr/share/cmake-2.8/Modules/Compiler/GNU.cmake"
+  "/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake"
+  "/usr/share/cmake-2.8/Modules/FindPackageMessage.cmake"
+  "/usr/share/cmake-2.8/Modules/FindPythonInterp.cmake"
+  "/usr/share/cmake-2.8/Modules/FindThreads.cmake"
+  "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU-C.cmake"
+  "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU-CXX.cmake"
+  "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU.cmake"
+  "/usr/share/cmake-2.8/Modules/Platform/Linux.cmake"
+  "/usr/share/cmake-2.8/Modules/Platform/UnixPaths.cmake"
+  )
+
+# The corresponding makefile is:
+SET(CMAKE_MAKEFILE_OUTPUTS
+  "Makefile"
+  "CMakeFiles/cmake.check_cache"
+  )
+
+# Byproducts of CMake generate step:
+SET(CMAKE_MAKEFILE_PRODUCTS
+  "CMakeFiles/CMakeDirectoryInformation.cmake"
+  "sqlite3/CMakeFiles/CMakeDirectoryInformation.cmake"
+  "googletest/CMakeFiles/CMakeDirectoryInformation.cmake"
+  "googletest/googlemock/CMakeFiles/CMakeDirectoryInformation.cmake"
+  "googletest/googlemock/gtest/CMakeFiles/CMakeDirectoryInformation.cmake"
+  )
+
+# Dependency information for all targets:
+SET(CMAKE_DEPEND_INFO_FILES
+  "CMakeFiles/SQLiteCpp.dir/DependInfo.cmake"
+  "CMakeFiles/SQLiteCpp_cpplint.dir/DependInfo.cmake"
+  "CMakeFiles/SQLiteCpp_example1.dir/DependInfo.cmake"
+  "CMakeFiles/SQLiteCpp_tests.dir/DependInfo.cmake"
+  "sqlite3/CMakeFiles/sqlite3.dir/DependInfo.cmake"
+  "googletest/googlemock/CMakeFiles/gmock.dir/DependInfo.cmake"
+  "googletest/googlemock/CMakeFiles/gmock_main.dir/DependInfo.cmake"
+  "googletest/googlemock/gtest/CMakeFiles/gtest.dir/DependInfo.cmake"
+  "googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/DependInfo.cmake"
+  )

+ 449 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/Makefile2

@@ -0,0 +1,449 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+# The main recursive all target
+all:
+.PHONY : all
+
+# The main recursive preinstall target
+preinstall:
+.PHONY : preinstall
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /mnt/hgfs/vm-exchange/SQLiteCpp
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /mnt/hgfs/vm-exchange/SQLiteCpp/build
+
+#=============================================================================
+# Target rules for target CMakeFiles/SQLiteCpp.dir
+
+# All Build rule for target.
+CMakeFiles/SQLiteCpp.dir/all:
+	$(MAKE) -f CMakeFiles/SQLiteCpp.dir/build.make CMakeFiles/SQLiteCpp.dir/depend
+	$(MAKE) -f CMakeFiles/SQLiteCpp.dir/build.make CMakeFiles/SQLiteCpp.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles  1 2 3 4 5 6
+	@echo "Built target SQLiteCpp"
+.PHONY : CMakeFiles/SQLiteCpp.dir/all
+
+# Include target in all.
+all: CMakeFiles/SQLiteCpp.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/SQLiteCpp.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 6
+	$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/SQLiteCpp.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 0
+.PHONY : CMakeFiles/SQLiteCpp.dir/rule
+
+# Convenience name for target.
+SQLiteCpp: CMakeFiles/SQLiteCpp.dir/rule
+.PHONY : SQLiteCpp
+
+# clean rule for target.
+CMakeFiles/SQLiteCpp.dir/clean:
+	$(MAKE) -f CMakeFiles/SQLiteCpp.dir/build.make CMakeFiles/SQLiteCpp.dir/clean
+.PHONY : CMakeFiles/SQLiteCpp.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/SQLiteCpp.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Target rules for target CMakeFiles/SQLiteCpp_cpplint.dir
+
+# All Build rule for target.
+CMakeFiles/SQLiteCpp_cpplint.dir/all:
+	$(MAKE) -f CMakeFiles/SQLiteCpp_cpplint.dir/build.make CMakeFiles/SQLiteCpp_cpplint.dir/depend
+	$(MAKE) -f CMakeFiles/SQLiteCpp_cpplint.dir/build.make CMakeFiles/SQLiteCpp_cpplint.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 
+	@echo "Built target SQLiteCpp_cpplint"
+.PHONY : CMakeFiles/SQLiteCpp_cpplint.dir/all
+
+# Include target in all.
+all: CMakeFiles/SQLiteCpp_cpplint.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/SQLiteCpp_cpplint.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 0
+	$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/SQLiteCpp_cpplint.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 0
+.PHONY : CMakeFiles/SQLiteCpp_cpplint.dir/rule
+
+# Convenience name for target.
+SQLiteCpp_cpplint: CMakeFiles/SQLiteCpp_cpplint.dir/rule
+.PHONY : SQLiteCpp_cpplint
+
+# clean rule for target.
+CMakeFiles/SQLiteCpp_cpplint.dir/clean:
+	$(MAKE) -f CMakeFiles/SQLiteCpp_cpplint.dir/build.make CMakeFiles/SQLiteCpp_cpplint.dir/clean
+.PHONY : CMakeFiles/SQLiteCpp_cpplint.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/SQLiteCpp_cpplint.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Target rules for target CMakeFiles/SQLiteCpp_example1.dir
+
+# All Build rule for target.
+CMakeFiles/SQLiteCpp_example1.dir/all: sqlite3/CMakeFiles/sqlite3.dir/all
+CMakeFiles/SQLiteCpp_example1.dir/all: CMakeFiles/SQLiteCpp.dir/all
+	$(MAKE) -f CMakeFiles/SQLiteCpp_example1.dir/build.make CMakeFiles/SQLiteCpp_example1.dir/depend
+	$(MAKE) -f CMakeFiles/SQLiteCpp_example1.dir/build.make CMakeFiles/SQLiteCpp_example1.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles  7
+	@echo "Built target SQLiteCpp_example1"
+.PHONY : CMakeFiles/SQLiteCpp_example1.dir/all
+
+# Include target in all.
+all: CMakeFiles/SQLiteCpp_example1.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/SQLiteCpp_example1.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 8
+	$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/SQLiteCpp_example1.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 0
+.PHONY : CMakeFiles/SQLiteCpp_example1.dir/rule
+
+# Convenience name for target.
+SQLiteCpp_example1: CMakeFiles/SQLiteCpp_example1.dir/rule
+.PHONY : SQLiteCpp_example1
+
+# clean rule for target.
+CMakeFiles/SQLiteCpp_example1.dir/clean:
+	$(MAKE) -f CMakeFiles/SQLiteCpp_example1.dir/build.make CMakeFiles/SQLiteCpp_example1.dir/clean
+.PHONY : CMakeFiles/SQLiteCpp_example1.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/SQLiteCpp_example1.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Target rules for target CMakeFiles/SQLiteCpp_tests.dir
+
+# All Build rule for target.
+CMakeFiles/SQLiteCpp_tests.dir/all: googletest/googlemock/gtest/CMakeFiles/gtest.dir/all
+CMakeFiles/SQLiteCpp_tests.dir/all: googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/all
+CMakeFiles/SQLiteCpp_tests.dir/all: sqlite3/CMakeFiles/sqlite3.dir/all
+CMakeFiles/SQLiteCpp_tests.dir/all: CMakeFiles/SQLiteCpp.dir/all
+	$(MAKE) -f CMakeFiles/SQLiteCpp_tests.dir/build.make CMakeFiles/SQLiteCpp_tests.dir/depend
+	$(MAKE) -f CMakeFiles/SQLiteCpp_tests.dir/build.make CMakeFiles/SQLiteCpp_tests.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles  8 9 10 11 12 13
+	@echo "Built target SQLiteCpp_tests"
+.PHONY : CMakeFiles/SQLiteCpp_tests.dir/all
+
+# Include target in all.
+all: CMakeFiles/SQLiteCpp_tests.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/SQLiteCpp_tests.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 15
+	$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/SQLiteCpp_tests.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 0
+.PHONY : CMakeFiles/SQLiteCpp_tests.dir/rule
+
+# Convenience name for target.
+SQLiteCpp_tests: CMakeFiles/SQLiteCpp_tests.dir/rule
+.PHONY : SQLiteCpp_tests
+
+# clean rule for target.
+CMakeFiles/SQLiteCpp_tests.dir/clean:
+	$(MAKE) -f CMakeFiles/SQLiteCpp_tests.dir/build.make CMakeFiles/SQLiteCpp_tests.dir/clean
+.PHONY : CMakeFiles/SQLiteCpp_tests.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/SQLiteCpp_tests.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Directory level rules for directory sqlite3
+
+# Convenience name for "all" pass in the directory.
+sqlite3/all: sqlite3/CMakeFiles/sqlite3.dir/all
+.PHONY : sqlite3/all
+
+# Convenience name for "clean" pass in the directory.
+sqlite3/clean: sqlite3/CMakeFiles/sqlite3.dir/clean
+.PHONY : sqlite3/clean
+
+# Convenience name for "preinstall" pass in the directory.
+sqlite3/preinstall:
+.PHONY : sqlite3/preinstall
+
+#=============================================================================
+# Target rules for target sqlite3/CMakeFiles/sqlite3.dir
+
+# All Build rule for target.
+sqlite3/CMakeFiles/sqlite3.dir/all:
+	$(MAKE) -f sqlite3/CMakeFiles/sqlite3.dir/build.make sqlite3/CMakeFiles/sqlite3.dir/depend
+	$(MAKE) -f sqlite3/CMakeFiles/sqlite3.dir/build.make sqlite3/CMakeFiles/sqlite3.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles  21
+	@echo "Built target sqlite3"
+.PHONY : sqlite3/CMakeFiles/sqlite3.dir/all
+
+# Include target in all.
+all: sqlite3/CMakeFiles/sqlite3.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+sqlite3/CMakeFiles/sqlite3.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 1
+	$(MAKE) -f CMakeFiles/Makefile2 sqlite3/CMakeFiles/sqlite3.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 0
+.PHONY : sqlite3/CMakeFiles/sqlite3.dir/rule
+
+# Convenience name for target.
+sqlite3: sqlite3/CMakeFiles/sqlite3.dir/rule
+.PHONY : sqlite3
+
+# clean rule for target.
+sqlite3/CMakeFiles/sqlite3.dir/clean:
+	$(MAKE) -f sqlite3/CMakeFiles/sqlite3.dir/build.make sqlite3/CMakeFiles/sqlite3.dir/clean
+.PHONY : sqlite3/CMakeFiles/sqlite3.dir/clean
+
+# clean rule for target.
+clean: sqlite3/CMakeFiles/sqlite3.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Directory level rules for directory googletest
+
+# Convenience name for "all" pass in the directory.
+googletest/all: googletest/googlemock/all
+.PHONY : googletest/all
+
+# Convenience name for "clean" pass in the directory.
+googletest/clean: googletest/googlemock/clean
+.PHONY : googletest/clean
+
+# Convenience name for "preinstall" pass in the directory.
+googletest/preinstall: googletest/googlemock/preinstall
+.PHONY : googletest/preinstall
+
+#=============================================================================
+# Directory level rules for directory googletest/googlemock
+
+# Convenience name for "all" pass in the directory.
+googletest/googlemock/all: googletest/googlemock/CMakeFiles/gmock.dir/all
+googletest/googlemock/all: googletest/googlemock/CMakeFiles/gmock_main.dir/all
+googletest/googlemock/all: googletest/googlemock/gtest/all
+.PHONY : googletest/googlemock/all
+
+# Convenience name for "clean" pass in the directory.
+googletest/googlemock/clean: googletest/googlemock/CMakeFiles/gmock.dir/clean
+googletest/googlemock/clean: googletest/googlemock/CMakeFiles/gmock_main.dir/clean
+googletest/googlemock/clean: googletest/googlemock/gtest/clean
+.PHONY : googletest/googlemock/clean
+
+# Convenience name for "preinstall" pass in the directory.
+googletest/googlemock/preinstall: googletest/googlemock/gtest/preinstall
+.PHONY : googletest/googlemock/preinstall
+
+#=============================================================================
+# Target rules for target googletest/googlemock/CMakeFiles/gmock.dir
+
+# All Build rule for target.
+googletest/googlemock/CMakeFiles/gmock.dir/all:
+	$(MAKE) -f googletest/googlemock/CMakeFiles/gmock.dir/build.make googletest/googlemock/CMakeFiles/gmock.dir/depend
+	$(MAKE) -f googletest/googlemock/CMakeFiles/gmock.dir/build.make googletest/googlemock/CMakeFiles/gmock.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles  14 15
+	@echo "Built target gmock"
+.PHONY : googletest/googlemock/CMakeFiles/gmock.dir/all
+
+# Include target in all.
+all: googletest/googlemock/CMakeFiles/gmock.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+googletest/googlemock/CMakeFiles/gmock.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 2
+	$(MAKE) -f CMakeFiles/Makefile2 googletest/googlemock/CMakeFiles/gmock.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 0
+.PHONY : googletest/googlemock/CMakeFiles/gmock.dir/rule
+
+# Convenience name for target.
+gmock: googletest/googlemock/CMakeFiles/gmock.dir/rule
+.PHONY : gmock
+
+# clean rule for target.
+googletest/googlemock/CMakeFiles/gmock.dir/clean:
+	$(MAKE) -f googletest/googlemock/CMakeFiles/gmock.dir/build.make googletest/googlemock/CMakeFiles/gmock.dir/clean
+.PHONY : googletest/googlemock/CMakeFiles/gmock.dir/clean
+
+# clean rule for target.
+clean: googletest/googlemock/CMakeFiles/gmock.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Target rules for target googletest/googlemock/CMakeFiles/gmock_main.dir
+
+# All Build rule for target.
+googletest/googlemock/CMakeFiles/gmock_main.dir/all:
+	$(MAKE) -f googletest/googlemock/CMakeFiles/gmock_main.dir/build.make googletest/googlemock/CMakeFiles/gmock_main.dir/depend
+	$(MAKE) -f googletest/googlemock/CMakeFiles/gmock_main.dir/build.make googletest/googlemock/CMakeFiles/gmock_main.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles  16 17 18
+	@echo "Built target gmock_main"
+.PHONY : googletest/googlemock/CMakeFiles/gmock_main.dir/all
+
+# Include target in all.
+all: googletest/googlemock/CMakeFiles/gmock_main.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+googletest/googlemock/CMakeFiles/gmock_main.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 3
+	$(MAKE) -f CMakeFiles/Makefile2 googletest/googlemock/CMakeFiles/gmock_main.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 0
+.PHONY : googletest/googlemock/CMakeFiles/gmock_main.dir/rule
+
+# Convenience name for target.
+gmock_main: googletest/googlemock/CMakeFiles/gmock_main.dir/rule
+.PHONY : gmock_main
+
+# clean rule for target.
+googletest/googlemock/CMakeFiles/gmock_main.dir/clean:
+	$(MAKE) -f googletest/googlemock/CMakeFiles/gmock_main.dir/build.make googletest/googlemock/CMakeFiles/gmock_main.dir/clean
+.PHONY : googletest/googlemock/CMakeFiles/gmock_main.dir/clean
+
+# clean rule for target.
+clean: googletest/googlemock/CMakeFiles/gmock_main.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Directory level rules for directory googletest/googlemock/gtest
+
+# Convenience name for "all" pass in the directory.
+googletest/googlemock/gtest/all: googletest/googlemock/gtest/CMakeFiles/gtest.dir/all
+googletest/googlemock/gtest/all: googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/all
+.PHONY : googletest/googlemock/gtest/all
+
+# Convenience name for "clean" pass in the directory.
+googletest/googlemock/gtest/clean: googletest/googlemock/gtest/CMakeFiles/gtest.dir/clean
+googletest/googlemock/gtest/clean: googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/clean
+.PHONY : googletest/googlemock/gtest/clean
+
+# Convenience name for "preinstall" pass in the directory.
+googletest/googlemock/gtest/preinstall:
+.PHONY : googletest/googlemock/gtest/preinstall
+
+#=============================================================================
+# Target rules for target googletest/googlemock/gtest/CMakeFiles/gtest.dir
+
+# All Build rule for target.
+googletest/googlemock/gtest/CMakeFiles/gtest.dir/all:
+	$(MAKE) -f googletest/googlemock/gtest/CMakeFiles/gtest.dir/build.make googletest/googlemock/gtest/CMakeFiles/gtest.dir/depend
+	$(MAKE) -f googletest/googlemock/gtest/CMakeFiles/gtest.dir/build.make googletest/googlemock/gtest/CMakeFiles/gtest.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles  19
+	@echo "Built target gtest"
+.PHONY : googletest/googlemock/gtest/CMakeFiles/gtest.dir/all
+
+# Include target in all.
+all: googletest/googlemock/gtest/CMakeFiles/gtest.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+googletest/googlemock/gtest/CMakeFiles/gtest.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 1
+	$(MAKE) -f CMakeFiles/Makefile2 googletest/googlemock/gtest/CMakeFiles/gtest.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 0
+.PHONY : googletest/googlemock/gtest/CMakeFiles/gtest.dir/rule
+
+# Convenience name for target.
+gtest: googletest/googlemock/gtest/CMakeFiles/gtest.dir/rule
+.PHONY : gtest
+
+# clean rule for target.
+googletest/googlemock/gtest/CMakeFiles/gtest.dir/clean:
+	$(MAKE) -f googletest/googlemock/gtest/CMakeFiles/gtest.dir/build.make googletest/googlemock/gtest/CMakeFiles/gtest.dir/clean
+.PHONY : googletest/googlemock/gtest/CMakeFiles/gtest.dir/clean
+
+# clean rule for target.
+clean: googletest/googlemock/gtest/CMakeFiles/gtest.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Target rules for target googletest/googlemock/gtest/CMakeFiles/gtest_main.dir
+
+# All Build rule for target.
+googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/all: googletest/googlemock/gtest/CMakeFiles/gtest.dir/all
+	$(MAKE) -f googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/build.make googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/depend
+	$(MAKE) -f googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/build.make googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles  20
+	@echo "Built target gtest_main"
+.PHONY : googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/all
+
+# Include target in all.
+all: googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 2
+	$(MAKE) -f CMakeFiles/Makefile2 googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles 0
+.PHONY : googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/rule
+
+# Convenience name for target.
+gtest_main: googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/rule
+.PHONY : gtest_main
+
+# clean rule for target.
+googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/clean:
+	$(MAKE) -f googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/build.make googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/clean
+.PHONY : googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/clean
+
+# clean rule for target.
+clean: googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+

+ 112 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/CXX.includecache

@@ -0,0 +1,112 @@
+#IncludeRegexLine: ^[ 	]*#[ 	]*(include|import)[ 	]*[<"]([^">]+)([">])
+
+#IncludeRegexScan: ^.*$
+
+#IncludeRegexComplain: ^$
+
+#IncludeRegexTransform: 
+
+../include/SQLiteCpp/Assertion.h
+cassert
+-
+
+../include/SQLiteCpp/Backup.h
+SQLiteCpp/Database.h
+-
+string
+-
+
+../include/SQLiteCpp/Column.h
+SQLiteCpp/Statement.h
+-
+SQLiteCpp/Exception.h
+-
+string
+-
+limits.h
+-
+
+../include/SQLiteCpp/Database.h
+SQLiteCpp/Column.h
+-
+string
+-
+
+../include/SQLiteCpp/Exception.h
+stdexcept
+-
+string
+-
+
+../include/SQLiteCpp/Statement.h
+SQLiteCpp/Exception.h
+-
+string
+-
+map
+-
+
+../include/SQLiteCpp/Transaction.h
+SQLiteCpp/Exception.h
+-
+
+../sqlite3/sqlite3.h
+stdarg.h
+-
+
+/mnt/hgfs/vm-exchange/SQLiteCpp/src/Backup.cpp
+SQLiteCpp/Backup.h
+-
+SQLiteCpp/Exception.h
+-
+sqlite3.h
+-
+
+/mnt/hgfs/vm-exchange/SQLiteCpp/src/Column.cpp
+SQLiteCpp/Column.h
+-
+sqlite3.h
+-
+iostream
+-
+
+/mnt/hgfs/vm-exchange/SQLiteCpp/src/Database.cpp
+SQLiteCpp/Database.h
+-
+SQLiteCpp/Statement.h
+-
+SQLiteCpp/Assertion.h
+-
+SQLiteCpp/Exception.h
+-
+sqlite3.h
+-
+
+/mnt/hgfs/vm-exchange/SQLiteCpp/src/Exception.cpp
+SQLiteCpp/Exception.h
+-
+sqlite3.h
+-
+
+/mnt/hgfs/vm-exchange/SQLiteCpp/src/Statement.cpp
+SQLiteCpp/Statement.h
+-
+SQLiteCpp/Database.h
+-
+SQLiteCpp/Column.h
+-
+SQLiteCpp/Assertion.h
+-
+SQLiteCpp/Exception.h
+-
+sqlite3.h
+-
+
+/mnt/hgfs/vm-exchange/SQLiteCpp/src/Transaction.cpp
+SQLiteCpp/Transaction.h
+-
+SQLiteCpp/Database.h
+-
+SQLiteCpp/Assertion.h
+-
+

+ 33 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/DependInfo.cmake

@@ -0,0 +1,33 @@
+# The set of languages for which implicit dependencies are needed:
+SET(CMAKE_DEPENDS_LANGUAGES
+  "CXX"
+  )
+# The set of files for implicit dependencies of each language:
+SET(CMAKE_DEPENDS_CHECK_CXX
+  "/mnt/hgfs/vm-exchange/SQLiteCpp/src/Backup.cpp" "/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o"
+  "/mnt/hgfs/vm-exchange/SQLiteCpp/src/Column.cpp" "/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o"
+  "/mnt/hgfs/vm-exchange/SQLiteCpp/src/Database.cpp" "/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o"
+  "/mnt/hgfs/vm-exchange/SQLiteCpp/src/Exception.cpp" "/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o"
+  "/mnt/hgfs/vm-exchange/SQLiteCpp/src/Statement.cpp" "/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o"
+  "/mnt/hgfs/vm-exchange/SQLiteCpp/src/Transaction.cpp" "/mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o"
+  )
+SET(CMAKE_CXX_COMPILER_ID "GNU")
+
+# Preprocessor definitions for this target.
+SET(CMAKE_TARGET_DEFINITIONS
+  "SQLITE_ENABLE_COLUMN_METADATA"
+  )
+
+# Targets to which this target links.
+SET(CMAKE_TARGET_LINKED_INFO_FILES
+  )
+
+# The include file search paths:
+SET(CMAKE_C_TARGET_INCLUDE_PATH
+  "../include"
+  "../sqlite3"
+  "../googletest/googletest/include"
+  )
+SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})

+ 233 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/build.make

@@ -0,0 +1,233 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /mnt/hgfs/vm-exchange/SQLiteCpp
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /mnt/hgfs/vm-exchange/SQLiteCpp/build
+
+# Include any dependencies generated for this target.
+include CMakeFiles/SQLiteCpp.dir/depend.make
+
+# Include the progress variables for this target.
+include CMakeFiles/SQLiteCpp.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include CMakeFiles/SQLiteCpp.dir/flags.make
+
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o: CMakeFiles/SQLiteCpp.dir/flags.make
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o: ../src/Backup.cpp
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles $(CMAKE_PROGRESS_1)
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o"
+	/usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o -c /mnt/hgfs/vm-exchange/SQLiteCpp/src/Backup.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.i"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/hgfs/vm-exchange/SQLiteCpp/src/Backup.cpp > CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.i
+
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.s"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/hgfs/vm-exchange/SQLiteCpp/src/Backup.cpp -o CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.s
+
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o.requires:
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o.requires
+
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o.provides: CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o.requires
+	$(MAKE) -f CMakeFiles/SQLiteCpp.dir/build.make CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o.provides.build
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o.provides
+
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o.provides.build: CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o
+
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o: CMakeFiles/SQLiteCpp.dir/flags.make
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o: ../src/Column.cpp
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles $(CMAKE_PROGRESS_2)
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o"
+	/usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o -c /mnt/hgfs/vm-exchange/SQLiteCpp/src/Column.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/SQLiteCpp.dir/src/Column.cpp.i"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/hgfs/vm-exchange/SQLiteCpp/src/Column.cpp > CMakeFiles/SQLiteCpp.dir/src/Column.cpp.i
+
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/SQLiteCpp.dir/src/Column.cpp.s"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/hgfs/vm-exchange/SQLiteCpp/src/Column.cpp -o CMakeFiles/SQLiteCpp.dir/src/Column.cpp.s
+
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o.requires:
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o.requires
+
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o.provides: CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o.requires
+	$(MAKE) -f CMakeFiles/SQLiteCpp.dir/build.make CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o.provides.build
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o.provides
+
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o.provides.build: CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o
+
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o: CMakeFiles/SQLiteCpp.dir/flags.make
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o: ../src/Database.cpp
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles $(CMAKE_PROGRESS_3)
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o"
+	/usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o -c /mnt/hgfs/vm-exchange/SQLiteCpp/src/Database.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/SQLiteCpp.dir/src/Database.cpp.i"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/hgfs/vm-exchange/SQLiteCpp/src/Database.cpp > CMakeFiles/SQLiteCpp.dir/src/Database.cpp.i
+
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/SQLiteCpp.dir/src/Database.cpp.s"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/hgfs/vm-exchange/SQLiteCpp/src/Database.cpp -o CMakeFiles/SQLiteCpp.dir/src/Database.cpp.s
+
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o.requires:
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o.requires
+
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o.provides: CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o.requires
+	$(MAKE) -f CMakeFiles/SQLiteCpp.dir/build.make CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o.provides.build
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o.provides
+
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o.provides.build: CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o
+
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o: CMakeFiles/SQLiteCpp.dir/flags.make
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o: ../src/Exception.cpp
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles $(CMAKE_PROGRESS_4)
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o"
+	/usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o -c /mnt/hgfs/vm-exchange/SQLiteCpp/src/Exception.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.i"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/hgfs/vm-exchange/SQLiteCpp/src/Exception.cpp > CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.i
+
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.s"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/hgfs/vm-exchange/SQLiteCpp/src/Exception.cpp -o CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.s
+
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o.requires:
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o.requires
+
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o.provides: CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o.requires
+	$(MAKE) -f CMakeFiles/SQLiteCpp.dir/build.make CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o.provides.build
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o.provides
+
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o.provides.build: CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o
+
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o: CMakeFiles/SQLiteCpp.dir/flags.make
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o: ../src/Statement.cpp
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles $(CMAKE_PROGRESS_5)
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o"
+	/usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o -c /mnt/hgfs/vm-exchange/SQLiteCpp/src/Statement.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.i"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/hgfs/vm-exchange/SQLiteCpp/src/Statement.cpp > CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.i
+
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.s"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/hgfs/vm-exchange/SQLiteCpp/src/Statement.cpp -o CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.s
+
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o.requires:
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o.requires
+
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o.provides: CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o.requires
+	$(MAKE) -f CMakeFiles/SQLiteCpp.dir/build.make CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o.provides.build
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o.provides
+
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o.provides.build: CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o
+
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o: CMakeFiles/SQLiteCpp.dir/flags.make
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o: ../src/Transaction.cpp
+	$(CMAKE_COMMAND) -E cmake_progress_report /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles $(CMAKE_PROGRESS_6)
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o"
+	/usr/bin/c++   $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o -c /mnt/hgfs/vm-exchange/SQLiteCpp/src/Transaction.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.i"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/hgfs/vm-exchange/SQLiteCpp/src/Transaction.cpp > CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.i
+
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.s"
+	/usr/bin/c++  $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/hgfs/vm-exchange/SQLiteCpp/src/Transaction.cpp -o CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.s
+
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o.requires:
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o.requires
+
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o.provides: CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o.requires
+	$(MAKE) -f CMakeFiles/SQLiteCpp.dir/build.make CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o.provides.build
+.PHONY : CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o.provides
+
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o.provides.build: CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o
+
+# Object files for target SQLiteCpp
+SQLiteCpp_OBJECTS = \
+"CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o" \
+"CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o" \
+"CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o" \
+"CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o" \
+"CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o" \
+"CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o"
+
+# External object files for target SQLiteCpp
+SQLiteCpp_EXTERNAL_OBJECTS =
+
+libSQLiteCpp.a: CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o
+libSQLiteCpp.a: CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o
+libSQLiteCpp.a: CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o
+libSQLiteCpp.a: CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o
+libSQLiteCpp.a: CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o
+libSQLiteCpp.a: CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o
+libSQLiteCpp.a: CMakeFiles/SQLiteCpp.dir/build.make
+libSQLiteCpp.a: CMakeFiles/SQLiteCpp.dir/link.txt
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX static library libSQLiteCpp.a"
+	$(CMAKE_COMMAND) -P CMakeFiles/SQLiteCpp.dir/cmake_clean_target.cmake
+	$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/SQLiteCpp.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+CMakeFiles/SQLiteCpp.dir/build: libSQLiteCpp.a
+.PHONY : CMakeFiles/SQLiteCpp.dir/build
+
+CMakeFiles/SQLiteCpp.dir/requires: CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o.requires
+CMakeFiles/SQLiteCpp.dir/requires: CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o.requires
+CMakeFiles/SQLiteCpp.dir/requires: CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o.requires
+CMakeFiles/SQLiteCpp.dir/requires: CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o.requires
+CMakeFiles/SQLiteCpp.dir/requires: CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o.requires
+CMakeFiles/SQLiteCpp.dir/requires: CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o.requires
+.PHONY : CMakeFiles/SQLiteCpp.dir/requires
+
+CMakeFiles/SQLiteCpp.dir/clean:
+	$(CMAKE_COMMAND) -P CMakeFiles/SQLiteCpp.dir/cmake_clean.cmake
+.PHONY : CMakeFiles/SQLiteCpp.dir/clean
+
+CMakeFiles/SQLiteCpp.dir/depend:
+	cd /mnt/hgfs/vm-exchange/SQLiteCpp/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /mnt/hgfs/vm-exchange/SQLiteCpp /mnt/hgfs/vm-exchange/SQLiteCpp /mnt/hgfs/vm-exchange/SQLiteCpp/build /mnt/hgfs/vm-exchange/SQLiteCpp/build /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/DependInfo.cmake --color=$(COLOR)
+.PHONY : CMakeFiles/SQLiteCpp.dir/depend
+

+ 15 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/cmake_clean.cmake

@@ -0,0 +1,15 @@
+FILE(REMOVE_RECURSE
+  "CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o"
+  "CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o"
+  "CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o"
+  "CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o"
+  "CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o"
+  "CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o"
+  "libSQLiteCpp.pdb"
+  "libSQLiteCpp.a"
+)
+
+# Per-language clean rules from dependency scanning.
+FOREACH(lang CXX)
+  INCLUDE(CMakeFiles/SQLiteCpp.dir/cmake_clean_${lang}.cmake OPTIONAL)
+ENDFOREACH(lang)

+ 3 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/cmake_clean_target.cmake

@@ -0,0 +1,3 @@
+FILE(REMOVE_RECURSE
+  "libSQLiteCpp.a"
+)

+ 45 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/depend.internal

@@ -0,0 +1,45 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o
+ ../include/SQLiteCpp/Backup.h
+ ../include/SQLiteCpp/Column.h
+ ../include/SQLiteCpp/Database.h
+ ../include/SQLiteCpp/Exception.h
+ ../include/SQLiteCpp/Statement.h
+ ../sqlite3/sqlite3.h
+ /mnt/hgfs/vm-exchange/SQLiteCpp/src/Backup.cpp
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o
+ ../include/SQLiteCpp/Column.h
+ ../include/SQLiteCpp/Exception.h
+ ../include/SQLiteCpp/Statement.h
+ ../sqlite3/sqlite3.h
+ /mnt/hgfs/vm-exchange/SQLiteCpp/src/Column.cpp
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o
+ ../include/SQLiteCpp/Assertion.h
+ ../include/SQLiteCpp/Column.h
+ ../include/SQLiteCpp/Database.h
+ ../include/SQLiteCpp/Exception.h
+ ../include/SQLiteCpp/Statement.h
+ ../sqlite3/sqlite3.h
+ /mnt/hgfs/vm-exchange/SQLiteCpp/src/Database.cpp
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o
+ ../include/SQLiteCpp/Exception.h
+ ../sqlite3/sqlite3.h
+ /mnt/hgfs/vm-exchange/SQLiteCpp/src/Exception.cpp
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o
+ ../include/SQLiteCpp/Assertion.h
+ ../include/SQLiteCpp/Column.h
+ ../include/SQLiteCpp/Database.h
+ ../include/SQLiteCpp/Exception.h
+ ../include/SQLiteCpp/Statement.h
+ ../sqlite3/sqlite3.h
+ /mnt/hgfs/vm-exchange/SQLiteCpp/src/Statement.cpp
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o
+ ../include/SQLiteCpp/Assertion.h
+ ../include/SQLiteCpp/Column.h
+ ../include/SQLiteCpp/Database.h
+ ../include/SQLiteCpp/Exception.h
+ ../include/SQLiteCpp/Statement.h
+ ../include/SQLiteCpp/Transaction.h
+ /mnt/hgfs/vm-exchange/SQLiteCpp/src/Transaction.cpp

+ 45 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/depend.make

@@ -0,0 +1,45 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o: ../include/SQLiteCpp/Backup.h
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o: ../include/SQLiteCpp/Column.h
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o: ../include/SQLiteCpp/Database.h
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o: ../include/SQLiteCpp/Exception.h
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o: ../include/SQLiteCpp/Statement.h
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o: ../sqlite3/sqlite3.h
+CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o: ../src/Backup.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o: ../include/SQLiteCpp/Column.h
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o: ../include/SQLiteCpp/Exception.h
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o: ../include/SQLiteCpp/Statement.h
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o: ../sqlite3/sqlite3.h
+CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o: ../src/Column.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o: ../include/SQLiteCpp/Assertion.h
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o: ../include/SQLiteCpp/Column.h
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o: ../include/SQLiteCpp/Database.h
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o: ../include/SQLiteCpp/Exception.h
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o: ../include/SQLiteCpp/Statement.h
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o: ../sqlite3/sqlite3.h
+CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o: ../src/Database.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o: ../include/SQLiteCpp/Exception.h
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o: ../sqlite3/sqlite3.h
+CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o: ../src/Exception.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o: ../include/SQLiteCpp/Assertion.h
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o: ../include/SQLiteCpp/Column.h
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o: ../include/SQLiteCpp/Database.h
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o: ../include/SQLiteCpp/Exception.h
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o: ../include/SQLiteCpp/Statement.h
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o: ../sqlite3/sqlite3.h
+CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o: ../src/Statement.cpp
+
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o: ../include/SQLiteCpp/Assertion.h
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o: ../include/SQLiteCpp/Column.h
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o: ../include/SQLiteCpp/Database.h
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o: ../include/SQLiteCpp/Exception.h
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o: ../include/SQLiteCpp/Statement.h
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o: ../include/SQLiteCpp/Transaction.h
+CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o: ../src/Transaction.cpp
+

+ 8 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/flags.make

@@ -0,0 +1,8 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# compile CXX with /usr/bin/c++
+CXX_FLAGS = -g -I/mnt/hgfs/vm-exchange/SQLiteCpp/include -I/mnt/hgfs/vm-exchange/SQLiteCpp/sqlite3 -I/mnt/hgfs/vm-exchange/SQLiteCpp/googletest/googletest/include    -fPIC -fstack-protector -Wall -Winit-self -Wswitch-enum -Wshadow -Winline
+
+CXX_DEFINES = -DSQLITE_ENABLE_COLUMN_METADATA
+

+ 2 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/link.txt

@@ -0,0 +1,2 @@
+/usr/bin/ar cr libSQLiteCpp.a  CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o
+/usr/bin/ranlib libSQLiteCpp.a

+ 7 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/progress.make

@@ -0,0 +1,7 @@
+CMAKE_PROGRESS_1 = 1
+CMAKE_PROGRESS_2 = 2
+CMAKE_PROGRESS_3 = 3
+CMAKE_PROGRESS_4 = 4
+CMAKE_PROGRESS_5 = 5
+CMAKE_PROGRESS_6 = 6
+

BIN
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o


BIN
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o


BIN
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o


BIN
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o


BIN
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o


BIN
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o


+ 23 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/DependInfo.cmake

@@ -0,0 +1,23 @@
+# The set of languages for which implicit dependencies are needed:
+SET(CMAKE_DEPENDS_LANGUAGES
+  )
+# The set of files for implicit dependencies of each language:
+
+# Preprocessor definitions for this target.
+SET(CMAKE_TARGET_DEFINITIONS
+  "SQLITE_ENABLE_COLUMN_METADATA"
+  )
+
+# Targets to which this target links.
+SET(CMAKE_TARGET_LINKED_INFO_FILES
+  )
+
+# The include file search paths:
+SET(CMAKE_C_TARGET_INCLUDE_PATH
+  "../include"
+  "../sqlite3"
+  "../googletest/googletest/include"
+  )
+SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})

+ 66 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/build.make

@@ -0,0 +1,66 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /mnt/hgfs/vm-exchange/SQLiteCpp
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /mnt/hgfs/vm-exchange/SQLiteCpp/build
+
+# Utility rule file for SQLiteCpp_cpplint.
+
+# Include the progress variables for this target.
+include CMakeFiles/SQLiteCpp_cpplint.dir/progress.make
+
+CMakeFiles/SQLiteCpp_cpplint:
+	/usr/bin/python /mnt/hgfs/vm-exchange/SQLiteCpp/cpplint.py --output=eclipse --verbose=3 --linelength=120 /mnt/hgfs/vm-exchange/SQLiteCpp/src/Backup.cpp /mnt/hgfs/vm-exchange/SQLiteCpp/src/Column.cpp /mnt/hgfs/vm-exchange/SQLiteCpp/src/Database.cpp /mnt/hgfs/vm-exchange/SQLiteCpp/src/Exception.cpp /mnt/hgfs/vm-exchange/SQLiteCpp/src/Statement.cpp /mnt/hgfs/vm-exchange/SQLiteCpp/src/Transaction.cpp /mnt/hgfs/vm-exchange/SQLiteCpp/include/SQLiteCpp/SQLiteCpp.h /mnt/hgfs/vm-exchange/SQLiteCpp/include/SQLiteCpp/Assertion.h /mnt/hgfs/vm-exchange/SQLiteCpp/include/SQLiteCpp/Backup.h /mnt/hgfs/vm-exchange/SQLiteCpp/include/SQLiteCpp/Column.h /mnt/hgfs/vm-exchange/SQLiteCpp/include/SQLiteCpp/Database.h /mnt/hgfs/vm-exchange/SQLiteCpp/include/SQLiteCpp/Exception.h /mnt/hgfs/vm-exchange/SQLiteCpp/include/SQLiteCpp/Statement.h /mnt/hgfs/vm-exchange/SQLiteCpp/include/SQLiteCpp/Transaction.h /mnt/hgfs/vm-exchange/SQLiteCpp/include/SQLiteCpp/VariadicBind.h
+
+SQLiteCpp_cpplint: CMakeFiles/SQLiteCpp_cpplint
+SQLiteCpp_cpplint: CMakeFiles/SQLiteCpp_cpplint.dir/build.make
+.PHONY : SQLiteCpp_cpplint
+
+# Rule to build all files generated by this target.
+CMakeFiles/SQLiteCpp_cpplint.dir/build: SQLiteCpp_cpplint
+.PHONY : CMakeFiles/SQLiteCpp_cpplint.dir/build
+
+CMakeFiles/SQLiteCpp_cpplint.dir/clean:
+	$(CMAKE_COMMAND) -P CMakeFiles/SQLiteCpp_cpplint.dir/cmake_clean.cmake
+.PHONY : CMakeFiles/SQLiteCpp_cpplint.dir/clean
+
+CMakeFiles/SQLiteCpp_cpplint.dir/depend:
+	cd /mnt/hgfs/vm-exchange/SQLiteCpp/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /mnt/hgfs/vm-exchange/SQLiteCpp /mnt/hgfs/vm-exchange/SQLiteCpp /mnt/hgfs/vm-exchange/SQLiteCpp/build /mnt/hgfs/vm-exchange/SQLiteCpp/build /mnt/hgfs/vm-exchange/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/DependInfo.cmake --color=$(COLOR)
+.PHONY : CMakeFiles/SQLiteCpp_cpplint.dir/depend
+

+ 8 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/cmake_clean.cmake

@@ -0,0 +1,8 @@
+FILE(REMOVE_RECURSE
+  "CMakeFiles/SQLiteCpp_cpplint"
+)
+
+# Per-language clean rules from dependency scanning.
+FOREACH(lang)
+  INCLUDE(CMakeFiles/SQLiteCpp_cpplint.dir/cmake_clean_${lang}.cmake OPTIONAL)
+ENDFOREACH(lang)

+ 3 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/depend.internal

@@ -0,0 +1,3 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+

+ 3 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/depend.make

@@ -0,0 +1,3 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+

+ 1 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_cpplint.dir/progress.make

@@ -0,0 +1 @@
+

+ 82 - 0
code_boost/src/SQLiteCpp/build/CMakeFiles/SQLiteCpp_example1.dir/CXX.includecache

@@ -0,0 +1,82 @@
+#IncludeRegexLine: ^[ 	]*#[ 	]*(include|import)[ 	]*[<"]([^">]+)([">])
+
+#IncludeRegexScan: ^.*$
+
+#IncludeRegexComplain: ^$
+
+#IncludeRegexTransform: 
+
+../include/SQLiteCpp/Assertion.h
+cassert
+-
+
+../include/SQLiteCpp/Column.h
+SQLiteCpp/Statement.h
+-
+SQLiteCpp/Exception.h
+-
+string
+-
+limits.h
+-
+
+../include/SQLiteCpp/Database.h
+SQLiteCpp/Column.h
+-
+string
+-
+
+../include/SQLiteCpp/Exception.h
+stdexcept
+-
+string
+-
+
+../include/SQLiteCpp/SQLiteCpp.h
+SQLiteCpp/Assertion.h
+-
+SQLiteCpp/Exception.h
+-
+SQLiteCpp/Database.h
+-
+SQLiteCpp/Statement.h
+-
+SQLiteCpp/Column.h
+-
+SQLiteCpp/Transaction.h
+-
+
+../include/SQLiteCpp/Statement.h
+SQLiteCpp/Exception.h
+-
+string
+-
+map
+-
+
+../include/SQLiteCpp/Transaction.h
+SQLiteCpp/Exception.h
+-
+
+../include/SQLiteCpp/VariadicBind.h
+SQLiteCpp/Statement.h
+-
+utility
+-
+initializer_list
+-
+
+/mnt/hgfs/vm-exchange/SQLiteCpp/examples/example1/main.cpp
+iostream
+-
+cstdio
+-
+cstdlib
+-
+string
+-
+SQLiteCpp/SQLiteCpp.h
+-
+SQLiteCpp/VariadicBind.h
+-
+

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