data: performance optimization NameHierarchy
* For performance reasons nodes now store a serialized version of their name hierarchy directly. Removed NameHierarchy table from database.
This commit is contained in:
+110
-241
@@ -1,349 +1,176 @@
|
||||
ConfigManager.cpp WARNING: value path/to/nowhere is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
|
||||
ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config.
|
||||
Token.cpp ERROR: Location Id was not referenced by this Token.
|
||||
Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined
|
||||
@@ -355,6 +182,48 @@ Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined
|
||||
Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined
|
||||
Edge.cpp ERROR: Edge use can't go from Node undefined to Node undefined
|
||||
Edge.cpp ERROR: Edge use can't go from Node undefined to Node undefined
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage2
|
||||
INFO: handle TestMessage2
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage2
|
||||
INFO: handle TestMessage2
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage2
|
||||
INFO: handle TestMessage2
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: send TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
INFO: handle TestMessage
|
||||
Settings.cpp WARNING: File for Settings not found: data/SettingsTestSuite/wrong_settings.xml
|
||||
ConfigManager.cpp WARNING: value Bool is not present in config.
|
||||
ConfigManager.cpp WARNING: value Int is not present in config.
|
||||
@@ -370,100 +239,100 @@ ConfigManager.cpp WARNING: value Int is not present in config.
|
||||
ConfigManager.cpp WARNING: value Float is not present in config.
|
||||
ConfigManager.cpp WARNING: value String is not present in config.
|
||||
ConfigManager.cpp WARNING: value NewBool is not present in config.
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: typedef: type -> int <file.cpp 1:1 1:1>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: typedef: type -> int <file.cpp 1:1 1:1>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: class: Class <file.cpp 1:1 1:1>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: class: Class <file.cpp 1:1 1:1>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: struct: Struct <file.cpp 1:1 1:1>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: struct: Struct <file.cpp 1:1 1:1>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: global: Global <file.cpp 1:42 1:42>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: global: Global <file.cpp 1:42 1:42>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: global: Global <file.cpp 1:7 1:7>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: global: Global <file.cpp 1:7 1:7>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: field: m_field <file.cpp 1:3 1:3>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: field: m_field <file.cpp 1:3 1:3>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: field: Struct::m_field <file.cpp 1:11 1:11>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: field: Struct::m_field <file.cpp 1:11 1:11>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: function: isTrue <file.cpp 1:14 1:14>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: function: isTrue <file.cpp 1:14 1:14>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: method: isMethod <file.cpp 1:9 1:9>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: method: isMethod <file.cpp 1:9 1:9>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: method: Class::isMethod <file.cpp 1:1 1:1>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: method: Class::isMethod <file.cpp 1:1 1:1>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: namespace: utility <file.cpp 1:1 1:1>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: namespace: utility <file.cpp 1:1 1:1>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: enum: Category <file.cpp 1:17 1:17>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: enum: Category <file.cpp 1:17 1:17>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: enum: Class::Category <file.cpp 1:1 1:1>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: enum: Class::Category <file.cpp 1:1 1:1>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: enum constant: VALUE <file.cpp 1:1 1:1>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: enum constant: VALUE <file.cpp 1:1 1:1>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: class: ClassA <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: class: ClassB <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: inheritance: ClassB : ClassA <file.cpp 1:5 1:5>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: class: ClassA <file.cpp 1:0 1:0>
|
||||
INFO: class: ClassB <file.cpp 1:0 1:0>
|
||||
INFO: inheritance: ClassB : ClassA <file.cpp 1:5 1:5>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: struct: StructA <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: struct: StructB <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: inheritance: StructB : StructA <file.cpp 1:5 1:5>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: struct: StructA <file.cpp 1:0 1:0>
|
||||
INFO: struct: StructB <file.cpp 1:0 1:0>
|
||||
INFO: inheritance: StructB : StructA <file.cpp 1:5 1:5>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: method: A::isMethod <file.cpp 1:9 1:9>
|
||||
Storage.cpp INFO: method: B::isMethod <file.cpp 1:7 1:7>
|
||||
Storage.cpp INFO: override: A::isMethod -> B::isMethod <file.cpp 1:4 1:4>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: method: A::isMethod <file.cpp 1:9 1:9>
|
||||
INFO: method: B::isMethod <file.cpp 1:7 1:7>
|
||||
INFO: override: A::isMethod -> B::isMethod <file.cpp 1:4 1:4>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: function: func <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: call: isTrue -> func <file.cpp 1:9 1:9>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: function: isTrue <file.cpp 1:0 1:0>
|
||||
INFO: function: func <file.cpp 1:0 1:0>
|
||||
INFO: call: isTrue -> func <file.cpp 1:9 1:9>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: global: global <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: call: global -> isTrue <file.cpp 1:7 1:7>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: global: global <file.cpp 1:0 1:0>
|
||||
INFO: function: isTrue <file.cpp 1:0 1:0>
|
||||
INFO: call: global -> isTrue <file.cpp 1:7 1:7>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: field: Foo::m_field <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: field usage: isTrue -> Foo::m_field <file.cpp 1:7 1:7>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: function: isTrue <file.cpp 1:0 1:0>
|
||||
INFO: field: Foo::m_field <file.cpp 1:0 1:0>
|
||||
INFO: field usage: isTrue -> Foo::m_field <file.cpp 1:7 1:7>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: global: global <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: global usage: isTrue -> global <file.cpp 1:7 1:7>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: function: isTrue <file.cpp 1:0 1:0>
|
||||
INFO: global: global <file.cpp 1:0 1:0>
|
||||
INFO: global usage: isTrue -> global <file.cpp 1:7 1:7>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: function: isTrue <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: struct: Struct <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: type usage: isTrue -> Struct <file.cpp 1:0 1:0>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: function: isTrue <file.cpp 1:0 1:0>
|
||||
INFO: struct: Struct <file.cpp 1:0 1:0>
|
||||
INFO: type usage: isTrue -> Struct <file.cpp 1:0 1:0>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: file: file.h < 0:0 0:0>
|
||||
INFO: file: file.h < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.h
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.cpp
|
||||
Storage.cpp INFO: file: file.h < 0:0 0:0>
|
||||
INFO: file: file.h < 0:0 0:0>
|
||||
TextAccess.cpp ERROR: Could not open file file.h
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
Storage.cpp INFO: include: file.h <file.cpp 1:7 1:7>
|
||||
Storage.cpp INFO: file: file.cpp < 0:0 0:0>
|
||||
Storage.cpp INFO: file: file.h < 0:0 0:0>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: include: file.h <file.cpp 1:7 1:7>
|
||||
INFO: file: file.cpp < 0:0 0:0>
|
||||
INFO: file: file.h < 0:0 0:0>
|
||||
TextAccess.cpp WARNING: Index 'firstLine' has to be lower or equal index 'lastLine', is 3 > 2
|
||||
TextAccess.cpp WARNING: Tried to access index 10. Maximum index is 8
|
||||
TextAccess.cpp WARNING: Tried to access index 10. Maximum index is 8
|
||||
|
||||
+28
-214
@@ -81,7 +81,7 @@ Id SqliteStorage::addEdge(int type, Id sourceNodeId, Id targetNodeId)
|
||||
return id;
|
||||
}
|
||||
|
||||
Id SqliteStorage::addNode(int type, Id nameId, bool defined)
|
||||
Id SqliteStorage::addNode(int type, const std::string& serializedName, bool defined)
|
||||
{
|
||||
m_database.execDML(
|
||||
"INSERT INTO element(id) VALUES(NULL);"
|
||||
@@ -89,16 +89,16 @@ Id SqliteStorage::addNode(int type, Id nameId, bool defined)
|
||||
Id id = m_database.lastRowId();
|
||||
|
||||
m_database.execDML((
|
||||
"INSERT INTO node(id, type, name_id, defined) VALUES("
|
||||
+ std::to_string(id) + ", " + std::to_string(type) + ", " + std::to_string(nameId) + ", " + std::to_string(defined) + ");"
|
||||
"INSERT INTO node(id, type, serializedName, defined) VALUES("
|
||||
+ std::to_string(id) + ", " + std::to_string(type) + ", '" + serializedName + "', " + std::to_string(defined) + ");"
|
||||
).c_str());
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
Id SqliteStorage::addFile(Id nameId, const std::string& filePath, const std::string& modificationTime)
|
||||
Id SqliteStorage::addFile(const std::string& serializedName, const std::string& filePath, const std::string& modificationTime)
|
||||
{
|
||||
Id id = addNode(Node::NODE_FILE, nameId, true);
|
||||
Id id = addNode(Node::NODE_FILE, serializedName, true);
|
||||
std::shared_ptr<TextAccess> content = TextAccess::createFromFile(filePath);
|
||||
|
||||
CppSQLite3Statement stmt = m_database.compileStatement((
|
||||
@@ -125,26 +125,6 @@ Id SqliteStorage::addSourceLocation(Id elementId, Id fileNodeId, uint startLine,
|
||||
return m_database.lastRowId();
|
||||
}
|
||||
|
||||
Id SqliteStorage::addNameHierarchyElement(const std::string& name, Id parentId)
|
||||
{
|
||||
if (parentId)
|
||||
{
|
||||
m_database.execDML((
|
||||
"INSERT INTO name_hierarchy_element(id, name, parent_id) "
|
||||
"VALUES (NULL, '" + name + "', " + std::to_string(parentId) + ");"
|
||||
).c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
m_database.execDML((
|
||||
"INSERT INTO name_hierarchy_element(id, name, parent_id) "
|
||||
"VALUES(NULL, '" + name + "', NULL);"
|
||||
).c_str());
|
||||
}
|
||||
|
||||
return m_database.lastRowId();
|
||||
}
|
||||
|
||||
Id SqliteStorage::addComponentAccess(Id memberEdgeId, int type)
|
||||
{
|
||||
m_database.execDML((
|
||||
@@ -155,16 +135,6 @@ Id SqliteStorage::addComponentAccess(Id memberEdgeId, int type)
|
||||
return m_database.lastRowId();
|
||||
}
|
||||
|
||||
Id SqliteStorage::addSignature(Id nodeId, const std::string& signature)
|
||||
{
|
||||
m_database.execDML((
|
||||
"INSERT INTO function_signature(id, signature) "
|
||||
"VALUES (" + std::to_string(nodeId) + ", '" + signature + "');"
|
||||
).c_str());
|
||||
|
||||
return m_database.lastRowId();
|
||||
}
|
||||
|
||||
Id SqliteStorage::addCommentLocation(Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol)
|
||||
{
|
||||
m_database.execDML((
|
||||
@@ -210,13 +180,6 @@ void SqliteStorage::removeElement(Id id)
|
||||
).c_str());
|
||||
}
|
||||
|
||||
void SqliteStorage::removeNameHierarchyElement(Id id)
|
||||
{
|
||||
m_database.execDML((
|
||||
"DELETE FROM name_hierarchy_element WHERE id == " + std::to_string(id) + ";"
|
||||
).c_str());
|
||||
}
|
||||
|
||||
void SqliteStorage::removeElementsWithLocationInFiles(const std::vector<Id>& fileIds)
|
||||
{
|
||||
CppSQLite3Query q = m_database.execQuery((
|
||||
@@ -263,13 +226,6 @@ void SqliteStorage::removeFiles(const std::vector<Id>& fileIds)
|
||||
).c_str());
|
||||
}
|
||||
|
||||
void SqliteStorage::removeUnusedNameHierarchyElements()
|
||||
{
|
||||
m_database.execDML(
|
||||
"DELETE FROM name_hierarchy_element WHERE NOT EXISTS (SELECT * FROM node where node.name_id == name_hierarchy_element.id);"
|
||||
);
|
||||
}
|
||||
|
||||
void SqliteStorage::removeErrorsInFiles(const std::vector<FilePath>& filePaths)
|
||||
{
|
||||
m_database.execDML((
|
||||
@@ -285,7 +241,7 @@ StorageNode SqliteStorage::getFirstNode() const
|
||||
return nodes[0];
|
||||
}
|
||||
|
||||
return StorageNode(0, 0, 0, false);
|
||||
return StorageNode(0, 0, "", false);
|
||||
}
|
||||
|
||||
std::vector<StorageNode> SqliteStorage::getAllNodes() const
|
||||
@@ -444,9 +400,14 @@ StorageNode SqliteStorage::getNodeById(Id id) const
|
||||
return StorageNode(0, 0, 0, false);
|
||||
}
|
||||
|
||||
std::vector<StorageNode> SqliteStorage::getNodesByNameId(Id nameId) const
|
||||
StorageNode SqliteStorage::getNodeBySerializedName(const std::string& serializedName) const
|
||||
{
|
||||
return getAllNodes("WHERE name_id == " + std::to_string(nameId));
|
||||
std::vector<StorageNode> nodes = getAllNodes("WHERE serializedName == '" + serializedName + "'"); // Todo: use getfirstnode here
|
||||
if (nodes.size() > 0)
|
||||
{
|
||||
return nodes[0];
|
||||
}
|
||||
return StorageNode(0, 0, "", 0);
|
||||
}
|
||||
|
||||
std::vector<StorageNode> SqliteStorage::getNodesByIds(const std::vector<Id>& nodeIds) const
|
||||
@@ -457,32 +418,15 @@ std::vector<StorageNode> SqliteStorage::getNodesByIds(const std::vector<Id>& nod
|
||||
StorageFile SqliteStorage::getFileById(const Id id) const
|
||||
{
|
||||
return getFirstFile(
|
||||
"SELECT node.id, node.name_id, file.path, file.modification_time FROM node INNER JOIN file ON node.id = file.id "
|
||||
"SELECT node.id, node.serializedName, file.path, file.modification_time FROM node INNER JOIN file ON node.id = file.id "
|
||||
"WHERE node.id == " + std::to_string(id) + ";"
|
||||
);
|
||||
}
|
||||
|
||||
StorageFile SqliteStorage::getFileByName(const std::string& fileName) const
|
||||
{
|
||||
Id nameId = getNameHierarchyElementIdByName(fileName);
|
||||
|
||||
StorageFile storageFile(0, 0, "", "");
|
||||
|
||||
if (nameId != 0)
|
||||
{
|
||||
storageFile = getFirstFile(
|
||||
"SELECT node.id, node.name_id, file.path, file.modification_time FROM node INNER JOIN file ON node.id = file.id "
|
||||
"WHERE node.name_id == " + std::to_string(nameId) + ";"
|
||||
);
|
||||
}
|
||||
|
||||
return storageFile;
|
||||
}
|
||||
|
||||
StorageFile SqliteStorage::getFileByPath(const std::string& filePath) const
|
||||
{
|
||||
StorageFile storageFile = getFirstFile(
|
||||
"SELECT node.id, node.name_id, file.path, file.modification_time FROM node INNER JOIN file ON node.id = file.id "
|
||||
"SELECT node.id, node.serializedName, file.path, file.modification_time FROM node INNER JOIN file ON node.id = file.id "
|
||||
"WHERE file.path == '" + filePath + "';"
|
||||
);
|
||||
|
||||
@@ -491,7 +435,7 @@ StorageFile SqliteStorage::getFileByPath(const std::string& filePath) const
|
||||
|
||||
std::vector<StorageFile> SqliteStorage::getAllFiles() const
|
||||
{
|
||||
return getAllFiles("SELECT file.id, node.name_id, file.path, file.modification_time FROM file INNER JOIN node ON file.id = node.id;");
|
||||
return getAllFiles("SELECT file.id, node.serializedName, file.path, file.modification_time FROM file INNER JOIN node ON file.id = node.id;");
|
||||
}
|
||||
|
||||
std::shared_ptr<TextAccess> SqliteStorage::getFileContentByPath(const std::string& filePath) const
|
||||
@@ -522,81 +466,6 @@ void SqliteStorage::setNodeDefined(bool defined, Id nodeId)
|
||||
).c_str());
|
||||
}
|
||||
|
||||
Id SqliteStorage::getNameHierarchyElementIdByName(const std::string& name, Id parentId) const
|
||||
{
|
||||
if (parentId)
|
||||
{
|
||||
return getFirstResult<Id>(
|
||||
"SELECT id FROM name_hierarchy_element WHERE name == '" + name + "' AND parent_id == " + std::to_string(parentId) + ";"
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
return getFirstResult<Id>(
|
||||
"SELECT id FROM name_hierarchy_element WHERE name == '" + name + "' AND parent_id IS NULL;"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Id SqliteStorage::getNameHierarchyElementIdByNodeId(const Id nodeId) const
|
||||
{
|
||||
return getFirstResult<Id>(
|
||||
"SELECT name_id FROM node WHERE id == " + std::to_string(nodeId) + ";"
|
||||
);
|
||||
}
|
||||
|
||||
std::vector<StorageNameHierarchyElement> SqliteStorage::getAllNameHierarchyElements() const
|
||||
{
|
||||
std::vector<StorageNameHierarchyElement> ret;
|
||||
|
||||
CppSQLite3Query q = m_database.execQuery(
|
||||
"SELECT * FROM name_hierarchy_element;"
|
||||
);
|
||||
|
||||
while (!q.eof())
|
||||
{
|
||||
const Id id = q.getIntField(0, 0);
|
||||
const std::string name = q.getStringField(1, "");
|
||||
const Id parent_id = q.getIntField(2, 0);
|
||||
|
||||
|
||||
if (id != 0 && name != "" && parent_id != 0)
|
||||
{
|
||||
ret.push_back(StorageNameHierarchyElement(id, name, parent_id));
|
||||
}
|
||||
q.nextRow();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
NameHierarchy SqliteStorage::getNameHierarchyById(const Id id) const
|
||||
{
|
||||
CppSQLite3Query q = m_database.execQuery((
|
||||
"SELECT name, parent_id FROM name_hierarchy_element WHERE id == " + std::to_string(id) + ";"
|
||||
).c_str());
|
||||
|
||||
NameHierarchy nameHierarchy;
|
||||
|
||||
if (!q.eof())
|
||||
{
|
||||
const std::string elementName = q.getStringField(0, "");
|
||||
const Id parentId = q.getIntField(1, 0);
|
||||
|
||||
if (parentId > 0)
|
||||
{
|
||||
nameHierarchy = getNameHierarchyById(parentId);
|
||||
}
|
||||
|
||||
if (elementName.size() > 0)
|
||||
{
|
||||
nameHierarchy.push(std::make_shared<NameElement>(elementName));
|
||||
}
|
||||
}
|
||||
|
||||
return nameHierarchy;
|
||||
}
|
||||
|
||||
StorageSourceLocation SqliteStorage::getSourceLocationByData(Id elementId, Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol, bool isScope) const
|
||||
{
|
||||
return getFirstSourceLocation((
|
||||
@@ -732,36 +601,6 @@ std::vector<StorageComponentAccess> SqliteStorage::getComponentAccessByMemberEdg
|
||||
return accesses;
|
||||
}
|
||||
|
||||
std::vector<Id> SqliteStorage::getNodeIdsBySignature(const std::string& signature) const
|
||||
{
|
||||
CppSQLite3Query q = m_database.execQuery((
|
||||
"SELECT id FROM function_signature WHERE signature == '" + signature + "';"
|
||||
).c_str());
|
||||
|
||||
std::vector<Id> ids;
|
||||
while (!q.eof())
|
||||
{
|
||||
ids.push_back(q.getIntField(0, 0));
|
||||
q.nextRow();
|
||||
}
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
std::string SqliteStorage::getSignatureByNodeId(Id nodeId) const
|
||||
{
|
||||
CppSQLite3Query q = m_database.execQuery((
|
||||
"SELECT id, signature FROM function_signature WHERE id == " + std::to_string(nodeId) + ";"
|
||||
).c_str());
|
||||
|
||||
while (!q.eof())
|
||||
{
|
||||
return q.getStringField(1, "");
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
std::vector<StorageCommentLocation> SqliteStorage::getCommentLocationsInFile(const FilePath& filePath) const
|
||||
{
|
||||
Id fileNodeId = getFileByPath(filePath.str()).id;
|
||||
@@ -829,11 +668,6 @@ int SqliteStorage::getFileCount() const
|
||||
return m_database.execScalar("SELECT COUNT(*) FROM file;");
|
||||
}
|
||||
|
||||
int SqliteStorage::getNameHierarchyElementCount() const
|
||||
{
|
||||
return m_database.execScalar("SELECT COUNT(*) FROM name_hierarchy_element;");
|
||||
}
|
||||
|
||||
int SqliteStorage::getSourceLocationCount() const
|
||||
{
|
||||
return m_database.execScalar("SELECT COUNT(*) FROM source_location;");
|
||||
@@ -843,10 +677,8 @@ void SqliteStorage::clearTables()
|
||||
{
|
||||
m_database.execDML("DROP TABLE IF EXISTS main.error;");
|
||||
m_database.execDML("DROP TABLE IF EXISTS main.comment_location;");
|
||||
m_database.execDML("DROP TABLE IF EXISTS main.function_signature;");
|
||||
m_database.execDML("DROP TABLE IF EXISTS main.component_access;");
|
||||
m_database.execDML("DROP TABLE IF EXISTS main.source_location;");
|
||||
m_database.execDML("DROP TABLE IF EXISTS main.name_hierarchy_element;");
|
||||
m_database.execDML("DROP TABLE IF EXISTS main.file;");
|
||||
m_database.execDML("DROP TABLE IF EXISTS main.node;");
|
||||
m_database.execDML("DROP TABLE IF EXISTS main.edge;");
|
||||
@@ -886,11 +718,10 @@ void SqliteStorage::setupTables()
|
||||
"CREATE TABLE IF NOT EXISTS node("
|
||||
"id INTEGER NOT NULL, "
|
||||
"type INTEGER NOT NULL, "
|
||||
"name_id INTEGER NOT NULL, "
|
||||
"serializedName TEXT, "
|
||||
"defined INTEGER NOT NULL, "
|
||||
"PRIMARY KEY(id), "
|
||||
"FOREIGN KEY(id) REFERENCES element(id) ON DELETE CASCADE, "
|
||||
"FOREIGN KEY(name_id) REFERENCES name_hierarchy_element(id) ON DELETE CASCADE);" // maybe use restrict here
|
||||
"FOREIGN KEY(id) REFERENCES element(id) ON DELETE CASCADE);"
|
||||
);
|
||||
|
||||
m_database.execDML(
|
||||
@@ -903,15 +734,6 @@ void SqliteStorage::setupTables()
|
||||
"FOREIGN KEY(id) REFERENCES node(id) ON DELETE CASCADE);"
|
||||
);
|
||||
|
||||
m_database.execDML(
|
||||
"CREATE TABLE IF NOT EXISTS name_hierarchy_element("
|
||||
"id INTEGER NOT NULL, "
|
||||
"name TEXT, "
|
||||
"parent_id INTEGER, "
|
||||
"PRIMARY KEY(id), "
|
||||
"FOREIGN KEY(parent_id) REFERENCES name_hierarchy_element(id) ON DELETE CASCADE);" // maybe use restrict here
|
||||
);
|
||||
|
||||
m_database.execDML(
|
||||
"CREATE TABLE IF NOT EXISTS source_location("
|
||||
"id INTEGER NOT NULL, "
|
||||
@@ -936,14 +758,6 @@ void SqliteStorage::setupTables()
|
||||
"FOREIGN KEY(edge_id) REFERENCES edge(id) ON DELETE CASCADE);"
|
||||
);
|
||||
|
||||
m_database.execDML(
|
||||
"CREATE TABLE IF NOT EXISTS function_signature("
|
||||
"id INTEGER NOT NULL, "
|
||||
"signature TEXT, "
|
||||
"PRIMARY KEY(id), "
|
||||
"FOREIGN KEY(id) REFERENCES node(id) ON DELETE CASCADE);"
|
||||
);
|
||||
|
||||
m_database.execDML(
|
||||
"CREATE TABLE IF NOT EXISTS comment_location("
|
||||
"id INTEGER NOT NULL, "
|
||||
@@ -1011,16 +825,16 @@ StorageFile SqliteStorage::getFirstFile(const std::string& query) const
|
||||
if (!q.eof())
|
||||
{
|
||||
const Id id = q.getIntField(0, 0);
|
||||
const Id nameId = q.getIntField(1, 0);
|
||||
const std::string serializedName = q.getStringField(1, "");
|
||||
const std::string filePath = q.getStringField(2, "");
|
||||
const std::string modificationTime = q.getStringField(3, "");
|
||||
|
||||
if (id != 0 && nameId != 0)
|
||||
if (id != 0)
|
||||
{
|
||||
return StorageFile(id, nameId, filePath, modificationTime);
|
||||
return StorageFile(id, serializedName, filePath, modificationTime);
|
||||
}
|
||||
}
|
||||
return StorageFile(0, 0, "", "");
|
||||
return StorageFile(0, "", "", "");
|
||||
}
|
||||
|
||||
std::vector<StorageFile> SqliteStorage::getAllFiles(const std::string& query) const
|
||||
@@ -1032,13 +846,13 @@ std::vector<StorageFile> SqliteStorage::getAllFiles(const std::string& query) co
|
||||
while (!q.eof())
|
||||
{
|
||||
const Id id = q.getIntField(0, 0);
|
||||
const Id nameId = q.getIntField(1, 0);
|
||||
const std::string serializedName = q.getStringField(1, "");
|
||||
const std::string filePath = q.getStringField(2, "");
|
||||
const std::string modificationTime = q.getStringField(3, "");
|
||||
|
||||
if (id != 0 && nameId != 0)
|
||||
if (id != 0)
|
||||
{
|
||||
files.push_back(StorageFile(id, nameId, filePath, modificationTime));
|
||||
files.push_back(StorageFile(id, serializedName, filePath, modificationTime));
|
||||
}
|
||||
q.nextRow();
|
||||
}
|
||||
@@ -1129,7 +943,7 @@ std::vector<StorageEdge> SqliteStorage::getAllEdges(const std::string& query) co
|
||||
std::vector<StorageNode> SqliteStorage::getAllNodes(const std::string& query) const
|
||||
{
|
||||
CppSQLite3Query q = m_database.execQuery((
|
||||
"SELECT id, type, name_id, defined FROM node " + query + ";"
|
||||
"SELECT id, type, serializedName, defined FROM node " + query + ";"
|
||||
).c_str());
|
||||
|
||||
std::vector<StorageNode> nodes;
|
||||
@@ -1137,12 +951,12 @@ std::vector<StorageNode> SqliteStorage::getAllNodes(const std::string& query) co
|
||||
{
|
||||
const Id id = q.getIntField(0, 0);
|
||||
const int type = q.getIntField(1, -1);
|
||||
const Id nameId = q.getIntField(2, 0);
|
||||
const std::string serializedName = q.getStringField(2, "");
|
||||
const bool defined = q.getIntField(3, 0);
|
||||
|
||||
if (id != 0 && type != -1)
|
||||
{
|
||||
nodes.push_back(StorageNode(id, type, nameId, defined));
|
||||
nodes.push_back(StorageNode(id, type, serializedName, defined));
|
||||
}
|
||||
|
||||
q.nextRow();
|
||||
|
||||
@@ -34,24 +34,19 @@ public:
|
||||
void setVersion(const Version& version);
|
||||
|
||||
Id addEdge(int type, Id sourceNodeId, Id targetNodeId);
|
||||
Id addNode(int type, Id nameId, bool defined);
|
||||
Id addFile(Id nameId, const std::string& filePath, const std::string& modificationTime);
|
||||
Id addSourceLocation(Id elementId, Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol,
|
||||
bool isScope);
|
||||
Id addNameHierarchyElement(const std::string& name, Id parentId = 0);
|
||||
Id addNode(int type, const std::string& serializedName, bool defined);
|
||||
Id addFile(const std::string& serializedName, const std::string& filePath, const std::string& modificationTime);
|
||||
Id addSourceLocation(Id elementId, Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol, bool isScope);
|
||||
|
||||
Id addComponentAccess(Id memberEdgeId, int type);
|
||||
Id addSignature(Id nodeId, const std::string& signature);
|
||||
|
||||
Id addCommentLocation(Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol);
|
||||
Id addError(const std::string& message, const std::string& filePath, uint lineNumber, uint columnNumber);
|
||||
|
||||
void removeElement(Id id);
|
||||
void removeNameHierarchyElement(Id id);
|
||||
void removeElementsWithLocationInFiles(const std::vector<Id>& fileIds);
|
||||
void removeFile(Id id);
|
||||
void removeFiles(const std::vector<Id>& fileIds);
|
||||
void removeUnusedNameHierarchyElements();
|
||||
|
||||
void removeCommentLocationsInFiles(const std::vector<FilePath>& filePaths);
|
||||
void removeErrorsInFiles(const std::vector<FilePath>& filePaths);
|
||||
@@ -78,11 +73,10 @@ public:
|
||||
std::vector<StorageEdge> getEdgesByTargetType(Id targetId, int type) const;
|
||||
|
||||
StorageNode getNodeById(Id id) const;
|
||||
std::vector<StorageNode> getNodesByNameId(Id nameId) const;
|
||||
StorageNode getNodeBySerializedName(const std::string& serializedName) const;
|
||||
std::vector<StorageNode> getNodesByIds(const std::vector<Id>& nodeIds) const;
|
||||
|
||||
StorageFile getFileById(const Id id) const;
|
||||
StorageFile getFileByName(const std::string& fileName) const;
|
||||
StorageFile getFileByPath(const std::string& filePath) const;
|
||||
std::vector<StorageFile> getAllFiles() const;
|
||||
std::shared_ptr<TextAccess> getFileContentByPath(const std::string& filePath) const;
|
||||
@@ -90,13 +84,6 @@ public:
|
||||
void setNodeType(int type, Id nodeId);
|
||||
void setNodeDefined(bool defined, Id nodeId);
|
||||
|
||||
Id getNameHierarchyElementIdByName(const std::string& name, Id parentId = 0) const;
|
||||
Id getNameHierarchyElementIdByNodeId(const Id nodeId) const;
|
||||
|
||||
std::vector<StorageNameHierarchyElement> getAllNameHierarchyElements() const;
|
||||
|
||||
NameHierarchy getNameHierarchyById(const Id id) const;
|
||||
|
||||
StorageSourceLocation getSourceLocationByData(Id elementId, Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol, bool isScope) const;
|
||||
StorageSourceLocation getSourceLocationById(const Id id) const;
|
||||
std::vector<StorageSourceLocation> getAllSourceLocations() const;
|
||||
@@ -107,8 +94,6 @@ public:
|
||||
|
||||
StorageComponentAccess getComponentAccessByMemberEdgeId(Id memberEdgeId) const;
|
||||
std::vector<StorageComponentAccess> getComponentAccessByMemberEdgeIds(const std::vector<Id>& memberEdgeIds) const;
|
||||
std::vector<Id> getNodeIdsBySignature(const std::string& signature) const;
|
||||
std::string getSignatureByNodeId(Id nodeId) const;
|
||||
|
||||
std::vector<StorageCommentLocation> getCommentLocationsInFile(const FilePath& filePath) const;
|
||||
std::vector<StorageError> getAllErrors() const;
|
||||
@@ -116,7 +101,6 @@ public:
|
||||
int getNodeCount() const;
|
||||
int getEdgeCount() const;
|
||||
int getFileCount() const;
|
||||
int getNameHierarchyElementCount() const;
|
||||
int getSourceLocationCount() const;
|
||||
|
||||
private:
|
||||
|
||||
+32
-118
@@ -100,9 +100,9 @@ void Storage::clearFileElements(const std::vector<FilePath>& filePaths)
|
||||
}
|
||||
}
|
||||
|
||||
void Storage::removeUnusedNames()
|
||||
void Storage::removeUnusedNames() // maybe rename this function. look for callers first.
|
||||
{
|
||||
m_sqliteStorage.removeUnusedNameHierarchyElements();
|
||||
// m_sqliteStorage.removeUnusedNameHierarchyElements();
|
||||
|
||||
clearCaches();
|
||||
}
|
||||
@@ -145,7 +145,6 @@ void Storage::logStats() const
|
||||
ss << "\t" << m_tokenIndex.getCharCount() << " Characters\n";
|
||||
ss << "\t" << m_tokenIndex.getWordCount() << " Words\n";
|
||||
ss << "\t" << m_tokenIndex.getNodeCount() << " SearchNodes\n";
|
||||
ss << "\t" << m_sqliteStorage.getNameHierarchyElementCount() << " NameHierarchyElements\n";
|
||||
|
||||
ss << "\nCode:\n";
|
||||
ss << "\t" << m_sqliteStorage.getFileCount() << " Files\n";
|
||||
@@ -685,27 +684,19 @@ Id Storage::onFileParsed(const FileInfo& fileInfo)
|
||||
{
|
||||
log("file", fileInfo.path.str(), ParseLocation());
|
||||
|
||||
const std::string fileName = fileInfo.path.fileName();
|
||||
|
||||
Id nameHierarchyElementId = m_sqliteStorage.getNameHierarchyElementIdByName(fileName);
|
||||
if (nameHierarchyElementId == 0)
|
||||
{
|
||||
nameHierarchyElementId = m_sqliteStorage.addNameHierarchyElement(fileName);
|
||||
}
|
||||
|
||||
Id fileNodeId = getFileNodeId(fileInfo.path);
|
||||
if (fileNodeId == 0)
|
||||
{
|
||||
NameHierarchy nameHierarchy;
|
||||
nameHierarchy.push(std::make_shared<NameElement>(fileInfo.path.fileName()));
|
||||
|
||||
fileNodeId = m_sqliteStorage.addFile(
|
||||
nameHierarchyElementId,
|
||||
NameHierarchy::serialize(nameHierarchy),
|
||||
fileInfo.path.str(),
|
||||
utility::timeToString(fileInfo.lastWriteTime)
|
||||
);
|
||||
}
|
||||
|
||||
NameHierarchy nameHierarchy;
|
||||
nameHierarchy.push(std::make_shared<NameElement>(fileName));
|
||||
|
||||
return fileNodeId;
|
||||
}
|
||||
|
||||
@@ -765,24 +756,13 @@ Id Storage::onCommentParsed(const ParseLocation& location)
|
||||
|
||||
Id Storage::getIdForNodeWithNameHierarchy(const NameHierarchy& nameHierarchy) const
|
||||
{
|
||||
Id currentId = 0;
|
||||
|
||||
for (size_t i = 0; i < nameHierarchy.size(); i++)
|
||||
{
|
||||
currentId = m_sqliteStorage.getNameHierarchyElementIdByName(nameHierarchy[i]->getFullName(), currentId);
|
||||
}
|
||||
|
||||
std::vector<StorageNode> nodes = m_sqliteStorage.getNodesByNameId(currentId);
|
||||
if (nodes.size() > 0) // TODO: make it impossible that one name id referrs to n nodes.
|
||||
{
|
||||
return nodes[0].id;
|
||||
}
|
||||
return 0;
|
||||
return m_sqliteStorage.getNodeBySerializedName(NameHierarchy::serialize(nameHierarchy)).id;
|
||||
}
|
||||
|
||||
Id Storage::getIdForEdge(
|
||||
Edge::EdgeType type, const NameHierarchy& fromNameHierarchy, const NameHierarchy& toNameHierarchy
|
||||
) const {
|
||||
) const
|
||||
{
|
||||
Id sourceId = getIdForNodeWithNameHierarchy(fromNameHierarchy);
|
||||
Id targetId = getIdForNodeWithNameHierarchy(toNameHierarchy);
|
||||
return m_sqliteStorage.getEdgeBySourceTargetType(sourceId, targetId, type).id;
|
||||
@@ -795,9 +775,7 @@ Id Storage::getIdForFirstNode() const
|
||||
|
||||
NameHierarchy Storage::getNameHierarchyForNodeWithId(Id nodeId) const
|
||||
{
|
||||
Id nameHierarchyElementId = m_sqliteStorage.getNameHierarchyElementIdByNodeId(nodeId);
|
||||
return m_sqliteStorage.getNameHierarchyById(nameHierarchyElementId);
|
||||
// return m_tokenIndex.getNameHierarchyForTokenId(nodeId).getFullName();
|
||||
return NameHierarchy::deserialize(m_sqliteStorage.getNodeById(nodeId).serializedName);
|
||||
}
|
||||
|
||||
Node::NodeType Storage::getNodeTypeForNodeWithId(Id nodeId) const
|
||||
@@ -1053,7 +1031,7 @@ std::vector<Id> Storage::getTokenIdsForMatches(const std::vector<SearchMatch>& m
|
||||
|
||||
Id Storage::getTokenIdForFileNode(const FilePath& filePath) const
|
||||
{
|
||||
return m_sqliteStorage.getFileByName(filePath.fileName()).id;
|
||||
return m_sqliteStorage.getFileByPath(filePath.str()).id;
|
||||
}
|
||||
|
||||
std::vector<Id> Storage::getTokenIdsForAggregationEdge(Id sourceId, Id targetId) const
|
||||
@@ -1306,73 +1284,34 @@ Id Storage::addNodeHierarchy(Node::NodeType nodeType, NameHierarchy nameHierarch
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::vector<Id> nameIds = addNameHierarchyElements(nameHierarchy);
|
||||
|
||||
Id parentNodeId = 0;
|
||||
for (size_t i = 0; i < nameIds.size(); i++)
|
||||
{
|
||||
Id nameId = nameIds[i];
|
||||
const bool isLastElement = (i == nameHierarchy.size() - 1);
|
||||
const std::string& signature = nameHierarchy[i]->getFullSignature();
|
||||
const bool hasSignature = (signature.size() > 0);
|
||||
bool nodeMayExist = true;
|
||||
NameHierarchy currentNameHierarchy;
|
||||
|
||||
for (size_t i = 0; i < nameHierarchy.size(); i++)
|
||||
{
|
||||
currentNameHierarchy.push(nameHierarchy[i]);
|
||||
const bool isLastElement = (i == nameHierarchy.size() - 1);
|
||||
Node::NodeType type = (isLastElement ? nodeType : Node::NODE_UNDEFINED);
|
||||
|
||||
StorageNode node(0, 0, 0, false);
|
||||
if (hasSignature)
|
||||
StorageNode node(0, 0, "", false);
|
||||
|
||||
if (nodeMayExist)
|
||||
{
|
||||
std::vector<Id> potentialIds = m_sqliteStorage.getNodeIdsBySignature(signature);
|
||||
if (parentNodeId != 0)
|
||||
{
|
||||
for (size_t i = 0; i < potentialIds.size(); i++)
|
||||
{
|
||||
if (m_sqliteStorage.getEdgeBySourceTargetType(parentNodeId, potentialIds[i], Edge::EDGE_MEMBER).id != 0)
|
||||
{
|
||||
node = m_sqliteStorage.getNodeById(potentialIds[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (potentialIds.size() > 0)
|
||||
{
|
||||
node = m_sqliteStorage.getNodeById(potentialIds[0]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<StorageNode> potentialIds = m_sqliteStorage.getNodesByNameId(nameId);
|
||||
if (parentNodeId != 0)
|
||||
{
|
||||
for (size_t i = 0; i < potentialIds.size(); i++)
|
||||
{
|
||||
if (m_sqliteStorage.getEdgeBySourceTargetType(parentNodeId, potentialIds[i].id, Edge::EDGE_MEMBER).id != 0)
|
||||
{
|
||||
node = potentialIds[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (potentialIds.size() > 0)
|
||||
{
|
||||
node = potentialIds[0];
|
||||
}
|
||||
node = m_sqliteStorage.getNodeBySerializedName(NameHierarchy::serialize(currentNameHierarchy));
|
||||
}
|
||||
|
||||
Id nodeId = node.id;
|
||||
|
||||
if (nodeId && !node.defined && isLastElement && defined)
|
||||
if (nodeId && !node.defined && isLastElement && defined) // todo: move this down!
|
||||
{
|
||||
m_sqliteStorage.setNodeDefined(true, nodeId);
|
||||
}
|
||||
|
||||
if (nodeId == 0)
|
||||
{
|
||||
nodeId = m_sqliteStorage.addNode(Node::typeToInt(type), nameId, isLastElement && defined);
|
||||
|
||||
if (hasSignature)
|
||||
{
|
||||
m_sqliteStorage.addSignature(nodeId, signature);
|
||||
}
|
||||
nodeMayExist = false;
|
||||
nodeId = m_sqliteStorage.addNode(Node::typeToInt(type), NameHierarchy::serialize(currentNameHierarchy), isLastElement && defined);
|
||||
|
||||
if (parentNodeId != 0)
|
||||
{
|
||||
@@ -1399,35 +1338,6 @@ Id Storage::addNodeHierarchy(Node::NodeType type, const ParseFunction& function,
|
||||
return addNodeHierarchy(type, function.nameHierarchy, defined);
|
||||
}
|
||||
|
||||
std::vector<Id> Storage::addNameHierarchyElements(NameHierarchy nameHierarchy)
|
||||
{
|
||||
std::vector<Id> nameIds;
|
||||
Id parentId = 0;
|
||||
bool nodeMayExist = true;
|
||||
|
||||
for (size_t i = 0; i < nameHierarchy.size(); i++)
|
||||
{
|
||||
const std::string elementName = nameHierarchy[i]->getFullName();
|
||||
Id nodeId = 0;
|
||||
|
||||
if (nodeMayExist)
|
||||
{
|
||||
nodeId = m_sqliteStorage.getNameHierarchyElementIdByName(elementName, parentId);
|
||||
}
|
||||
|
||||
if (nodeId == 0)
|
||||
{
|
||||
nodeId = m_sqliteStorage.addNameHierarchyElement(elementName, parentId);
|
||||
nodeMayExist = false;
|
||||
}
|
||||
|
||||
nameIds.push_back(nodeId);
|
||||
parentId = nodeId;
|
||||
}
|
||||
|
||||
return nameIds;
|
||||
}
|
||||
|
||||
Id Storage::addSourceLocation(Id elementNodeId, const ParseLocation &location, bool isScope)
|
||||
{
|
||||
if (!location.isValid())
|
||||
@@ -1681,9 +1591,13 @@ void Storage::addNodesToGraph(const std::vector<Id> nodeIds, Graph* graph) const
|
||||
|
||||
if (type == Node::NODE_FUNCTION || type == Node::NODE_METHOD)
|
||||
{
|
||||
node->addComponentSignature(
|
||||
std::make_shared<TokenComponentSignature>(m_sqliteStorage.getSignatureByNodeId(storageNode.id))
|
||||
);
|
||||
std::shared_ptr<NameElement> lastElement = NameHierarchy::deserialize(storageNode.serializedName).back();
|
||||
if (lastElement)
|
||||
{
|
||||
node->addComponentSignature(
|
||||
std::make_shared<TokenComponentSignature>(lastElement->getFullSignature())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1786,7 +1700,7 @@ void Storage::buildSearchIndex()
|
||||
{
|
||||
for (StorageNode node: m_sqliteStorage.getAllNodes())
|
||||
{
|
||||
m_tokenIndex.addTokenId(m_tokenIndex.addNode(m_sqliteStorage.getNameHierarchyById(node.nameId)), node.id);
|
||||
m_tokenIndex.addTokenId(m_tokenIndex.addNode(NameHierarchy::deserialize(node.serializedName)), node.id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -172,7 +172,6 @@ public:
|
||||
private:
|
||||
Id addNodeHierarchy(Node::NodeType nodeType, NameHierarchy nameHierarchy, bool defined);
|
||||
Id addNodeHierarchy(Node::NodeType type, const ParseFunction& function, bool defined);
|
||||
std::vector<Id> addNameHierarchyElements(NameHierarchy nameHierarchy);
|
||||
Id addSourceLocation(Id elementNodeId, const ParseLocation &location, bool isScope = false);
|
||||
|
||||
Id addEdge(Id sourceNodeId, Id targetNodeId, Edge::EdgeType type);
|
||||
|
||||
@@ -22,45 +22,34 @@ struct StorageEdge
|
||||
|
||||
struct StorageNode
|
||||
{
|
||||
StorageNode(Id id, int type, Id nameId, bool defined)
|
||||
StorageNode(Id id, int type, const std::string& serializedName, bool defined)
|
||||
: id(id)
|
||||
, type(type)
|
||||
, nameId(nameId)
|
||||
, serializedName(serializedName)
|
||||
, defined(defined)
|
||||
{}
|
||||
|
||||
Id id;
|
||||
int type;
|
||||
Id nameId;
|
||||
std::string serializedName;
|
||||
bool defined;
|
||||
};
|
||||
|
||||
struct StorageFile
|
||||
{
|
||||
StorageFile(Id id, Id nameId, const std::string& filePath, const std::string& modificationTime)
|
||||
StorageFile(Id id, const std::string& name, const std::string& filePath, const std::string& modificationTime)
|
||||
: id(id)
|
||||
, nameId(nameId)
|
||||
, name(name)
|
||||
, filePath(filePath)
|
||||
, modificationTime(modificationTime)
|
||||
{}
|
||||
|
||||
Id id;
|
||||
Id nameId;
|
||||
std::string name;
|
||||
std::string filePath;
|
||||
std::string modificationTime;
|
||||
};
|
||||
|
||||
struct StorageNameHierarchyElement
|
||||
{
|
||||
StorageNameHierarchyElement(Id id, const std::string& name, Id parentId)
|
||||
: id(id), name(name), parentId(parentId)
|
||||
{}
|
||||
|
||||
Id id;
|
||||
std::string name;
|
||||
Id parentId;
|
||||
};
|
||||
|
||||
struct StorageSourceLocation
|
||||
{
|
||||
StorageSourceLocation(Id id, Id elementId, Id fileNodeId, uint startLine, uint startCol, uint endLine, uint endCol, bool isScope)
|
||||
|
||||
@@ -1,5 +1,40 @@
|
||||
#include "data/name/NameHierarchy.h"
|
||||
|
||||
#include "utility/logging/logging.h"
|
||||
#include "utility/utilityString.h"
|
||||
|
||||
std::string NameHierarchy::serialize(NameHierarchy nameHierarchy)
|
||||
{
|
||||
std::string serializedName = "";
|
||||
for (size_t i = 0; i < nameHierarchy.size(); i++)
|
||||
{
|
||||
serializedName += nameHierarchy[i]->getFullName() + "\t";
|
||||
serializedName += nameHierarchy[i]->getFullSignature();
|
||||
if (i + 1 < nameHierarchy.size())
|
||||
serializedName += "\n";
|
||||
}
|
||||
return serializedName;
|
||||
}
|
||||
|
||||
NameHierarchy NameHierarchy::deserialize(const std::string& serializedName)
|
||||
{
|
||||
NameHierarchy nameHierarchy;
|
||||
|
||||
std::vector<std::string> serializedNameElements = utility::splitToVector(serializedName, "\n");
|
||||
for (size_t i = 0; i < serializedNameElements.size(); i++)
|
||||
{
|
||||
std::vector<std::string> nameParts = utility::splitToVector(serializedNameElements[i], "\t");
|
||||
if (nameParts.size() != 2)
|
||||
{
|
||||
LOG_ERROR("unable to deserialize name hierarchy: " + serializedName); // todo: obfuscate serializedName!
|
||||
return NameHierarchy();
|
||||
}
|
||||
nameHierarchy.push(std::make_shared<NameElement>(nameParts[0], nameParts[1]));
|
||||
}
|
||||
|
||||
return nameHierarchy;
|
||||
}
|
||||
|
||||
NameHierarchy::NameHierarchy()
|
||||
{
|
||||
}
|
||||
@@ -25,7 +60,11 @@ void NameHierarchy::pop()
|
||||
|
||||
std::shared_ptr<NameElement> NameHierarchy::back() const
|
||||
{
|
||||
return m_elements.back();
|
||||
if (m_elements.size() > 0)
|
||||
{
|
||||
return m_elements.back();
|
||||
}
|
||||
return std::shared_ptr<NameElement>();
|
||||
}
|
||||
|
||||
std::shared_ptr<NameElement> NameHierarchy::operator[](size_t pos) const
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
class NameHierarchy
|
||||
{
|
||||
public:
|
||||
static std::string serialize(NameHierarchy nameHierarchy);
|
||||
static NameHierarchy deserialize(const std::string& serializedName);
|
||||
|
||||
NameHierarchy();
|
||||
NameHierarchy(const std::string& name);
|
||||
~NameHierarchy();
|
||||
|
||||
@@ -8,94 +8,6 @@
|
||||
class SqliteStorageTestSuite: public CxxTest::TestSuite
|
||||
{
|
||||
public:
|
||||
void test_storage_adds_name_hierarchy_element_successfully()
|
||||
{
|
||||
std::string databasePath = "data/SQLiteTestSuite/test.sqlite";
|
||||
int elementCount = -1;
|
||||
{
|
||||
SqliteStorage storage(databasePath);
|
||||
storage.beginTransaction();
|
||||
storage.addNameHierarchyElement("a");
|
||||
storage.commitTransaction();
|
||||
elementCount = storage.getNameHierarchyElementCount();
|
||||
}
|
||||
boost::filesystem::remove(databasePath);
|
||||
|
||||
TS_ASSERT_EQUALS(1, elementCount);
|
||||
}
|
||||
|
||||
void test_storage_removes_name_hierarchy_element_successfully()
|
||||
{
|
||||
std::string databasePath = "data/SQLiteTestSuite/test.sqlite";
|
||||
int elementCount = -1;
|
||||
{
|
||||
SqliteStorage storage(databasePath);
|
||||
storage.beginTransaction();
|
||||
int elementId = storage.addNameHierarchyElement("a");
|
||||
storage.removeNameHierarchyElement(elementId);
|
||||
storage.commitTransaction();
|
||||
elementCount = storage.getNameHierarchyElementCount();
|
||||
}
|
||||
boost::filesystem::remove(databasePath);
|
||||
|
||||
TS_ASSERT_EQUALS(0, elementCount);
|
||||
}
|
||||
|
||||
void test_storage_finds_name_hierarchy_elements_by_name()
|
||||
{
|
||||
std::string databasePath = "data/SQLiteTestSuite/test.sqlite";
|
||||
int insertedElementId = -1;
|
||||
int foundElementId = -1;
|
||||
{
|
||||
SqliteStorage storage(databasePath);
|
||||
storage.beginTransaction();
|
||||
insertedElementId = storage.addNameHierarchyElement("a");
|
||||
storage.commitTransaction();
|
||||
foundElementId = storage.getNameHierarchyElementIdByName("a");
|
||||
}
|
||||
boost::filesystem::remove(databasePath);
|
||||
|
||||
TS_ASSERT(foundElementId != -1);
|
||||
TS_ASSERT_EQUALS(insertedElementId, foundElementId);
|
||||
}
|
||||
|
||||
void test_storage_finds_name_hierarchy_elements_by_name_and_parent_id()
|
||||
{
|
||||
std::string databasePath = "data/SQLiteTestSuite/test.sqlite";
|
||||
int insertedChildElementId = -1;
|
||||
int foundElementId = -1;
|
||||
{
|
||||
SqliteStorage storage(databasePath);
|
||||
storage.beginTransaction();
|
||||
int insertedParentElementId = storage.addNameHierarchyElement("a");
|
||||
insertedChildElementId = storage.addNameHierarchyElement("a", insertedParentElementId);
|
||||
storage.addNameHierarchyElement("a", storage.addNameHierarchyElement("b"));
|
||||
storage.commitTransaction();
|
||||
foundElementId = storage.getNameHierarchyElementIdByName("a", insertedParentElementId);
|
||||
}
|
||||
boost::filesystem::remove(databasePath);
|
||||
|
||||
TS_ASSERT(foundElementId != -1);
|
||||
TS_ASSERT_EQUALS(insertedChildElementId, foundElementId);
|
||||
}
|
||||
|
||||
void test_storage_automatically_removes_name_hierarchy_element_child_when_deleting_parent()
|
||||
{
|
||||
std::string databasePath = "data/SQLiteTestSuite/test.sqlite";
|
||||
int elementCount = -1;
|
||||
{
|
||||
SqliteStorage storage(databasePath);
|
||||
storage.beginTransaction();
|
||||
int parentId = storage.addNameHierarchyElement("a");
|
||||
storage.removeNameHierarchyElement(parentId);
|
||||
storage.commitTransaction();
|
||||
elementCount = storage.getNameHierarchyElementCount();
|
||||
}
|
||||
boost::filesystem::remove(databasePath);
|
||||
|
||||
TS_ASSERT_EQUALS(0, elementCount);
|
||||
}
|
||||
|
||||
void test_storage_adds_node_successfully()
|
||||
{
|
||||
std::string databasePath = "data/SQLiteTestSuite/test.sqlite";
|
||||
@@ -103,8 +15,7 @@ public:
|
||||
{
|
||||
SqliteStorage storage(databasePath);
|
||||
storage.beginTransaction();
|
||||
int nameId = storage.addNameHierarchyElement("a");
|
||||
storage.addNode(0, nameId, false);
|
||||
storage.addNode(0, "a", false);
|
||||
storage.commitTransaction();
|
||||
nodeCount = storage.getNodeCount();
|
||||
}
|
||||
@@ -120,8 +31,7 @@ public:
|
||||
{
|
||||
SqliteStorage storage(databasePath);
|
||||
storage.beginTransaction();
|
||||
int nameId = storage.addNameHierarchyElement("a");
|
||||
int nodeId = storage.addNode(0, nameId, false);
|
||||
int nodeId = storage.addNode(0, "a", false);
|
||||
storage.removeElement(nodeId);
|
||||
storage.commitTransaction();
|
||||
nodeCount = storage.getNodeCount();
|
||||
@@ -138,10 +48,8 @@ public:
|
||||
{
|
||||
SqliteStorage storage(databasePath);
|
||||
storage.beginTransaction();
|
||||
int sourceNameId = storage.addNameHierarchyElement("a");
|
||||
int sourceNodeId = storage.addNode(0, sourceNameId, false);
|
||||
int targetNameId = storage.addNameHierarchyElement("b");
|
||||
int targetNodeId = storage.addNode(0, targetNameId, false);
|
||||
int sourceNodeId = storage.addNode(0, "a", false);
|
||||
int targetNodeId = storage.addNode(0, "b", false);
|
||||
storage.addEdge(0, sourceNodeId, targetNodeId);
|
||||
storage.commitTransaction();
|
||||
edgeCount = storage.getEdgeCount();
|
||||
@@ -158,10 +66,8 @@ public:
|
||||
{
|
||||
SqliteStorage storage(databasePath);
|
||||
storage.beginTransaction();
|
||||
int sourceNameId = storage.addNameHierarchyElement("a");
|
||||
int sourceNodeId = storage.addNode(0, sourceNameId, false);
|
||||
int targetNameId = storage.addNameHierarchyElement("b");
|
||||
int targetNodeId = storage.addNode(0, targetNameId, false);
|
||||
int sourceNodeId = storage.addNode(0, "a", false);
|
||||
int targetNodeId = storage.addNode(0, "b", false);
|
||||
int edgeId = storage.addEdge(0, sourceNodeId, targetNodeId);
|
||||
storage.removeElement(edgeId);
|
||||
storage.commitTransaction();
|
||||
|
||||
Reference in New Issue
Block a user