This change stores each Token name in the separate singleton class Dictionary. The Dictionary gives each saved word an Id and thereby avoids duplicated names. E.g if the constructor method "Graph::Graph" is stored then the word "Graph" only appears once in memory. The class SearchIndex is now responsible for the name hierarchy and is instantiated by the Storage. The SearchIndex builds the name hierarchy using SearchNodes, each holding a Dictionary string reference of the name it holds. E.g if the names "math::ceil" and "math::floor" are added to the SearchIndex then 3 nodes get created, the SearchNode "math" will hold the two childs "ceil" and "floor". The hierarchical graph creation functionality got split off from Graph into the new subclass StorageGraph. The StorageGraph creates nodes with a passed SearchNode pointer of the name it represents in the SearchIndex. Thereby the StorageGraph reuses the hierarchical information in the SearchIndex and can create nodes much quicker by avoiding node searches and name comparisions. The name information is now stored in the Nodes via the TokenComponentName class, which is subclassed into TokenComponentNameReferenced and TokenComponentNameCached. The StorageClass creates nodes with the component TokenComponentNameReferenced, which holds a pointer to the SearchNode instance holding the name. This allows for retrieving the full name of the node, without using other Nodes int the Graph, which might not be present. If the Node is copied then the component changes to a TokenComponentNameCached, which holds the full name as a string, so the memory in the Storage doesn't have to be accessed anymore. TokenComponentSignature is now only holding an Id of the signature string saved in the Dictionary, which speeds up the signature comparison. A follow-up will change saving the whole signature as string to reusing the wordIds it is consisting of. Lastly the SearchIndex holds basic fuzzy search functionality. A passed query gets compared down the SearchNode hierarchy as long as matches for each letter are found. Matches must contain all letters of the query. The search is case-insensitive. If letters are found in front positions, next to each other or written in uppercase they are weighed higher in the match ranking. The character ':' is also interpreted and found, although the '::' delimiter is not stored. E.g. the query "m:l" used on the example above will return both "math::floor" and "math::ceil", but "floor" is ranked higher because the 'l' appears closer to the start.
97 lines
5.7 KiB
Plaintext
97 lines
5.7 KiB
Plaintext
ConfigManager.cpp ERROR: value path/to/nowhere is not present in config.
|
|
Token.cpp ERROR: Location Id was not referenced by this Token.
|
|
Node.cpp WARNING: Cannot change NodeType after it was already set from namespace to class
|
|
Edge.cpp ERROR: Nodes are not plain copies.
|
|
Storage.cpp INFO: class: A <input.cc 1:7 1:7>
|
|
Storage.cpp INFO: method: A::A <input.cc 4:2 4:2>
|
|
Storage.cpp INFO: global usage: A::A -> A::count <input.cc 5:3 5:7>
|
|
Storage.cpp INFO: method: A::getCount <input.cc 8:13 8:20>
|
|
Storage.cpp INFO: global usage: A::getCount -> A::count <input.cc 10:10 10:14>
|
|
Storage.cpp INFO: method: A::process <input.cc 14:15 14:21>
|
|
Storage.cpp INFO: field: A::count <input.cc 17:13 17:17>
|
|
Storage.cpp INFO: class: B <input.cc 20:7 20:7>
|
|
Storage.cpp INFO: inheritance: B : A <input.cc 21:4 21:11>
|
|
Storage.cpp INFO: method: B::process <input.cc 24:15 24:21>
|
|
Storage.cpp INFO: type usage: B::process -> int <input.cc 26:3 26:5>
|
|
Storage.cpp INFO: function: main <input.cc 30:5 30:8>
|
|
Storage.cpp INFO: type usage: main -> B <input.cc 32:2 32:2>
|
|
Storage.cpp INFO: call: main -> B::B <input.cc 32:4 32:4>
|
|
Storage.cpp INFO: call: main -> A::getCount <input.cc 34:9 34:21>
|
|
Storage.cpp INFO: class: A <input.cc 1:7 1:7>
|
|
Storage.cpp INFO: method: A::A <input.cc 4:2 4:2>
|
|
Storage.cpp INFO: global usage: A::A -> A::count <input.cc 5:3 5:7>
|
|
Storage.cpp INFO: method: A::getCount <input.cc 8:13 8:20>
|
|
Storage.cpp INFO: global usage: A::getCount -> A::count <input.cc 10:10 10:14>
|
|
Storage.cpp INFO: method: A::process <input.cc 14:15 14:21>
|
|
Storage.cpp INFO: field: A::count <input.cc 17:13 17:17>
|
|
Storage.cpp INFO: class: B <input.cc 20:7 20:7>
|
|
Storage.cpp INFO: inheritance: B : A <input.cc 21:4 21:11>
|
|
Storage.cpp INFO: method: B::process <input.cc 24:15 24:21>
|
|
Storage.cpp INFO: type usage: B::process -> int <input.cc 26:3 26:5>
|
|
Storage.cpp INFO: function: main <input.cc 30:5 30:8>
|
|
Storage.cpp INFO: type usage: main -> B <input.cc 32:2 32:2>
|
|
Storage.cpp INFO: call: main -> B::B <input.cc 32:4 32:4>
|
|
Storage.cpp INFO: call: main -> A::getCount <input.cc 34:9 34:21>
|
|
Settings.cpp WARNING: File for Settings not found.
|
|
ConfigManager.cpp ERROR: value Bool is not present in config.
|
|
ConfigManager.cpp ERROR: value Int is not present in config.
|
|
ConfigManager.cpp ERROR: value Float is not present in config.
|
|
ConfigManager.cpp ERROR: value String is not present in config.
|
|
Settings.cpp WARNING: File for Settings not found.
|
|
ConfigManager.cpp ERROR: value Bool is not present in config.
|
|
ConfigManager.cpp ERROR: value Int is not present in config.
|
|
ConfigManager.cpp ERROR: value Float is not present in config.
|
|
ConfigManager.cpp ERROR: value String is not present in config.
|
|
ConfigManager.cpp ERROR: value Bool is not present in config.
|
|
ConfigManager.cpp ERROR: value Int is not present in config.
|
|
ConfigManager.cpp ERROR: value Float is not present in config.
|
|
ConfigManager.cpp ERROR: value String is not present in config.
|
|
ConfigManager.cpp ERROR: value NewBool is not present in config.
|
|
Storage.cpp INFO: typedef: type -> int <file.cpp 1:1 1:1>
|
|
Storage.cpp INFO: class: Class <file.cpp 1:1 1:1>
|
|
Storage.cpp INFO: struct: Struct <file.cpp 1:1 1:1>
|
|
Storage.cpp INFO: global: Global <file.cpp 1:42 1:42>
|
|
Storage.cpp INFO: global: Global <file.cpp 1:7 1:7>
|
|
Storage.cpp INFO: field: m_field <file.cpp 1:3 1:3>
|
|
Storage.cpp ERROR: Field is not a member of anything.
|
|
Storage.cpp ERROR: Field needs to have access type [public, protected, private] but has none.
|
|
Storage.cpp INFO: field: Struct::m_field <file.cpp 1:11 1:11>
|
|
Storage.cpp INFO: function: isTrue <file.cpp 1:14 1:14>
|
|
Storage.cpp INFO: method: isMethod <file.cpp 1:9 1:9>
|
|
Storage.cpp ERROR: Method is not a member of anything.
|
|
Storage.cpp ERROR: Method needs to have access type [public, protected, private] but has none.
|
|
Storage.cpp INFO: method: isMethod <file.cpp 1:1 1:1>
|
|
Storage.cpp ERROR: Method is not a member of anything.
|
|
Storage.cpp ERROR: Method needs to have access type [public, protected, private] but has none.
|
|
Storage.cpp INFO: method: Class::isMethod <file.cpp 1:1 1:1>
|
|
Storage.cpp INFO: namespace: utility <file.cpp 1:1 1:1>
|
|
Storage.cpp INFO: enum: Category <file.cpp 1:17 1:17>
|
|
Storage.cpp INFO: enum: Class::Category <file.cpp 1:1 1:1>
|
|
Storage.cpp INFO: enum field: VALUE <file.cpp 1:1 1:1>
|
|
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: 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: 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: 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: 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: 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>
|
|
Graph.cpp ERROR: Can't remove member edge, without removing the child node.
|
|
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
|
|
TextAccess.cpp WARNING: Line numbers start with one, is 0
|
|
TextAccess.cpp WARNING: Line numbers start with one, is 0
|
|
TokenLocationCollection.cpp ERROR: Can't create TokenLocation with wrong boundaries.
|
|
TokenLocationCollection.cpp ERROR: Can't create TokenLocation with wrong boundaries.
|