summaryrefslogtreecommitdiffstats
path: root/common/collection/collection_ut.c
Commit message (Collapse)AuthorAgeFilesLines
* COLLECTION Enhancing hashing and iteration functionsDmitri Pal2009-10-051-1/+34
|
* COLLECTION Making iterations pinnableDmitri Pal2009-10-051-2/+170
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a feature that helps ELAPI. It makes lookup of the fields that need to be resolved for every event a bit faster. The idea is to be able to put a 'pin' into a specific place while iterating the collection and make this place a new "wrap around" place for the collection. This means that next time you iterate this collection you will start iterating from the next item and the item you got before pin will be last in your iteration cycle. Here is the example: Assume you have two collections that you need to compare and perform some action on collection 1 based on the presense of the item in collection 2. Collection1 = A, B, C, D, E. F Collection2 = A, C, F The usual approach is to try A from collection 1 against A, B, C from collection 2. "A" will be found right away. But to find "F" it has to be compared to "A" and "C" first. The fact that the collections are to some extent ordered can in some cases help to reduce the number of comparisons. If we found "C" in the list we can put a "pin" into the collection there causing the iterator to warp at this "pin" point. Since "D" and "E" are not in the second collection we will have to make same amount of comparisons in traditional or "pinned" case to not find them. To find "F" in pinned case there will be just one comparison. Traditional case = 1 + 3 + 2 + 3 + 3 + 3 = 15 Pinned case = 1 + 3 + 1 + 3 + 3 + 1 = 12 It is a 20% comparison reduction.
* COLLECTION Adding item comparison and sortingDmitri Pal2009-10-051-3/+144
| | | | | | | | | | | Needed item comparison functions and realized that the easiest way to test them would be using sorting. Since there already been a ticket #73 to do that I added function to sort collection based on different properties of the item. COLLECTION Fixing issues with comparisons COLLECTION Adding do-while to macro
* COLLECTION Functions to deal with hashDmitri Pal2009-09-111-0/+21
| | | | | | | | | | | | | | | The hashing logic was internal to the collection item. But if someone wants to effectively deal with the items and compare the property to a string he should compare hashes first. But it was not possible without the provided functions. As a result some of the ELAPI modules had to take advantage of knowledge of the item structure. This is bad. So this patch lays foundation for refactoring of the ELAPI code that was using internals of the item directly (file_util.c mostly). Also patch adds a unit test that was required for testing new functionality and for ticket #83
* COLLECTION Improvements to copy functionsDmitri Pal2009-09-101-0/+28
| | | | | | | | | | | | | | | | | | | | This patch adds better options for copying collections in flat mode. It allows caller of the interface to control prefixing of the fields when one collection is appended to another. It also avoids creating prefixes when the collection is simply copied in flat mode. Also for ELAPI I realized that the most efficient way to deal with the "resolved" event (event where all templeted values are actually replaced with the real values) is to add a callback capability to a copy collection function so that the callback can be used to modify the data (resolve it) while the copy operation is in progress. This approach eliminates the need for separate set of lookups after the event is already copied.
* COLLECTION Copy collection flat with concatenated namesDmitri Pal2009-09-091-2/+12
| | | | | | | | | | | | | | | | | | | | | This patch addresses several issues: a) Adds capability to add or copy the collections in flattened mode but construct names of attributes in dotted notation. For example when you append collection "sub" with items "foo" and "bar" previously you could add them as "foo" and "bar" not you can flatten them and the names will be "sub.foo" and "sub.bar" this allows better processing of the attributes in the elapi message. b) Removes old implemntation of the copy collection function. c) Removes the col_set_timestamp, this functionality has been moved to ELAPI long ago. d) Updates collection unit test. e) Updates elapi to use new functionality f) Updates elapi unit test Have run under valgrind with no problems.
* COLLECTION & INI CleanupDmitri Pal2009-07-201-33/+33
| | | | | | | | | | | | | | | | I started to cleanup the unit tests from the type cust around NULL and found several problems that I had to address: 1) The choice of the "." as a search separator turned out to be a poor choice. The problem was that the file name has "." and INI was relaying on files to be used as property names. I corrected that part in the INI but after discussion with Simo we decided to switch from "." to "!" as special symbol anyways. 2) Found that the property rename was not reinitializing the hash. Corrected. Added ticket to add unit tests around it (#83).
* COLLECTION Improving searchesDmitri Pal2009-07-161-4/+125
| | | | | | Addressing ticket #71. The searches were not taking advantage of the hashes, now they are.
* COLLECTION Add remove item functionsDmitri Pal2009-07-161-2/+26
| | | | | | | | | | | | | The remove functions extract and remove items, they act differently from the way the delete_property function works. The new functions allow deletion with the disposition while the delete_property only deletes specified property. The delete_property function is left as is since there are some use cases when it is more efficient to use it rather than new remove_item_xxx ones.
* COLLECTION Fixed: iterator_up and insert_into_currentDmitri Pal2009-07-151-12/+64
| | | | | | | | | | | During a review of the previous patch the two issues were found: a) The col_iterator_up function was not implemented properly so it got reworked. New implementation changes the way error condition is handled. Comments were updated accordingly. b) There was a mising check for validity of the argument in the col_insert_into_current function. Check was added. c) Unit test modified to reflect the change in functionality.
* COLLECTION Adding flat traversal & copyDmitri Pal2009-07-151-13/+275
| | | | | | | | | | | | The collection is hearachical. The flattening of the collection was not implemented before both for traversal and copying. This patch introduces functionality to traverse or iterate through collection as flat set and also copy collection into another flattening it and automatically resolving conflicts. Also imptoved tracability and fixed memory leak in unbind iterator code.
* Clean up warnings in common/Simo Sorce2009-07-031-8/+8
| | | | Fix consts and function declarations
* Changing function names for collection API.Dmitri Pal2009-07-021-363/+363
| | | | | | | Patch prepends prefix "col_" to all functions related to collection. This caused some formatiing issues so the alignement was addressed too.
* New deletion unit test.Dmitri Pal2009-07-021-1/+35
| | | | | | Adds a unit test for deletion and re-adding of the elements to collection. Small syntactical fix in "stack".
* FORMATTING - minor cleanup of the unit test.Dmitri Pal2009-07-021-254/+283
| | | | | | | | | | | | | This patch adds formatting changes to better follow the style guidelines in the collection unit test. No logical changes to the code. I was planning to do it for a while per Simo's comment when he accepted the core of the collection code but indicated that the unit test should be cleaned later. Later has come.
* Adding INSERT into collection functionality.Dmitri Pal2009-07-011-7/+162
| | | | | | | | | Add was always insterting at the end of the collection. With this change one can control where the item is inserted and deal with the duplicates too. Also one now can extract items from collection using absolute and relative disposition. Using more advanced hashing function.
* Fixing memory issues in ini and collectionDmitri Pal2009-04-141-6/+9
| | | | | | | The read_line() function used an internal buffer allocated on stack as temporary storage for a line read from file, then returned it. read_line() now gets a buffer from the caller. Fixed memory leaks in INI and Collection found by valgrind.
* Clean up a lot of warnings in Collection and INI parserStephen Gallagher2009-04-061-4/+1
|
* First commit of basic collection API.Dmitri Pal2009-04-061-0/+712