Commit Graph

326 Commits

Author SHA1 Message Date
Markus Ewald
d5293d8cb9 Made Semaphore usable on the XBox 360
git-svn-id: file:///srv/devel/repo-conversion/nusu@181 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-10-05 19:43:04 +00:00
Markus Ewald
9669adcab5 Improved documentation for the AffineThreadPool class
git-svn-id: file:///srv/devel/repo-conversion/nusu@180 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-09-27 10:48:38 +00:00
Markus Ewald
3c10f05589 Re-added the default exception handler which will now re-throw the exception, thereby mimicking the behavior of .NET's ThreadPool; wrote unit test to verify the default exception handler is working
git-svn-id: file:///srv/devel/repo-conversion/nusu@179 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-09-18 21:14:27 +00:00
Markus Ewald
273eb9885c AffineThreadPool.CpuCores is now called AffineThreadPool.Processors because this is the term used throughout the .NET framework for the same concept
git-svn-id: file:///srv/devel/repo-conversion/nusu@178 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-09-18 20:38:55 +00:00
Markus Ewald
874fe0a9e4 Found the synchronization problem in the affine thread pool - the auto reset event was being set twice before even a single thread pool thread made it through the WaitOne() - fixed by using a semaphore; implemented a semaphore that should work in the XBox 360; wrote unit tests for said semaphore; added messages to the affine thread pool's unit tests to make debugging easier
git-svn-id: file:///srv/devel/repo-conversion/nusu@177 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-09-18 20:06:09 +00:00
Markus Ewald
09247541f2 Removed the AssertionDelegate stuff and added an UnhandledException delegate to the ThreadPool - maybe I'll turn this into an event analogous to Application.ThreadException; removed the EmptyQueue method which was a flawed concept anyway (especially the disposing of state objects!); rewrote the unit tests to work with the new and improved AffineThreadPool class - there's one test that fails when run through NCover, indicating some synchronization problem that I have yet to track down!
git-svn-id: file:///srv/devel/repo-conversion/nusu@176 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-09-17 19:50:30 +00:00
Markus Ewald
7a7e71d0c3 Fixed XBox 360 compilation error
git-svn-id: file:///srv/devel/repo-conversion/nusu@175 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-09-16 20:07:36 +00:00
Markus Ewald
e74955b161 The AffineThreadPool class now also tries to create CPU-affine threads on the full .NET framework (which uses P/Invoke and tries to lock a managed thread to a system thread, probably needs some work for Mono)
git-svn-id: file:///srv/devel/repo-conversion/nusu@174 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-09-15 21:17:34 +00:00
Markus Ewald
05e4aebaac Replaced the affine thread pool with a less elegant implementation that works on the XBox 360
git-svn-id: file:///srv/devel/repo-conversion/nusu@173 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-09-15 20:03:19 +00:00
Markus Ewald
316e2c379a Added custom CPU core-affine thread pool implementation (which doesn't work on the XBox 360 because Monitor.Wait() and Monitor.Pulse() are not supported - but the code is so nice I want to capture this state in Subversion :D)
git-svn-id: file:///srv/devel/repo-conversion/nusu@172 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-09-15 19:39:08 +00:00
Markus Ewald
6ef2fdb789 Fixed a typo; fixed a bug in the plug-in library that would see generic types deriving from a required base class as suitable whereas they cannot be instantiated without a generic argument; added unit tests that reproduce the errors
git-svn-id: file:///srv/devel/repo-conversion/nusu@171 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-09-01 19:11:19 +00:00
Markus Ewald
35b1ca742d OperationQueue now attempts to prevent deep call stack nesting levels by looping when an Operation fired its AsyncEnded event synchronously; the OperationQueue's current operation index is now handled using the Interlocked methods, fixing a possible thread safety issue
git-svn-id: file:///srv/devel/repo-conversion/nusu@170 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-08-28 20:27:15 +00:00
Markus Ewald
2472c892fb Added a note about an unexplained exception that happened one time whilst executing the unit tests
git-svn-id: file:///srv/devel/repo-conversion/nusu@169 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-08-05 21:25:28 +00:00
Markus Ewald
88b89dea19 Fixed another compilation error that was causing the XBox 360 build to fail because .NET is missing the Math.DivRem() method on the XBox 360
git-svn-id: file:///srv/devel/repo-conversion/nusu@168 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-21 20:47:32 +00:00
Markus Ewald
d91dc70146 Fixed deque compilation error in release builds (missing #if..#endif around a place where a debug-only field was used)
git-svn-id: file:///srv/devel/repo-conversion/nusu@167 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-21 20:42:07 +00:00
Markus Ewald
9ec6546f70 Added out-of-sync check for the Deque enumerator; added unit test for the out-of-sync check
git-svn-id: file:///srv/devel/repo-conversion/nusu@166 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-14 21:52:40 +00:00
Markus Ewald
a56da772d4 Added missing CPL statements
git-svn-id: file:///srv/devel/repo-conversion/nusu@165 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-14 21:32:44 +00:00
Markus Ewald
0b23b1f7c4 lastBlockCount is called lastBlockEndIndex again (anyone got a better term - it's an index one past the last entry, not a count); implemented the CopyTo() method; added unit tests for the CopyTo() method
git-svn-id: file:///srv/devel/repo-conversion/nusu@164 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-14 21:08:10 +00:00
Markus Ewald
3ee5fdfc67 The deque class now fully supports the IList<> and IList interfaces (with the exception of CopyTo() and CopyToArray() which are not implemented yet); implemented a Clear() method; the deque enumerator is now fully functioning (but still missing an out-of-sync check); moved IndexOf() into its own file; wrote several additional unit tests to verify all the new interface methods are working and to keep test coverage at 100%
git-svn-id: file:///srv/devel/repo-conversion/nusu@163 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-14 20:15:34 +00:00
Markus Ewald
a817f52406 Fixed an ugly bug in the IndexOf() method; achieved 100% test coverage for the deque code so far
git-svn-id: file:///srv/devel/repo-conversion/nusu@162 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-13 21:17:09 +00:00
Markus Ewald
7885e86836 The deque's RemoveAt() method now shifts the objects in the direction that produces the least amount of work
git-svn-id: file:///srv/devel/repo-conversion/nusu@161 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-13 20:22:59 +00:00
Markus Ewald
58c3254260 Implemented more efficient Insert() method for the deque; split RemoveAt() into left-shifting and right-shifting specializations (right-shifting still is a copy of the left-shifting one, will fix it soon); improved unit tests to catch any and all border cases; made the IndexOf() method workable; wrote unit tests for the IndexOf() method; moved removal and insertion functions into the own sub-files to avoid having huge source files
git-svn-id: file:///srv/devel/repo-conversion/nusu@160 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-13 19:34:27 +00:00
Markus Ewald
ed62fa85f2 Implemented deque Insert() and RemoveAt() methods with fixed shifting of all items to the right for now - still have to extend the code to shift items to the closest end; added more unit tests to achieve 100% test coverage for the code
git-svn-id: file:///srv/devel/repo-conversion/nusu@159 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-11 19:55:59 +00:00
Markus Ewald
ff44edcdf1 Began implementing a block-allocating Deque class similar to C++'s std::deque - insertion and removal at both ends already working
git-svn-id: file:///srv/devel/repo-conversion/nusu@158 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-07-10 18:42:23 +00:00
Markus Ewald
74bf351727 Changed all remaining COMPACTFRAMEWORK constants around serialization code to NO_SERIALIZATION
git-svn-id: file:///srv/devel/repo-conversion/nusu@157 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-26 20:17:59 +00:00
Markus Ewald
8f16d09c8a Fixed compilation error on XBox 360
git-svn-id: file:///srv/devel/repo-conversion/nusu@156 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-25 19:36:18 +00:00
Markus Ewald
5d36825fc8 Attempt to fix a possible bug in the generic time source class which could potentially attempt to construct an instance of System.DateTime with an invalid tick count
git-svn-id: file:///srv/devel/repo-conversion/nusu@155 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-24 20:24:21 +00:00
Markus Ewald
839d46ecf1 The CommandLine class didn't construct command lines with empty arguments correctly (these need to be passed as empty quotes to be recognizable as an argument), fixed; added unit tests that exposes this bug; some minor cosmetic fixes
git-svn-id: file:///srv/devel/repo-conversion/nusu@154 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-24 19:20:26 +00:00
Markus Ewald
ce9a6bc932 Added a unit tests that reproduces the bug fixed in the previous commit
git-svn-id: file:///srv/devel/repo-conversion/nusu@153 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-22 18:54:12 +00:00
Markus Ewald
f8adca9e17 Fixed a glaring bug in the Scheduler causing errors when the scheduler's last item in the queue is cancelled
git-svn-id: file:///srv/devel/repo-conversion/nusu@152 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-22 18:14:45 +00:00
Markus Ewald
b38284d372 The unlimited Wait() test still didn't produce 100% coverage - somehow the thread overtook the code creating it - added a Sleep(1) to fix this...
git-svn-id: file:///srv/devel/repo-conversion/nusu@151 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-19 19:36:25 +00:00
Markus Ewald
128feac03e Reduced the likelihood of the unlimited wait test for the transaction class resulting in a code coverage of less than 100%
git-svn-id: file:///srv/devel/repo-conversion/nusu@150 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-17 21:07:34 +00:00
Markus Ewald
4fd22afcc0 Fixed two small typos
git-svn-id: file:///srv/devel/repo-conversion/nusu@149 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-15 20:15:43 +00:00
Markus Ewald
6d7f4d11af Minor cosmetic fix in comment
git-svn-id: file:///srv/devel/repo-conversion/nusu@148 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-09 19:49:55 +00:00
Markus Ewald
d6ddf04f58 On very quickly scheduled recurrent notifications, it was still possible for the wait time to become negative due to the passage of time - now the scheduler will only use the WaitOne() method when the remaining time until notification is positive
git-svn-id: file:///srv/devel/repo-conversion/nusu@147 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-09 19:47:30 +00:00
Markus Ewald
6b8362d57d Fixed a nasty bug that would make the scheduler queue notifications using their delay time as absolute notification time, causing negative numbers to be passed to WaitOne(); updated unit test to expose this problem if it happens
git-svn-id: file:///srv/devel/repo-conversion/nusu@146 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-09 19:41:38 +00:00
Markus Ewald
a6f7749121 Moved the checkForTimeAdjustment() method in the generic time source behind the WaitOne() call because that's the most likely point for a date/time adjustment will have occurred at; WindowsTimeSource now exists on the XBox 360 as well, but will throw in its constructor and report Available as false (this simplifies things in other places); Scheduler class is fully working and 100% testable with simulated time (instead of waiting for scheduled notifications to be delivered in real time, which would make testing slow); added unit tests for Scheduler class and reached 100% coverage
git-svn-id: file:///srv/devel/repo-conversion/nusu@145 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-09 19:28:11 +00:00
Markus Ewald
4b9002b520 Renamed DefaultTimeSource to GenericTimeSource; the generic time source will now detect when the system date/time is adjusted; made some progress on the Scheduler implementation; wrote some unit tests for the Scheduler class
git-svn-id: file:///srv/devel/repo-conversion/nusu@144 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-08 20:32:14 +00:00
Markus Ewald
2426868cce Improved comments in various places; disabled all classes in the 'Services' namespace, including the type listers; added scheduler class which will act sort of like the cron daemon on unix machines; defined a time source interface so I can manually advance time instead of waiting in the unit tests; created two time sources, a generic one for all platforms and a windows specific one that will notice when the system time is adjusted
git-svn-id: file:///srv/devel/repo-conversion/nusu@143 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-06-04 19:32:15 +00:00
Markus Ewald
10d6533b50 Added an obvious, simple and important optimization: when Transaction.Wait() is called, the transaction will not create a WaitHandle if it has already ended
git-svn-id: file:///srv/devel/repo-conversion/nusu@142 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-05-28 19:55:48 +00:00
Markus Ewald
0ada9998e2 Renamed AssemblyTypeLister to MultiAssemblyTypeLister because otherwise, the name implies that it's a type lister for a single assembly; renamed PredefinedTypeLister to ExplicitTypeLister which is more intuitive; disabled all service manager code unless ENABLE_SERVICEMANAGER is defined (while it's under development); improved documentation for the multi assembly type lister; removed resolveContract() delegate and generic overloads
git-svn-id: file:///srv/devel/repo-conversion/nusu@141 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-05-28 19:50:30 +00:00
Markus Ewald
c9d9810c28 Added prototype factory - a factory which created instances by cloning a prototype instance; redesigned the service manager to query types from an ITypeLister interface instead of tightly coupling it with the PluginRepository class; added type listers that list all assemblies in an app domain, in a PluginRepository and in a predefined list; renamed the IProgressTrackingService to IProgressCollectingService to make it perfectly clear which service is for which purpose; added Instancing.None to disallow the service manager from providing a certain contract; added CPL headers where they were missing
git-svn-id: file:///srv/devel/repo-conversion/nusu@140 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-05-27 19:55:06 +00:00
Markus Ewald
4e2beb71b8 Removed ConcreteType property from IAbstractFactory<> interface (it was a really strange decision to add it in the first place, luckily it hasn't crept anywhere so far); provided a non-generic abstract factory interface; the factories returned by the factory employer now implement the non-generic factory interface
git-svn-id: file:///srv/devel/repo-conversion/nusu@139 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-05-27 19:51:54 +00:00
Markus Ewald
41dcfa34d0 Added prototype code for an inversion-of-control container and a progress tracking service; moved XmlHelper class from Nuclex.UserInterface to Nuclex.Support; Nuclex.Support now uses the .NET Framework's own AssemblyLoadEventArgs class if it is compiled for the full framework; fixed a bug in the Request class that would cause exceptions to not be reported if Join() was called on a Request<x> was casted to a plain Request
git-svn-id: file:///srv/devel/repo-conversion/nusu@138 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-05-20 20:14:21 +00:00
Markus Ewald
d0fe47239e Replaced all ExpectedExceptionAttributes with the new Assert.Throws<>() method to work around a compatibility issue between TeamCity 4.5 and NUnit 2.5 Final
git-svn-id: file:///srv/devel/repo-conversion/nusu@137 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-05-07 19:36:27 +00:00
Markus Ewald
06749b9cbb Converted AssertHelperTest from using the ExpectedExceptionAttribute to Assert.Throws<>() - let's see if this makes TeamCity happy
git-svn-id: file:///srv/devel/repo-conversion/nusu@136 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-05-07 19:07:28 +00:00
Markus Ewald
d845b08a91 IObservableCollection was internal - fixed
git-svn-id: file:///srv/devel/repo-conversion/nusu@135 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-05-06 18:42:08 +00:00
Markus Ewald
7e9e0e2bf1 Made code in OperationQueue more readable; added new class PartialStream which wraps a segment of a larger stream as if it was a separate stream, allowing access to certain regions of a stream to be prohibited and headers of a stream to be cut off without requiring a lengthy copy operation
git-svn-id: file:///srv/devel/repo-conversion/nusu@134 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-05-05 19:31:05 +00:00
Markus Ewald
1c317b3f66 Moved RingMemoryStream class from the Collections namespace to the IO namespace
git-svn-id: file:///srv/devel/repo-conversion/nusu@133 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-04-28 20:44:36 +00:00
Markus Ewald
f2280629b9 The command line class can now also be used to build a command line (for example, to pass it to another program); removed dead code from the command line class
git-svn-id: file:///srv/devel/repo-conversion/nusu@132 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-04-23 20:23:23 +00:00
Markus Ewald
66b4a762cf Added a class for chaining together multiple System.IO.Stream instances into a single stream; minor improvements to docs; improved an exception error message in the StringSegment class
git-svn-id: file:///srv/devel/repo-conversion/nusu@131 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-04-22 18:55:59 +00:00
Markus Ewald
a2331b95c1 Removed the old command line parser since its replacement is fully functional by now; the CommandLine class now provides a HasArgument() method for convenience; added experimental parsing for pre-split command lines (as provided by .NET's Main() method) and disabled it because it turned out to be a bad idea
git-svn-id: file:///srv/devel/repo-conversion/nusu@130 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-04-15 19:54:01 +00:00
Markus Ewald
47b0039137 Reactivated and fixed the command line parser; command line parser now creates a value on too many option initiators (like "//test" or "---test"); renamed CommandLine.Option to CommandLine.Argument; command line parser now uses the CommandLine.Argument class for all arguments (this enables interpreters to be build that understand spaced arguments because the order is kept intact); quoted value no longer construct an argument with a raw string that doesn't contain the quotes; achieved 100% test coverage
git-svn-id: file:///srv/devel/repo-conversion/nusu@129 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-04-14 20:25:56 +00:00
Markus Ewald
6d2b39255f Updated code to match current coding guidelines
git-svn-id: file:///srv/devel/repo-conversion/nusu@128 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-04-08 19:28:31 +00:00
Markus Ewald
23c1b1587a Minor code reformat in command line parser; fixed Copy & Paste error in comments for exception unit test classes
git-svn-id: file:///srv/devel/repo-conversion/nusu@127 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-04-03 19:19:10 +00:00
Markus Ewald
46ec063abd Added missing comment
git-svn-id: file:///srv/devel/repo-conversion/nusu@126 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-04-01 21:19:09 +00:00
Markus Ewald
dcf47768e5 Fixed a bug in the Transaction class that would skip on the AsyncEnded subscriber callbacks if a subscriber unsubscribed during the callback (either in the callback thread or asynchronously at the same time); wrote a unit test that highlights the bug
git-svn-id: file:///srv/devel/repo-conversion/nusu@125 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-04-01 20:32:22 +00:00
Markus Ewald
96061c688c Added another unit test for the transaction group
git-svn-id: file:///srv/devel/repo-conversion/nusu@124 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-03-30 20:08:12 +00:00
Markus Ewald
889a47db6d Added new interface IObservableCollection which can be used to find out whether a collection can be observed, even if it is only published by its generic .NET interface
git-svn-id: file:///srv/devel/repo-conversion/nusu@123 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-03-19 19:34:11 +00:00
Markus Ewald
743fc9cc09 Fixed some typos in the comments; added weak collection which stores objects by weak reference; moved UNITTEST #if to the top of the files for some unit tests
git-svn-id: file:///srv/devel/repo-conversion/nusu@122 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-03-11 19:20:28 +00:00
Markus Ewald
190e32ee56 Fixed a serious bug in the TransactionGroup which would cause the TransactionGroup to crash when all the transactions it gets passed in the constructor were in the ended state; fixed another serious bug that would occur when transactions reached the ended state during the constructor; wrote unit tests that reproduced those bugs
git-svn-id: file:///srv/devel/repo-conversion/nusu@121 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-02-26 19:47:41 +00:00
Markus Ewald
a2f53639d4 Removed redundant 'System.' in front of an Attribute class
git-svn-id: file:///srv/devel/repo-conversion/nusu@120 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-02-18 19:21:44 +00:00
Markus Ewald
a3de5b041c Fixed some minor deviations from the coding conventions in the ProgressTracker class
git-svn-id: file:///srv/devel/repo-conversion/nusu@119 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-02-01 20:54:01 +00:00
Markus Ewald
1f1faac82a Fixed a typo
git-svn-id: file:///srv/devel/repo-conversion/nusu@118 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-01-26 20:06:41 +00:00
Markus Ewald
b90ff1c78b Added new class ObservableDictionary to the collection class library; 100% test coverage for the new ObservableDictionary class; fixed some minor issues with the code of ObservableCollection and ReadOnlyDictionary
git-svn-id: file:///srv/devel/repo-conversion/nusu@117 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-01-26 20:05:32 +00:00
Markus Ewald
2ab3b22c60 Fixed failing unit tests on Mono; used CollectionAssert.AreEquivalent() instead of CollectionAssert.AreEqual() since the order of items in a Dictionary is unspecified and Mono makes use of this allowance; fixed one serious bug that should have been caught by the .NET 2.0 unit tests: the enumeration of ReadOnlyDictionary via ICollection should return DictionaryEntry[] and not KeyValuePair<>[]
git-svn-id: file:///srv/devel/repo-conversion/nusu@115 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-01-13 20:00:13 +00:00
Markus Ewald
8dc15e8515 Upgraded Nuclex.Support to NUnit 2.5 Beta 1
git-svn-id: file:///srv/devel/repo-conversion/nusu@114 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-01-13 19:30:33 +00:00
Markus Ewald
0a483b4d44 Made Nuclex.Support compileable on the XBox 360; added new XNA 3.0 project to compile Nuclex.Support on the XBox 360; added my own AssemblyLoadEventArgs implementation since the XBox 360 XNA framework doesn't provide it; other minor fixes so Nuclex.Support can cope with the XBox 360 XNA framework
git-svn-id: file:///srv/devel/repo-conversion/nusu@113 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-01-13 18:50:52 +00:00
Markus Ewald
8f6616f79a AssertHelperTest.TestAlmostEqualWithDoubles() was testing the same code twice - fixed; made use of Assert.AreSame() instead of manually calling object.ReferenceEquals() in the SharedTest class; fixed documentation referring to the custom WeakReference as the System.WeakReference class
git-svn-id: file:///srv/devel/repo-conversion/nusu@112 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-01-08 20:14:14 +00:00
Markus Ewald
6eb49ed0d2 Updated copyright statement to include the year 2009 =); finally decided to make some of the NUnit assert helper methods public and include it in Nuclex.Support (yes, that means those methods won't be there in a build with unit testing disabled, a compromise accepted now)
git-svn-id: file:///srv/devel/repo-conversion/nusu@111 d2e56fa2-650e-0410-a79f-9358c0239efd
2009-01-07 19:05:29 +00:00
Markus Ewald
14274a9460 Added some more unit tests to verify that NextPowerOfTwo() selects the next power of two when the argument is just one increment above an even power of two
git-svn-id: file:///srv/devel/repo-conversion/nusu@110 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-14 18:08:44 +00:00
Markus Ewald
3731fc42ae Documented what an 'ulp' is supposed to be in the FloatHelper class :)
git-svn-id: file:///srv/devel/repo-conversion/nusu@109 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-14 18:05:14 +00:00
Markus Ewald
8923f2512a Disabled the command line parser for now to prevent anyone from using the broken code
git-svn-id: file:///srv/devel/repo-conversion/nusu@108 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-11 20:19:29 +00:00
Markus Ewald
9c40abe10a Completed the command line parser, then decided while adding result validation to the unit tests that the parser should be greedy (and accept option initiators within option names) - I don't like the way the parser code turned out anyway, so I'll rewrite soon
git-svn-id: file:///srv/devel/repo-conversion/nusu@107 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-11 20:15:21 +00:00
Markus Ewald
ffba112786 Wrote more unit tests for the new command line parser; actually implemented a good part of the new command line parser; wrote one more test to show that the old command line parser is broken
git-svn-id: file:///srv/devel/repo-conversion/nusu@106 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-10 19:26:25 +00:00
Markus Ewald
f0d76f988f Disabled the old CommandLineParser; started writing a new command line parser from scratch because I didn't manage to find a sane implementation on the internet; test coverage for the whole of Nuclex.Support is now 100.0%
git-svn-id: file:///srv/devel/repo-conversion/nusu@105 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-09 20:55:34 +00:00
Markus Ewald
447fe2aea7 Changed file name of IAbstractFactory interface to match with conventions; refactored the assembly loading code into a separate class using an interface, this allows unit testing to simulate assembly loading errors easily and might help the actual application to act on assembly load errors if so required; all classes in the Nuclex.Support.Plugins namespace now have 100% test coverage
git-svn-id: file:///srv/devel/repo-conversion/nusu@104 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-09 19:41:43 +00:00
Markus Ewald
88b51ef0fa Eliminated warnings that still came up when compiling with the mono C# compiler; all classes in the Nuclex.Support.Scheduling namespace now have 100% test coverage
git-svn-id: file:///srv/devel/repo-conversion/nusu@103 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-07 19:36:29 +00:00
Markus Ewald
00caebf7e9 Achieved 100% test coverage for all classes in the Nuclex.Support.Tracking namespace; wrote unit tests for the AbortedException class
git-svn-id: file:///srv/devel/repo-conversion/nusu@102 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-07 19:01:43 +00:00
Markus Ewald
e785fdf57d Fixed a critical threading bug in the weighted transaction observation wrapper; ProgressTracker not has 100% test coverage; wrote even more unit tests for the ProgressTracker
git-svn-id: file:///srv/devel/repo-conversion/nusu@101 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-05 19:28:39 +00:00
Markus Ewald
8c5f2d45f7 Renamed Waitable to Transaction (Progression -> Waitable -> Transaction -- might it be that this concept is no crispy enough and should be revisited? I think so!); increased test coverage for lots of classes in the tracking namespace, all but 3 are now 100% covered; eliminated redundant ProgressUpdate events from the ProgressTracker and adjusted unit tests so progress update events that re-report the current progress are optional; added a new idea for a replacement of the broken (quality-wise, at least) command line parser
git-svn-id: file:///srv/devel/repo-conversion/nusu@100 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-12-03 18:58:20 +00:00
Markus Ewald
b39f8de155 Increased test coverage for the command line parser (and then decided the thing is broken beyond repair and needs a rewrite -- as if that was any surprise given the original code is from CodeProject); achieved 100% test coverage for the factory employer, instance employer, employer, no plugin attribute and abstract factory classes in the Plugins namespace; achieved some test coverage for the PluginRepository class (the uncovered sections are quite hard to stimulate since they involve exceptions during assembly load attempts)
git-svn-id: file:///srv/devel/repo-conversion/nusu@99 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-11-28 19:34:43 +00:00
Markus Ewald
ecb36e9ce3 Fixed a comment in read only list sources; achieved 100% test coverage for the read only dictionary wrapper - that makes 100% test coverage for all collection classes; implemented serialization into the read only dictionary class to perfectly emulate the behavior of the .NET framework dictionary
git-svn-id: file:///srv/devel/repo-conversion/nusu@98 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-11-27 20:36:51 +00:00
Markus Ewald
5c90646327 Achieved 100% test coverage for the TransformingReadOnlyCollection and ReadOnlyList classes
git-svn-id: file:///srv/devel/repo-conversion/nusu@97 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-11-27 19:40:43 +00:00
Markus Ewald
195ba1df30 Reformatted the comments in the RingMemoryStream class so my favorite IDE (Visual Studio) will not destroy indentation on auto-formatting anymore; achieved 100% test coverage for the RingMemoryStream and ReverseComparer classes
git-svn-id: file:///srv/devel/repo-conversion/nusu@96 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-11-27 19:04:09 +00:00
Markus Ewald
de7c28fa84 achieved 100% test coverage for the read only collection wrapper; optimized the indexer of the license key class; increased test coverage for the license key class to 100%
git-svn-id: file:///srv/devel/repo-conversion/nusu@95 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-11-27 19:02:48 +00:00
Markus Ewald
c43bfd47c8 Increased test coverage for all collection classes up to the priority queue to 100%; SetParent() is no longer 'protected internal' as internal is sufficient in this case (.NET 'protected internal' is less restrictive than 'protected' or 'internal' alone); parenting collection now unsets parent for items that are being replaced; priority queue version check for enumerators (to protected against modification of the collection) now only happens in debug mode
git-svn-id: file:///srv/devel/repo-conversion/nusu@94 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-11-27 18:56:08 +00:00
Markus Ewald
cb0355193d Nailed the unit test coverage for all classes in the root namespace at 100%; fixed ugly german comment in ReadOnlyDictionary; moved AbstractFactory interface for FactoryEmployer in Nuclex.Support.Plugins into its own file; wrote unit tests for the PluginHelper, Shared, StringSegment and WeakReference classes
git-svn-id: file:///srv/devel/repo-conversion/nusu@93 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-11-26 19:15:36 +00:00
Markus Ewald
ddff1d8353 Moved Shared.cs from Nuclex.Math to Nuclex.Support because this class can be quite useful in other locations as well; added CPL copyright header to all files in Nuclex.Math; fixed copyright date in AssemblyInfo.cs of Nuclex.Math and Nuclex.Support
git-svn-id: file:///srv/devel/repo-conversion/nusu@92 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-10-22 20:45:13 +00:00
Markus Ewald
1cc45237ba Fixed error in XML comment; added some more unit tests for the PathHelper class to make sure it works with Linux/Unix paths
git-svn-id: file:///srv/devel/repo-conversion/nusu@91 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-09-26 19:24:44 +00:00
Markus Ewald
b0e76b4800 Fixed 3 compiler warnings that were occurring in Nuclex.Support; minor improvements to the documentation
git-svn-id: file:///srv/devel/repo-conversion/nusu@90 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-08-14 21:14:40 +00:00
Markus Ewald
f2bacc5411 Converted all <see paramref="" /> tags into <paramref name="" /> tags as this seems to be the standard method of referring to parameters in .NET XML documentation
git-svn-id: file:///srv/devel/repo-conversion/nusu@89 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-08-07 20:01:08 +00:00
Markus Ewald
7446b6bc9b Improved documentation in several places; renamed 'Support' class in Nuclex.Support.Plugins to 'PluginHelper' to match the established conventions; provided better error messages for the plugin loading methods in the PluginRepository class
git-svn-id: file:///srv/devel/repo-conversion/nusu@88 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-08-07 19:57:20 +00:00
Markus Ewald
b0026fcdd6 Fixed some compiler warnings; removed the "Mixed Platforms" build configuration from the solution
git-svn-id: file:///srv/devel/repo-conversion/nusu@87 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-08-04 19:46:37 +00:00
Markus Ewald
86d915f9f0 Moved packing algorithms, spatial partitioning system and serialization helpers from Nuclex.Support to Nuclex.Game; minor improvements in documentation; AbortedException no longer derives from ApplicationException; added document that gives an overview of several R-Tree splitting techniques I found on the 'net
git-svn-id: file:///srv/devel/repo-conversion/nusu@86 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-08-01 20:55:43 +00:00
Markus Ewald
fd2f072c2d Fixed the compile error because of the wrongly named unit test class; wrote unit tests for the IndexNotOfAny() and LastIndexNotOfAny() methods; fixed a glaring bug in the IndexNotOfAny() and LastIndexNotOfAny() methods that would result in wrong results if more than one character was searched for; made the unit test for the string helper a nested item in the Visual Studio project
git-svn-id: file:///srv/devel/repo-conversion/nusu@85 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-07-30 18:32:35 +00:00
Markus Ewald
df948d2eab Added CPL license header to files where it was amiss; added StringHelper class with IndexNotOfAny() and LastIndexNotOfAny() (inverted variants of the IndexOfAny() methods in the .NET framework)
git-svn-id: file:///srv/devel/repo-conversion/nusu@84 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-07-28 19:58:15 +00:00
Markus Ewald
221a40e57f Fixed missing comment for IntegerHelper; OutOfSpaceException (for Packing algorithms) now derives from Exception instead of ApplicationException (deriving from ApplicationException is no longer recommended practice for .NET)
git-svn-id: file:///srv/devel/repo-conversion/nusu@83 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-07-22 19:35:20 +00:00
Markus Ewald
313b006f83 Added license tags in the files where they were amiss; added IntegerHelper class with a method to quickly determine the next power of 2 to any number
git-svn-id: file:///srv/devel/repo-conversion/nusu@82 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-07-17 21:19:41 +00:00
Markus Ewald
a666885598 Some more minor documentation improvements
git-svn-id: file:///srv/devel/repo-conversion/nusu@81 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-07-17 20:51:35 +00:00
Markus Ewald
2cc7b27b0c Added read-only collection wrappers for IDictionary<>, IList<> and ICollection<> since the classes provided by the .NET framework in System.Collections.ObjectModel are incomplete and inconsistent (eg. System.Collections.ObjectModel.ReadOnlyCollection wraps an IList<>!); minor improvements to documentation; added ReverseComparer for inverting the results of an existing IComparer<> or simply comparing values in inverted order
git-svn-id: file:///srv/devel/repo-conversion/nusu@80 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-07-17 20:44:40 +00:00
Markus Ewald
f5eefc6765 Added Peek() method to the priority queue classes (it's a method and not a property because it can potentially fail with an exception and a property might lead someone to not think about this possibility)
git-svn-id: file:///srv/devel/repo-conversion/nusu@79 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-07-15 20:36:16 +00:00
Markus Ewald
7bff8c5d52 All remaining references to the old name of the waitable class, 'progression' changed to 'waitable'; QueueOperation renamed to OperationQueue; SetProgression renamed to WaitableGroup; improved documentation in various places
git-svn-id: file:///srv/devel/repo-conversion/nusu@78 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-06-11 20:28:08 +00:00
Markus Ewald
df860b8e57 Applied planned changes to the Waitable class; Waitable class now has a Wait() method that can be used instead of the WaitHandle; publicized Waitable's members to deriving classes so they don't have to duplicate them when doing a custom implementation; virtualized all Methods to allow a custom Waitable implementation to completely provide its own methods of Waiting, determining the Ended state and registering to the AsyncEnded event
git-svn-id: file:///srv/devel/repo-conversion/nusu@77 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-06-11 20:06:23 +00:00
Markus Ewald
26365177dd Documented some more possible design changes to the request framework; Waitable now manages the list of 'Ended' event subscribers itself and triggers the callback if the Waitable instance had already ended at the time of subscription
git-svn-id: file:///srv/devel/repo-conversion/nusu@76 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-06-05 19:26:36 +00:00
Markus Ewald
e0cf91a0a4 Fixed documentation of Waitable and Request classes; wrote down some ideas to improve the request framework
git-svn-id: file:///srv/devel/repo-conversion/nusu@75 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-06-05 19:19:00 +00:00
Markus Ewald
73ef5de576 Fixed dumb misspelled comment
git-svn-id: file:///srv/devel/repo-conversion/nusu@74 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-06-04 20:04:32 +00:00
Markus Ewald
bf5c8d4e19 Added memory reinterpretation functions for int, long, float and double
git-svn-id: file:///srv/devel/repo-conversion/nusu@73 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-05-28 19:11:18 +00:00
Markus Ewald
1132bc5681 Added helper class for floating point operations; implemented advanced floating point comparison
git-svn-id: file:///srv/devel/repo-conversion/nusu@72 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-05-26 20:04:33 +00:00
Markus Ewald
9228d15f69 Updated copyright message to include the year 2008; upgraded projects to XNA Game Studio 3.0 (CTP 2008-05); added missing copyright tag to CommandLineParser unit test; upgraded obsolete methods in Nuclex.UserInterface to use the new XNA 2.0 / 3.0 content loading/unloading methods instead
git-svn-id: file:///srv/devel/repo-conversion/nusu@71 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-05-14 19:30:05 +00:00
Markus Ewald
4567b296ae Upgraded projects to XNA Game Studio 3.0 (CTP 2008-05); marked LoadGraphicsContent() and UnloadGraphicsContent() methods as obsolete in the custom Drawable and DrawableComponent classes; updated copyright date to include the year 2008; replaced the reference to the self-compiled SevenZip.dll with Lzma#.dll, which is the name of official binary for the same library; fixed formatting in various places
git-svn-id: file:///srv/devel/repo-conversion/nusu@70 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-05-14 19:06:06 +00:00
Markus Ewald
26cb8c08af Fixed errors introduced into the unit tests by the lengthy rename operation earlier this day
git-svn-id: file:///srv/devel/repo-conversion/nusu@68 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-03-27 18:45:09 +00:00
Markus Ewald
8ef451a731 Updated ProgressReporterForm to reflect the latest changes to the Tracking framework; renamed WeightedProgression.cs to WeightedWaitable.cs in order to match the previous name changed of the class contained therein; improved documentation of the Camera class
git-svn-id: file:///srv/devel/repo-conversion/nusu@67 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-03-27 18:34:17 +00:00
Markus Ewald
b5ea9e0d70 Renamed ProgressUpdateEventArgs.cs to ProgressReportEventArgs.cs to reflect the previous name change of the class in that file
git-svn-id: file:///srv/devel/repo-conversion/nusu@66 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-03-27 17:34:54 +00:00
Markus Ewald
432ab888b9 Renamed ProgressionTracker to ProgressTracker; renamed most classes with 'Progression' in their name to use 'Waitable' instead; some minor documentation fixes
git-svn-id: file:///srv/devel/repo-conversion/nusu@65 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-03-26 21:20:52 +00:00
Markus Ewald
7dbfc3c422 Renamed ProgressUpdated event to ProgressChanged in order to conform with the status report naming convention; removed progress reporting from the Progression class; moved progress reporting into its own interface which is now optional to implement for any background task; renamed Progression to Waitable since it no longer has anything to do with progress; fixed unit tests
git-svn-id: file:///srv/devel/repo-conversion/nusu@64 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-03-26 21:03:49 +00:00
Markus Ewald
1161ef8f25 Trimmed down the Request class and provided it with a clear way to pass results to the user of the request
git-svn-id: file:///srv/devel/repo-conversion/nusu@63 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-03-26 20:20:38 +00:00
Markus Ewald
c21ba759cc Renamed FailableOperation to Request, this is a much shorter name that better represents the concept implemented by the class
git-svn-id: file:///srv/devel/repo-conversion/nusu@62 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-03-26 19:52:28 +00:00
Markus Ewald
533cbba3c5 Moved the failure handling of asynchronous processes from the Operation class into a new intermediate class, FailableProgression; renamed Begin() to Start() in Operation to keep it more in line with System.Threading.Thread; renamed End() method to Join() in the new FailableProgression class for the same reason; improved documentation
git-svn-id: file:///srv/devel/repo-conversion/nusu@61 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-02-07 21:25:34 +00:00
Markus Ewald
fd76346296 Fixed issue in PluginHost introduced by the renaming of the 'LoadedPlugins' property to 'LoadedAssemblies'; fixed an XML comment which was crefing to the wrong class name
git-svn-id: file:///srv/devel/repo-conversion/nusu@60 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-01-07 18:16:34 +00:00
Markus Ewald
d59753b98d Moved all contents of the Nuclex.Plugins project into the Nuclex.Support project; added copyright notices to all files imported from Nuclex.Plugins; updated copyright span year in all copyright notices; minor documentation improvements
git-svn-id: file:///srv/devel/repo-conversion/nusu@59 d2e56fa2-650e-0410-a79f-9358c0239efd
2008-01-07 18:04:02 +00:00
Markus Ewald
4829c8f8d5 Renamed Gui to Screen in the UserInterface library; improved documentation in ProgressionTracker
git-svn-id: file:///srv/devel/repo-conversion/nusu@58 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-12-20 19:15:33 +00:00
Markus Ewald
57d4c734b6 Upgraded all projects to XNA 2.0; project files now use (x86) instead of (PC) to indicate an x86 build (more logical and readily associated with the build platform); moved all text files into their project's documents folder; fixed any build configuration inconsistencies encountered along the way; renamed Nuclex.Graphics.Effects to Nuclex.Graphics.SpecialEffects to avoid confusion with the XNA 'Effect' class
git-svn-id: file:///srv/devel/repo-conversion/nusu@56 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-12-14 20:43:34 +00:00
Markus Ewald
b1e97f48bf Improved documentation in various places; added UML design concepts for UserInterface library; created unit tests for the PathHelper class; Gui now has width and height to allow usage of unified coordinates; renamed InputProcessor to InputReceiver
git-svn-id: file:///srv/devel/repo-conversion/nusu@55 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-11-02 21:36:15 +00:00
Markus Ewald
7812f88aca Some minor documentation and formatting fixes
git-svn-id: file:///srv/devel/repo-conversion/nusu@53 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-09-28 21:31:13 +00:00
Markus Ewald
8962835029 Added serialization methods for the Curve class from the XNA framework; upgraded project to NUnit 2.4.3
git-svn-id: file:///srv/devel/repo-conversion/nusu@52 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-09-26 20:12:20 +00:00
Markus Ewald
932fdcb6f7 Command line parser now also collects loose arguments like typically used to specify file names or commands in a console application; marginally improved documentation in various places
git-svn-id: file:///srv/devel/repo-conversion/nusu@51 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-09-25 19:37:45 +00:00
Markus Ewald
93092637cf Added a command line parser that extracts command line arguments and assignments for console-based utility programs
git-svn-id: file:///srv/devel/repo-conversion/nusu@50 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-09-24 20:16:14 +00:00
Markus Ewald
504d96eb0a Added a new class PathHelper with a method that converts absolute paths into relative paths
git-svn-id: file:///srv/devel/repo-conversion/nusu@49 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-09-24 19:18:33 +00:00
Markus Ewald
e281b5cbb3 Added status reporting interface to provide a generalized interface for background processes to report their current status; tried to improve documentation of the Progression and RectanglePacker classes
git-svn-id: file:///srv/devel/repo-conversion/nusu@48 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-09-23 20:06:26 +00:00
Markus Ewald
96e546c2f4 Renamed the 'Documentation' folder of all projects involved in Nuclex.FireFight to 'Documents'
git-svn-id: file:///srv/devel/repo-conversion/nusu@47 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-09-10 18:50:50 +00:00
Markus Ewald
99312edc17 Removed commented out progression start events entirely in progress tracking framework, no cases found were it would have been of use
git-svn-id: file:///srv/devel/repo-conversion/nusu@46 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-09-05 20:09:35 +00:00
Markus Ewald
c230f0ce7c Renamed UnintrusivePriorityQueue to PairPriorityQueue; Switched PairPriorityQueue to work on PriorityItemPairs instead of eating up the priority value once the item was added; PriorityQueue and PairPriorityQueue now both work on the default comparer or use a custom comparer specified in the constructor
git-svn-id: file:///srv/devel/repo-conversion/nusu@45 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-09-05 18:20:10 +00:00
Markus Ewald
4b0d3d26cc Some lesser XML documentation improvements
git-svn-id: file:///srv/devel/repo-conversion/nusu@44 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-08-31 21:24:40 +00:00
Markus Ewald
caeee49f4a Added an empty line between the license section and the using statements; fixed a wrong comment in ObservableCollection.cs
git-svn-id: file:///srv/devel/repo-conversion/nusu@43 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-24 20:15:19 +00:00
Markus Ewald
9f4751ae39 Removed AcquiringCollection because in hindsight, the design added little value and even required some workarounds to be fully usable in the classes it was intended to simplify; added mono/linux build for the assembly
git-svn-id: file:///srv/devel/repo-conversion/nusu@42 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-24 19:51:51 +00:00
Markus Ewald
cf92f22b31 Switched the parenting collection back to derive directly from the .NET Framework collection class to simplify the implementation of the DisposeItems() method; fixed some documentation errors in one of the rectangle packers
git-svn-id: file:///srv/devel/repo-conversion/nusu@41 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-19 20:02:05 +00:00
Markus Ewald
fba9d87e65 The rectangle packers now throw a proper exception when there is no more space available; Moved interface implementations of the TransformingReadOnlyCollection into a separate file to keep the main body of the class readable
git-svn-id: file:///srv/devel/repo-conversion/nusu@40 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-16 20:09:51 +00:00
Markus Ewald
acbb07d6b5 Some more unit tests; improved documentation; improve useless speed optimization of an exceptional case
git-svn-id: file:///srv/devel/repo-conversion/nusu@39 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-12 22:16:11 +00:00
Markus Ewald
81cb56f468 Fixed some possible issues in the ProgressionTracker; wrote several new NMock-assisted tests for it
git-svn-id: file:///srv/devel/repo-conversion/nusu@38 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-12 22:02:23 +00:00
Markus Ewald
ba1cee917d Redesigned the Collection framework to incorporate a more general variant of the ObservableCollection<> class; ParentingCollection class now makes use of this new inbetween class; ParentingCollection now has a cleaner way to dispose its members than the original InternalDispose() method
git-svn-id: file:///srv/devel/repo-conversion/nusu@37 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-10 19:25:18 +00:00
Markus Ewald
4933604495 Queue operation fully implemented; added small unit test for queue operation; some comment improvements in other code sections
git-svn-id: file:///srv/devel/repo-conversion/nusu@36 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-10 18:15:34 +00:00
Markus Ewald
850db0cded Fully implemented the ProgressionTracker and created some NMock-assisted unit tests for validating its proper functioning
git-svn-id: file:///srv/devel/repo-conversion/nusu@35 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-09 21:41:21 +00:00
Markus Ewald
344e5fac53 Began implementing the ProgressionTracker
git-svn-id: file:///srv/devel/repo-conversion/nusu@34 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-05 20:02:02 +00:00
Markus Ewald
46c0ac68af Found a probably good implementation for the Operation class
git-svn-id: file:///srv/devel/repo-conversion/nusu@33 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-04 19:19:48 +00:00
Markus Ewald
b73d7846d8 Made adjustments to reflect the recent name change of Nuclex.SpecialFx to Nuclex.Graphics.Effects; fixed all remaining compiler warnings
git-svn-id: file:///srv/devel/repo-conversion/nusu@32 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-02 18:54:34 +00:00
Markus Ewald
1ae0c7de63 Added an AsyncStarted event to the progression class, currently disabled for further consideration; set up the outline of a new spatial partitioning framework with an R*-Tree implementation; new AbortedException for indicating that a process was forcefully aborted
git-svn-id: file:///srv/devel/repo-conversion/nusu@31 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-07-01 19:27:40 +00:00
Markus Ewald
6d79fe3ebc Added new generic WeakReference class for typesafe weak reference usage
git-svn-id: file:///srv/devel/repo-conversion/nusu@30 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-06-18 21:25:16 +00:00
Markus Ewald
991fab9721 Added quaternion serialization; serialization methods now always work on references to improve performance; removed dead code from CygonRectanglePacker; improved commenting on Progression framework
git-svn-id: file:///srv/devel/repo-conversion/nusu@29 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-06-12 19:15:55 +00:00
Markus Ewald
979e6328fb Fixed a warning resulting from an invalid character in an XML comment; renamed findBestPlacement() to tryFindBestPlacement() which is more in sync with the conventions used by the .NET framework
git-svn-id: file:///srv/devel/repo-conversion/nusu@28 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-31 19:15:39 +00:00
Markus Ewald
d977552d8f Some minor cosmetic fixes; improved several variable names; added more commentation
git-svn-id: file:///srv/devel/repo-conversion/nusu@27 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-28 18:11:41 +00:00
Markus Ewald
02cea246b5 Removed wasted space determination code entirely - it'll be in my repository should I ever want to see it again ;)
git-svn-id: file:///srv/devel/repo-conversion/nusu@26 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-22 21:09:00 +00:00
Markus Ewald
9157bf8454 Finally disabled wasted area calculation for good in the 'cygon' packer because benchmarks show it as being counterproductive; implemented rectangle placement optimization as it is done in the original 'arevalo' packer - the C# version should now produce the exact identical results the C++ version does
git-svn-id: file:///srv/devel/repo-conversion/nusu@25 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-22 20:15:48 +00:00
Markus Ewald
dbc1da27a8 Made the scoring influence of wasted area for the "cygon" packer configurable
git-svn-id: file:///srv/devel/repo-conversion/nusu@24 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-22 17:57:20 +00:00
Markus Ewald
116fb53b0a Renamed Allocate() methods to Pack() in RectanglePacker; fixed an oversight in Nuclex.Support that made overlapping rectangles possible; reactivated wasted area calculation for 'cygon' rectangle packer
git-svn-id: file:///srv/devel/repo-conversion/nusu@23 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-21 19:04:48 +00:00
Markus Ewald
4fd0680ae7 New "Cygon" Packer is working and promptly achieved a new space efficiency record
git-svn-id: file:///srv/devel/repo-conversion/nusu@22 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-20 21:03:21 +00:00
Markus Ewald
5756ed94b3 Integration of new rectangles into silhouette data structure seems to be working properly
git-svn-id: file:///srv/devel/repo-conversion/nusu@21 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-20 20:39:09 +00:00
Markus Ewald
62d54b5795 Began rolling out a new, more effective rectangle packer; renamed the previous 'Cygon' algorithm to 'Simple' because of its simplicity
git-svn-id: file:///srv/devel/repo-conversion/nusu@20 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-16 21:27:59 +00:00
Markus Ewald
d09bb30cec Added a small rectangle packing library for optimally arranging smaller rectangles within one larger rectangle
git-svn-id: file:///srv/devel/repo-conversion/nusu@19 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-16 20:28:23 +00:00
Markus Ewald
acdea736b6 Added CPL statement in front of all source files
git-svn-id: file:///srv/devel/repo-conversion/nusu@18 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-11 21:15:35 +00:00
Markus Ewald
9268c3251f Removed reparent call from ParentingCollection.Dispose() method. If a class deriving from ParentingCollection wants to disconnect all its items in order to prevent collection elements from accessing their owner (which might have been disposed already), it can still Reparent() the collection to null manually
git-svn-id: file:///srv/devel/repo-conversion/nusu@17 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-10 19:11:28 +00:00
Markus Ewald
84324eb936 Moved events to top of class to stay conformant with coding standards
git-svn-id: file:///srv/devel/repo-conversion/nusu@16 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-09 19:17:53 +00:00
Markus Ewald
7ec11b91b9 Several small optimizations; improved XML comments; added a text file for storing general ideas about the design of Nuclex.Support
git-svn-id: file:///srv/devel/repo-conversion/nusu@15 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-08 18:42:00 +00:00
Markus Ewald
88390bc38d Improved documentation
git-svn-id: file:///srv/devel/repo-conversion/nusu@14 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-05-02 19:25:21 +00:00
Markus Ewald
0008304d64 SetProgression fully working and tested, yay!; remedied a little imperfection that would theoretically allow progressions to trigger the end even twice
git-svn-id: file:///srv/devel/repo-conversion/nusu@13 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-04-20 18:04:19 +00:00
Markus Ewald
71b6dc90a2 SetProgression partially working; wrote several unit tests using the NMock library; lots of smaller improvements to the progression classes
git-svn-id: file:///srv/devel/repo-conversion/nusu@12 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-04-19 18:18:34 +00:00
Markus Ewald
cefbc78868 Reorganized the directory structure a bit; Created a new transforming collection for exposing the types in a collection under a different interface; moved Operation and associated classes to a new namespace; Implemented the basics of the SetProgression's observation mechanics
git-svn-id: file:///srv/devel/repo-conversion/nusu@11 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-04-18 20:20:03 +00:00
Markus Ewald
f38a0bc1ea Moved licensing classes to proper namespace; rethought the progression result design (removed outcome reporting entirely); Began implementation of a progression set class for grouping progressions
git-svn-id: file:///srv/devel/repo-conversion/nusu@10 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-04-16 18:31:59 +00:00
Markus Ewald
2d145ca867 Provided a common class for observable collections similar to what the .NET Framework 3.0 offers; ParentingCollection no longer requires the parent type to be a reference type; Laid the foundation for a new progress tracking framework that can be used to drive progress bars, loading screens and such
git-svn-id: file:///srv/devel/repo-conversion/nusu@9 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-04-16 17:18:16 +00:00
Markus Ewald
5aef46ca7a Various conformity issues to coding guidelines fixed; documented all exceptions being thrown
git-svn-id: file:///srv/devel/repo-conversion/nusu@7 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-04-02 18:48:28 +00:00
Markus Ewald
f4b2062e19 Added license key class that had been lingering in the code snippets sections of my homepage for months now
git-svn-id: file:///srv/devel/repo-conversion/nusu@6 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-03-28 22:19:34 +00:00
Markus Ewald
c346a07ab0 Added serialization methods for vectors and matrices
git-svn-id: file:///srv/devel/repo-conversion/nusu@5 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-03-20 18:34:34 +00:00
Markus Ewald
d813756eed Fully implemented the priority collection; Created a wrapper for non-intrusive priority collections that keep the priority external to the object; wrote unit tests for both
git-svn-id: file:///srv/devel/repo-conversion/nusu@4 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-03-05 18:22:31 +00:00
Markus Ewald
d339e00bce Made the Dispose() method of the parenting collection public (for now only?); found another, better, priority queue implementation to use for reference
git-svn-id: file:///srv/devel/repo-conversion/nusu@3 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-03-01 21:24:19 +00:00
Markus Ewald
fb7dba1c2c Renamed project file to stay consistent with the current conventions; corrected the copy & paste error in the BinarySerializer's unit test comments; added temporary build files to svn:ignore list
git-svn-id: file:///srv/devel/repo-conversion/nusu@2 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-02-28 20:55:21 +00:00
Markus Ewald
ce8df64be5 Imported newly created Nuclex.Support library which contains various supporting classes not related to a specific topic
git-svn-id: file:///srv/devel/repo-conversion/nusu@1 d2e56fa2-650e-0410-a79f-9358c0239efd
2007-02-28 20:20:50 +00:00