Improved documentation
git-svn-id: file:///srv/devel/repo-conversion/nusu@14 d2e56fa2-650e-0410-a79f-9358c0239efd
This commit is contained in:
parent
0008304d64
commit
88390bc38d
|
@ -144,6 +144,10 @@
|
||||||
<XNAUseContentPipeline>false</XNAUseContentPipeline>
|
<XNAUseContentPipeline>false</XNAUseContentPipeline>
|
||||||
<Name>ObservedProgression</Name>
|
<Name>ObservedProgression</Name>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Source\Tracking\ProgressionTracker.cs">
|
||||||
|
<XNAUseContentPipeline>false</XNAUseContentPipeline>
|
||||||
|
<Name>ProgressionTracker</Name>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Source\Tracking\SetProgression.cs">
|
<Compile Include="Source\Tracking\SetProgression.cs">
|
||||||
<XNAUseContentPipeline>false</XNAUseContentPipeline>
|
<XNAUseContentPipeline>false</XNAUseContentPipeline>
|
||||||
<Name>SetProgression</Name>
|
<Name>SetProgression</Name>
|
||||||
|
|
|
@ -6,13 +6,29 @@ using System.Threading;
|
||||||
|
|
||||||
namespace Nuclex.Support.Collections {
|
namespace Nuclex.Support.Collections {
|
||||||
|
|
||||||
/// <summary>Collection transforming the contents of another collection.</summary>
|
/// <summary>Collection that transforms the contents of another collection.</summary>
|
||||||
/// <typeparam name="ContainedItemType">
|
/// <typeparam name="ContainedItemType">
|
||||||
/// Type of the items contained in the wrapped collection.
|
/// Type of the items contained in the wrapped collection.
|
||||||
/// </typeparam>
|
/// </typeparam>
|
||||||
/// <typeparam name="ExposedItemType">
|
/// <typeparam name="ExposedItemType">
|
||||||
/// Type this collection exposes its items as.
|
/// Type this collection exposes its items as.
|
||||||
/// </typeparam>
|
/// </typeparam>
|
||||||
|
/// <remarks>
|
||||||
|
/// <para>
|
||||||
|
/// This collection is useful if you want to expose the objects of an arbitrary
|
||||||
|
/// collection under a different type. It can be used, for example, to construct
|
||||||
|
/// wrappers for the items in a collection on-the-fly, eliminating the need to
|
||||||
|
/// manage the wrappers in parallel to the real items and improving performance
|
||||||
|
/// by only constructing a wrapper when an item is actually requested.
|
||||||
|
/// </para>
|
||||||
|
/// <para>
|
||||||
|
/// Another common use would be if you have a private collection of a non-public
|
||||||
|
/// type that's derived from some publicly visible type. By using this collection,
|
||||||
|
/// you can return the items under the publicly visible type while still having
|
||||||
|
/// your private collection under the non-public type, eliminating the need to
|
||||||
|
/// downcast each time you need to access elements of the non-public type.
|
||||||
|
/// </para>
|
||||||
|
/// </remarks>
|
||||||
public abstract class TransformingReadOnlyCollection<ContainedItemType, ExposedItemType> :
|
public abstract class TransformingReadOnlyCollection<ContainedItemType, ExposedItemType> :
|
||||||
IList<ExposedItemType>, IList {
|
IList<ExposedItemType>, IList {
|
||||||
|
|
||||||
|
@ -241,23 +257,6 @@ namespace Nuclex.Support.Collections {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected abstract ExposedItemType Transform(ContainedItemType item);
|
protected abstract ExposedItemType Transform(ContainedItemType item);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Determines whether the object is compatible to the collection's data type.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="value">Object to check for compatibility.</param>
|
|
||||||
/// <returns>
|
|
||||||
/// True if the object is compatible to the collection's data type;
|
|
||||||
/// otherwise false.
|
|
||||||
/// </returns>
|
|
||||||
private static bool IsCompatibleObject(object value) {
|
|
||||||
if(!(value is ExposedItemType)) {
|
|
||||||
if((value != null) || typeof(ExposedItemType).IsValueType) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region IList<ExposedItemType> Members
|
#region IList<ExposedItemType> Members
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -8,7 +8,15 @@ namespace Nuclex.Support.Tracking {
|
||||||
public abstract class Operation : Progression {
|
public abstract class Operation : Progression {
|
||||||
|
|
||||||
/// <summary>Executes the operation</summary>
|
/// <summary>Executes the operation</summary>
|
||||||
public abstract void Execute();
|
public abstract void Start();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Executes the operation synchronously, blocking the calling thread
|
||||||
|
/// </summary>
|
||||||
|
public virtual void Execute() {
|
||||||
|
Start();
|
||||||
|
WaitHandle.WaitOne();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
17
Source/Tracking/ProgressionTracker.cs
Normal file
17
Source/Tracking/ProgressionTracker.cs
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Nuclex.Support.Tracking {
|
||||||
|
/*
|
||||||
|
public abstract class ProgressionTracker {
|
||||||
|
|
||||||
|
public void Track() {}
|
||||||
|
|
||||||
|
protected virtual void OnStartTracking();
|
||||||
|
protected virtual void OnEndTracking();
|
||||||
|
protected virtual void OnProgressUpdated();
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
} // namespace Nuclex.Support.Tracking
|
Loading…
Reference in New Issue
Block a user