summaryrefslogtreecommitdiff
path: root/src/list.h (follow)
AgeCommit message (Collapse)Author
2009-12-19Added a couple helpers, peekPop(), and an addition operator.Mike Buland
2009-12-06I corrected a peculiar heap corner case that caused an infinite loop.Mike Buland
2009-11-12I've started my campaign to clean up all of the header files in libbu++ as farMike Buland
as includes go. This required a little bit of reworking as far as archive goes, but I've been planning on changing it aronud for a bit anyway. The final result here is that you may need to add some more includes in your own code, libbu++ doesn't include as many random things you didn't ask for anymore, most of these seem to be bu/hash.h, unistd.h, and time.h. Also, any Archive functions and operators should use ArchiveBase when they can instead of Archive, archivebase.h is a much lighterweight include that will be used everywhere in core that it can be, there are a few classes that actually want a specific archiver to be used, they will use it (such as the nids storage class). So far, except for adding header files, nothing has changed in functionality, and no other code changes should be required, although the above mentioned archive changeover is reccomended.
2009-10-16Finally added the substream class, and added getByPath (for properties) andMike Buland
getChildByPath (for groups) to the TafGroup class.
2009-09-15Minor change, added a new constructor for lists that lets you append the firstMike Buland
element to the list in the constructor.
2009-09-09Fixed a unit test, and added some fixes and new queue functions to list, fuck itMike Buland
it's easier when they're in list.
2009-09-04Wow, I should check this in the other containers. I should have known better,Mike Buland
but I made the Formatter << operator for Lists use the List with the value as the template parameter, and no others, so if you actually tune the list, you can't format it anymore. This has been fixed.
2009-08-28Corrected the iterator in Bu::Hash, and fixed the erase function in Bu::List,Mike Buland
there are a couple more fine points to touch on in Bu::Hash::iterator, I should go through and review the whole thing at this point (iterator-wise).
2009-08-21Added loads of debugging to sharedcore, we're sure it's to blame, but not asMike Buland
much anymore, for the fishtrax issues, maybe.
2009-08-20Added a typedef to the cache, and most list manipulation functions now returnMike Buland
a reference to the list, so you can chain appends and whatnot.
2009-08-14Massive freaking changes!!!Mike Buland
Bu:;SharedCore actually is in and works, it's well tested and there are no known memory leaks or violations as of now. It's been applied to Bu::List and Bu::FBasicString so far. This means that everything using Bu::List and Bu::FBasicString will be much, much faster and use considerably less memory. I still have plans to apply this to Hash and maybe a couple of other core classes.
2009-08-09Really, just a lot of documenting.Mike Buland
2009-04-17More updates to the Bu::List::iterator and Bu::List::const_iterator, assignemntMike Buland
now works correctly, and they don't worry about which list they're assosiated with. Better errors too.
2009-04-16Hey, the list code is better, also, I fixed some stuff in socket (theMike Buland
isBlocking function was backward), and fastcgi is actually working now! Also added comparison functions to FString.
2009-04-06david - some odd problems with old gccDavid
2009-02-27Fixed a bug in Bu::FString, it wouldn't concatinate properly when using the +Mike Buland
operator and the left-hand-side FString was const. Also, added a formatter << operator for Bu::List. The other containers should get their own formatter << operators soon too.
2009-02-08So many updates. I recommend using the new FString iterators instead of directMike Buland
indexing. It is now many times faster, and requires less overhead. Also, more stuff iterator related in every class. More on that later.
2009-01-24Added some append and prepend functions and operators to Bu::List, now you canMike Buland
append one list to another and the like. Also, wow, I found a bug that's been around for ages, I guess we don't copy hash tables often. The interesting thing is that it actually worked, it copied but it would include any data that had been deleted in the old hash table but not reclaimed yet and insert it as new data. Usually the key had been completely destroyed (like with a string) so it came out as keyed to blank string. So in cases like that, all deleted keys would collapse into one deleted key in the new hash table.
2009-01-12The Bu::List::end() function was returning a null pointer instead of aMike Buland
properly formed iterator. That caused a few problems. I think it's all set now though.
2008-12-20All of the basic, core workings of the Cache are complete, and tested. EvenMike Buland
added some more tests and whatnot. A lot happened, but I can't remember everything. Also, Bu::File reports errors in more error cases.
2008-09-24Ok, now all the warnings are gone (except for those coming from nids, but that'sMike Buland
ok, nids is still in flux, they'll be gone soon).
2008-06-07Fixed the bugs in the archive system. Both the List container and FString hadMike Buland
inconsistancies when archiving compared to their STL counterparts, they are now compatible on every system I can imagine. Also, List now uses a long instead of an int for sizing, and the other containers should as well. I'll check on that later. That means that the files will all be larger on a 64 bit system, but such is life. The same thing happens when you use STL classes. There may be other inconsistancies down the road, we'll see.
2008-04-28Apparently there were a number of things that weren't strict ISO C++, the newMike Buland
version of gcc complained about them, none of these changes will break backward compatibility, so I fixed them. I added more docs too, it seems.
2008-02-20Applied an update from Hash to Set (they're basically the same logic/code, inMike Buland
fact, I need to get in there and change all the comments and exceptions in Set to refer to Set and not Hash). Util has the functors in it that are shared now, and List actually uses those functors for it's insertSorted function, that thing has come in so handy.
2008-02-07Just updated the copyright date.Mike Buland
2007-11-15david - adding license tag to the top of all header filesDavid
2007-10-03Nothing about function. I added a bunch of docs and re-arranged a bunch ofMike Buland
the existing docs. Taking advantage of some of the cooler extra features of doxygen I've started writing extra how-to pages covering working with sections of the library. Also, I started grouping the classes by function so they show up on the Modules page together, very cute.
2007-09-05This commit has part of an Array class, I'm just not sure I really need itMike Buland
right now. Unfortunately it doesn't compile right now, if you want to build this version, just delete array. On the other hand, Bu::List now has enqueue/dequeue functions.
2007-08-23The list now supports insertSorted, and the UnitSuite supports more options,Mike Buland
including StopOnError and handling/reporting of external exceptions.
2007-07-11*whimper*Mike Buland
2007-07-11Maybe?Mike Buland
2007-07-11I guess I fixed some list stuff...Mike Buland
2007-07-07david - added a return to a non-void functionDavid
2007-07-06Ok, some more fixes to the iterators in Bu::ListMike Buland
2007-07-06Fixed an annoying bug in Bu::List::erase that caused you to not be able to callMike Buland
lThings.erase( lThings.begin() );
2007-07-02The list has an isEmpty funcion, and the socket may have a new read functionMike Buland
soon, check it out...later...
2007-06-28Many minor changes, hopefully the header fixes will keep future header macroMike Buland
conflicts from happening. And, from now on, other projects should do -Ilibbu++ not -Ilibbu++/src so we can get ready for an installed version of libbu++.
2007-06-18david - did more documentingDavid
2007-06-18david - writing code documentation...David
2007-06-06The TafReader is more general and much nicer, and about to actually constructMike Buland
nodes, that part will be exciting. I also fixed some stuff and added some new functions to List, it now has first() and last() which work just like std::list front() and back(), I may add compatibility functions later...
2007-06-05Added a basic ringbuffer, it should be nice and quick, but may be bad to useMike Buland
with objects at the moment, still contemplating that one...
2007-05-17Lots of cool new stuff, the Server class actually works for everything exceptMike Buland
actually interacting with clients, and the Client class is almost there, except that it doesn't really do anything yet.
2007-05-15SPtr is now Bu::ified, and the List class now acts the way we think const listsMike Buland
should act, you can't change anything in there. I'm still debating changing the const_iterator to a constIterator, or something else that's more Bu::worthy. Heh, the namespaces are funny...ok...I'm really tired.
2007-05-11Added a list template class, seems to work pretty well for now, I may haveMike Buland
forgotten proper cleanup in the deconstructor, but besides that you can do almost everything you need. I'll make a slist/stack next, probably with the same basic code, just a different structure (not doubley-linked). The xml system from old-libbu++ is almost completely converted, I was going to re-write it, but this seemed easier at first, it may not have been, we'll see. It almost parses everything again, and almost outputs again, and it does use streams now. The FString is partway to doing minimum chunk allocations, so that adding single-characters will be really fast up to the minimum chunk size. I also figured out how to add this optimization without any extra variables taking up space, and it's optional in the template, which is cool. You can specify the size of the blocks (default 256 bytes), if it's 0 then they'll be like the old FString, 1 chunk per operation. The next FString update should be allowing efficient removal from the begining of the string by faking it, and simply moving a secondary base pointer ahead, and then optimizing appends after that fact to simply move the existing data around if you shouldn't have to re-allocate (alla FlexBuf). The final fun addition that I'm planning is a simple switch in the template (boolean) that will switch an FString into a thread-safe mode without changing the interface or anything that you can do with them at all. It may increasing memory usage, but they should still be better than std::strings, and totally thread-safe. The best part of that is that if it's done with a boolean template parameter and if statements that only test that parameter controlling flow, the code that you don't want (threadsafe/non-threadsafe) won't be included at all post-optimization.
2007-04-03Ok, no code is left in src, it's all in src/old. We'll gradually move code backMike Buland
into src as it's fixed and re-org'd. This includes tests, which, I may write a unit test system into libbu++ just to make my life easier.
2006-05-01libbu++ is finally laid out the way it should be, trunk, branches, and tags.Mike Buland