<?xml version="1.0"?>
<doc>
<assembly>
<name>Pfz</name>
</assembly>
<members>
<member name="T:Pfz.DisplayNameAttribute">
<summary>
Allows you to se a different display name for an enum value,
or simple put a DisplayName to fields, properties and other things.
</summary>
</member>
<member name="M:Pfz.DisplayNameAttribute.#ctor(System.String)">
<summary>
Creates the display name attribute setting it's value.
</summary>
<param name="displayName">The displayName to use for this enum.</param>
</member>
<member name="P:Pfz.DisplayNameAttribute.DisplayName">
<summary>
Gets the display name for the enum value.
</summary>
</member>
<member name="T:Pfz.Caching.WeakDelegateSet">
<summary>
This class acts as a hashset for delegates, but allows the
Targets to be collected, working as if the Delegates where
WeakDelegates.
The original idea was to make this a generic class, but it
is not possible to use Delegate as a constraint (where T: Delegate).
To use, implement your event like:
private WeakDelegateSet fMyEvent = new WeakDelegateSet();
public event EventHandler MyEvent
{
add
{
fMyEvent.Add(value);
}
remove
{
fMyEvent.Remove(value);
}
And when you want to invoke MyEvent, you call:
fMyEvent.Invoke(this, EventArgs.Empty);
}
</summary>
</member>
<member name="T:Pfz.Threading.ThreadSafeDisposable">
<summary>
This class is useful if you need to implement the dispose pattern
in a thread-safe manner.
It guarantees that dispose will be called only once, even if many
threads try to call Dispose at once. In your code, you must lock
DisposeLock, check if the object is disposed and call anything that
must be guaranteed to run before dispose inside the lock block.
</summary>
</member>
<member name="T:Pfz.IAdvancedDisposable">
<summary>
Interface for disposable objects that can inform they are already
disposed without throwing an exception.
</summary>
</member>
<member name="M:Pfz.IAdvancedDisposable.CheckUndisposed">
<summary>
Checks if this object was disposed. If it was, throws an exception.
</summary>
</member>
<member name="P:Pfz.IAdvancedDisposable.WasDisposed">
<summary>
Gets a value indicating if the object was already disposed.
</summary>
</member>
<member name="M:Pfz.Threading.ThreadSafeDisposable.Finalize">
<summary>
Calls Dispose(false);
</summary>
</member>
<member name="M:Pfz.Threading.ThreadSafeDisposable.Dispose">
<summary>
Calls Dispose(true) to release all resources.
Guarantees that only a single call to Dispose(true) is done
even if this method is invoked multiple times or by many
different threads at the same time.
</summary>
</member>
<member name="M:Pfz.Threading.ThreadSafeDisposable.Dispose(System.Boolean)">
<summary>
Implement this method to release all resources used by this object.
</summary>
<param name="disposing">
This parameter is true if it was called by a user call to Dispose(),
and false if it was called by a destructor. If false, you don't need
to release managed resources (in general, you don't need to set any
variables to null or even reference other objects, only freeing
"unsafe" pointers).
</param>
</member>
<member name="M:Pfz.Threading.ThreadSafeDisposable.CheckUndisposed">
<summary>
Checks if the objects is disposed. If it is, throws an
ObjectDisposedException. Call this as the first method inside a
AbortSafe.Lock
(
DisposeLock,
delegate
{
CheckUndisposed();
... your protected code here ...
}
);
or simple call it without any lock if you only want to throw
an exception if the object is already disposed but such a call
is read-only.
</summary>
</member>
<member name="P:Pfz.Threading.ThreadSafeDisposable.WasDisposed">
<summary>
Returns true if a call to Dispose was already done (or still in
progress in another thread). If it is true, you can't continue
to use your object.
</summary>
</member>
<member name="P:Pfz.Threading.ThreadSafeDisposable.DisposeLock">
<summary>
This is the lock used during dispose. You may want to lock
some of your code against dispose using this lock.
The preferred way to use it is: AbortSafe.Lock
(
DisposeLock,
delegate
{
CheckUndisposed();
... your protected code here ...
}
);
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegateSet.#ctor">
<summary>
Creates a new WeakDelegateSet.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegateSet.Dispose(System.Boolean)">
<summary>
Unregisters the WeakDelegateSet from GCUtils.Collected.
</summary>
<param name="disposing"></param>
</member>
<member name="M:Pfz.Caching.WeakDelegateSet.Clear">
<summary>
Clears the delegate set.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegateSet.Add(System.Delegate)">
<summary>
Adds a new handler to the delegate set.
</summary>
<param name="handler">The handler to add.</param>
<returns>true if the delegate was new to the set, false otherwise.</returns>
</member>
<member name="M:Pfz.Caching.WeakDelegateSet.Remove(System.Delegate)">
<summary>
Removes a handler from the delegate set.
</summary>
<param name="handler">The handler to remove.</param>
<returns>true if the item was in the set, false otherwise.</returns>
</member>
<member name="M:Pfz.Caching.WeakDelegateSet.Invoke(System.Object[])">
<summary>
Invokes all the handlers in the set with the given parameters.
</summary>
<param name="parameters">The parameters to be used in the invoke of each handler.</param>
</member>
<member name="T:Pfz.Extensions.DictionaryExtensions.PfzDictionaryExtensions">
<summary>
Adds some methods to the Dictionary generic class.
</summary>
</member>
<member name="M:Pfz.Extensions.DictionaryExtensions.PfzDictionaryExtensions.GetValueOrDefault``2(System.Collections.Generic.IDictionary{``0,``1},``0)">
<summary>
Gets a value by it's key or, if it doesn't exist, returns the default
value for TValue.
</summary>
</member>
<member name="M:Pfz.Extensions.DictionaryExtensions.PfzDictionaryExtensions.GetOrCreateValue``2(System.Collections.Generic.IDictionary{``0,``1},``0)">
<summary>
Tries to get a value by it's key. If it doesn't exist, creates a new
one, adds it to the dicionary and returns it.
</summary>
</member>
<member name="M:Pfz.Extensions.DictionaryExtensions.PfzDictionaryExtensions.AsReadOnly``2(System.Collections.Generic.IDictionary{``0,``1})">
<summary>
Gets a read-only wrapper over this dictionary.
</summary>
</member>
<member name="T:Pfz.Collections.IFastEnumerator">
<summary>
Interface for fast enumerations.
Specially when using remoting objects, calling MoveNext() to then
get the Value doubles the number of requests. For class types,
using a GetNext() where nulls means the end is faster.
</summary>
</member>
<member name="M:Pfz.Collections.IFastEnumerator.GetNext">
<summary>
Gets the next value or null if there are no more values.
</summary>
<returns>The next value or null if there are no more values.</returns>
</member>
<member name="T:Pfz.Collections.IFastEnumerator`1">
<summary>
A typed version of FastEnumerator. Only reference types are valid.
</summary>
<typeparam name="T">The type of the items to enumerate.</typeparam>
</member>
<member name="M:Pfz.Collections.IFastEnumerator`1.GetNext">
<summary>
Gets the next value, or null if there are no more values.
</summary>
<returns>The next value, or null if there are no more values.</returns>
</member>
<member name="T:Pfz.Extensions.AttributeExtensions.PfzAttributeExtensions">
<summary>
Adds some useful methods to the MemberInfo and Type types to
work easily with attributes (Generics).
</summary>
</member>
<member name="M:Pfz.Extensions.AttributeExtensions.PfzAttributeExtensions.GetCustomAttributes``1(System.Reflection.MemberInfo)">
<summary>
Gets the attributes of the specified type, and return them typed.
</summary>
<typeparam name="T">The type of the attribute to find and to return.</typeparam>
<param name="memberInfo">The memberInfo where the attributes will be searched.</param>
<returns>A typed array with the attributes found.</returns>
</member>
<member name="M:Pfz.Extensions.AttributeExtensions.PfzAttributeExtensions.GetCustomAttributes``1(System.Type,System.Boolean)">
<summary>
Gets the attributes of the specified type, and return them typed.
</summary>
<typeparam name="T">The type of the attribute to find and to return.</typeparam>
<param name="type">The type that can contains the attributes that will be searched.</param>
<param name="inherit">If true search the attribute in base classes, but only if the attribute supports inheritance.</param>
<returns>A typed array with the attributes found.</returns>
</member>
<member name="M:Pfz.Extensions.AttributeExtensions.PfzAttributeExtensions.GetCustomAttribute``1(System.Reflection.MemberInfo)">
<summary>
Gets an attribute of the specified type, or null.
This is useful when the attribute has AllowMultiple=false, but
don't use it if the class can have more than one attribute of such
type, as this method throws an exception when this happens.
</summary>
<typeparam name="T">The type of the parameter to find.</typeparam>
<param name="memberInfo">The member info to search the attribute.</param>
<returns>The found attribute or null.</returns>
</member>
<member name="M:Pfz.Extensions.AttributeExtensions.PfzAttributeExtensions.GetCustomAttribute``1(System.Type,System.Boolean)">
<summary>
Gets an attribute of the specified type, or null.
This is useful when the attribute has AllowMultiple=false, but
don't use it if the class can have more than one attribute of such
type, as this method throws an exception when this happens.
</summary>
<typeparam name="T">The type of the parameter to find.</typeparam>
<param name="type">The type to search the attribute.</param>
<param name="inherit">true to search in base classes for attributes that support inheritance.</param>
<returns>The found attribute or null.</returns>
</member>
<member name="M:Pfz.Extensions.AttributeExtensions.PfzAttributeExtensions.ContainsCustomAttribute``1(System.Reflection.MemberInfo)">
<summary>
Verifies if a member contains an specific custom attribute.
</summary>
<typeparam name="T">The type of the attribute to check for existance.</typeparam>
<param name="member">The member in which to find search for attribute.</param>
<returns>true if the member constains the attribute, false otherwise.</returns>
</member>
<member name="M:Pfz.Extensions.AttributeExtensions.PfzAttributeExtensions.ContainsCustomAttribute``1(System.Type,System.Boolean)">
<summary>
Verifies if a type contains an specific custom attribute.
</summary>
<typeparam name="T">The type of the attribute to check for existance.</typeparam>
<param name="type">The member in which to find search for attribute.</param>
<param name="inherit">true to search in base classes for attributes that support inheritance.</param>
<returns>true if the member constains the attribute, false otherwise.</returns>
</member>
<member name="T:Pfz.Extensions.FastEnumeratorExtensions.PfzFastEnumeratorExtensions">
<summary>
Adds the AsEnumerable method to a IFastEnumerator, so you can do a foreach
over it.
</summary>
</member>
<member name="M:Pfz.Extensions.FastEnumeratorExtensions.PfzFastEnumeratorExtensions.AsEnumerable``1(Pfz.Collections.IFastEnumerator{``0})">
<summary>
Converts a fast enumerator to a custom IEnumerable (generic version).
</summary>
</member>
<member name="M:Pfz.Extensions.FastEnumeratorExtensions.PfzFastEnumeratorExtensions.AsEnumerable(Pfz.Collections.IFastEnumerator)">
<summary>
Converts a fast enumerator to a custom IEnumerable (non-generic version).
</summary>
</member>
<member name="T:Pfz.Caching.WeakDictionary`2">
<summary>
This is a dictionary that allow values to be collected.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDictionary`2.#ctor">
<summary>
Creates the dictionary.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDictionary`2.Dispose(System.Boolean)">
<summary>
Frees all handles used to know if an item was collected or not.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDictionary`2.Clear">
<summary>
Clears all items in this dictionary.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDictionary`2.Add(`0,`1)">
<summary>
Adds an item to this dictionary. Throws an exception if an item
with the same key already exists.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDictionary`2.Remove(`0)">
<summary>
Removes an item with the given key from the dictionary.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDictionary`2.ContainsKey(`0)">
<summary>
Gets a value indicating if an item with the specified key exists.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDictionary`2.GetEnumerator">
<summary>
Gets an enumerator with all key/value pairs that exist in
this dictionary.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDictionary`2.ToList">
<summary>
Gets a list with all non-collected key/value pairs.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDictionary`2.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Creates the dictionary from serialization info.
Actually, it does not load anything, as if everything was
collected.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDictionary`2.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
It is here to be inherited. Actually, this does not
add anything, as if everything was collected.
</summary>
</member>
<member name="P:Pfz.Caching.WeakDictionary`2.Count">
<summary>
Gets the number of items in this dictionary.
</summary>
</member>
<member name="P:Pfz.Caching.WeakDictionary`2.Item(`0)">
<summary>
Gets or sets a value for the specified key.
Returns null if the item does not exist. The indexer, when
used as an IDictionary throws an exception when the item does
not exist.
</summary>
</member>
<member name="P:Pfz.Caching.WeakDictionary`2.Keys">
<summary>
Gets the Keys that exist in this dictionary.
</summary>
</member>
<member name="P:Pfz.Caching.WeakDictionary`2.Values">
<summary>
Gets the values that exist in this dictionary.
</summary>
</member>
<member name="T:Pfz.Threading.TicksOrIncrement">
<summary>
Class that returns the value of DateTime.Now.Ticks when GetValue is called
but also guarantees that two calls will generate different values, even if
they are done one just after the other.
</summary>
</member>
<member name="M:Pfz.Threading.TicksOrIncrement.GetNext">
<summary>
Gets a new DateTime.Now.Ticks value or a random incremented value if
this is a call done at the same microsecond of the last one.
</summary>
</member>
<member name="T:Pfz.Date">
<summary>
Class that represents a Date without Time.
</summary>
</member>
<member name="M:Pfz.Date.Parse(System.String)">
<summary>
Parses the given text as a Date using the default format.
</summary>
</member>
<member name="M:Pfz.Date.#ctor(System.Int32,System.Int32,System.Int32)">
<summary>
Creates a new date by the specified year, month and day.
</summary>
</member>
<member name="M:Pfz.Date.#ctor(System.DateTime)">
<summary>
Creates a new date from a DateTime. The time information is lost.
</summary>
</member>
<member name="M:Pfz.Date.#ctor(System.Int32)">
<summary>
Creates a Date object from an integer value previously got from
the AsInteger property of another Date.
</summary>
</member>
<member name="M:Pfz.Date.op_Equality(Pfz.Date,Pfz.Date)">
<summary>
Compares if this two dates are equal.
</summary>
</member>
<member name="M:Pfz.Date.op_Inequality(Pfz.Date,Pfz.Date)">
<summary>
Compares if two dates are different.
</summary>
</member>
<member name="M:Pfz.Date.op_LessThan(Pfz.Date,Pfz.Date)">
<summary>
Compares if the first date is less than the second date.
</summary>
</member>
<member name="M:Pfz.Date.op_GreaterThan(Pfz.Date,Pfz.Date)">
<summary>
Compares if the first date is greater than the second.
</summary>
</member>
<member name="M:Pfz.Date.op_LessThanOrEqual(Pfz.Date,Pfz.Date)">
<summary>
Compares if the first date is less than or equal to the second.
</summary>
</member>
<member name="M:Pfz.Date.op_GreaterThanOrEqual(Pfz.Date,Pfz.Date)">
<summary>
Compares if the first date is greater than or equal to the second.
</summary>
</member>
<member name="M:Pfz.Date.op_Implicit(Pfz.Date)~System.DateTime">
<summary>
Implicit convertion to DateTime object.
</summary>
</member>
<member name="M:Pfz.Date.op_Explicit(System.DateTime)~Pfz.Date">
<summary>
Explicit cast from DateTime to Date value.
</summary>
</member>
<member name="M:Pfz.Date.GetHashCode">
<summary>
Gets the HashCode of the AsInteger value of this date.
</summary>
</member>
<member name="M:Pfz.Date.Equals(System.Object)">
<summary>
Compares if this Date equals another object.
</summary>
</member>
<member name="M:Pfz.Date.Equals(Pfz.Date)">
<summary>
Returns true if this Date equals another Date.
</summary>
</member>
<member name="M:Pfz.Date.ToString">
<summary>
Converts this Date to a string representation.
</summary>
</member>
<member name="M:Pfz.Date.CompareTo(Pfz.Date)">
<summary>
Compares this date to another date.
</summary>
</member>
<member name="P:Pfz.Date.DefaultFormat">
<summary>
Gets or sets the default format used to display Date
strings.
</summary>
</member>
<member name="P:Pfz.Date.Today">
<summary>
Gets Today as a Date object.
</summary>
</member>
<member name="P:Pfz.Date.Year">
<summary>
Gets the Year.
</summary>
</member>
<member name="P:Pfz.Date.Month">
<summary>
Gets the Month.
</summary>
</member>
<member name="P:Pfz.Date.Day">
<summary>
Gets the Day.
</summary>
</member>
<member name="P:Pfz.Date.AsInteger">
<summary>
Converts this Date value to an integer representation.
</summary>
</member>
<member name="T:Pfz.Collections.ActualValueEnumerator`1">
<summary>
This enumerator returns a "next value" every time the actual value is set, but
if many sets are done before the client is able to process them, the
intermediate values are lost, so only the "actual" one is got.
</summary>
<typeparam name="T">The type of the values.</typeparam>
</member>
<member name="M:Pfz.Collections.ActualValueEnumerator`1.Dispose(System.Boolean)">
<summary>
Only sets the event so any waiting thread is free.
</summary>
</member>
<member name="M:Pfz.Collections.ActualValueEnumerator`1.GetNext">
<summary>
Gets the next value.
</summary>
</member>
<member name="P:Pfz.Collections.ActualValueEnumerator`1.ActualValue">
<summary>
Gets or sets the actual value.
</summary>
</member>
<member name="T:Pfz.Cloneable">
<summary>
This is an abstract class that implements the ICloneable interface using
the MemberwiseClone method and then clones all ICloneable fields.
</summary>
</member>
<member name="M:Pfz.Cloneable.Clone">
<summary>
Clones this object and also all it's fields that references ICloneable objects.
</summary>
<returns>A memberwise cloned object, with all fields that are ICloneable also cloned.</returns>
</member>
<member name="T:PfzCloneable_Extensions">
<summary>
This extension class simple creates the typed Clone method to the Cloneable,
object, so you clone the object and don't need to cast it to the right type.
</summary>
</member>
<member name="M:PfzCloneable_Extensions.Clone``1(``0)">
<summary>
Clones the cloneable object and return the clone with the same type
as the original object is seen.
</summary>
<typeparam name="T">The type of the cloneable object.</typeparam>
<param name="cloneable">The object to clone.</param>
<returns>The right-typed clone.</returns>
</member>
<member name="T:Pfz.Collections.ReadOnlyDictionary`2">
<summary>
Read-only wrapper for dictionaries.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyDictionary`2.#ctor(System.Collections.Generic.IDictionary{`0,`1})">
<summary>
Creates a new read-only dictionary over an already existing
modifiable dictionary.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyDictionary`2.ContainsKey(`0)">
<summary>
Returns true if this dictionary contains the given key.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyDictionary`2.TryGetValue(`0,`1@)">
<summary>
Tries to get the value for the given key.
If there is no item with the given key, returns null.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyDictionary`2.CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)">
<summary>
Copies the key/value pairs to an array.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyDictionary`2.Contains(System.Collections.Generic.KeyValuePair{`0,`1})">
<summary>
Verifies if the given pair exists in the dictionary.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyDictionary`2.GetEnumerator">
<summary>
Gets an enumerator over all the key/value pairs in this
dictionary.
</summary>
</member>
<member name="P:Pfz.Collections.ReadOnlyDictionary`2.Keys">
<summary>
Gets the keys of the items in this dictionary.
</summary>
</member>
<member name="P:Pfz.Collections.ReadOnlyDictionary`2.Values">
<summary>
Gets the values in this dictionary.
</summary>
</member>
<member name="P:Pfz.Collections.ReadOnlyDictionary`2.Count">
<summary>
Gets the number of items in this dictionary.
</summary>
</member>
<member name="P:Pfz.Collections.ReadOnlyDictionary`2.Item(`0)">
<summary>
Gets a value by it's key.
Throws an exception if the key does not exist.
</summary>
</member>
<member name="T:Pfz.Box`1">
<summary>
A class that simple "box" any value type.
Sometimes I use this when I need to change single instances of integers and longs.
Also, this is useful to simulate any "ref" parameter, if you can't really count
with a ref parameter.
</summary>
<typeparam name="T">The type of the value to "box" inside a class.</typeparam>
</member>
<member name="M:Pfz.Box`1.#ctor">
<summary>
Default constructor.
</summary>
</member>
<member name="M:Pfz.Box`1.#ctor(`0)">
<summary>
Initializes the box with the given value.
</summary>
<param name="value">The value to initialize the box.</param>
</member>
<member name="F:Pfz.Box`1.Value">
<summary>
The boxed value. Used as a direct field so you can pass it when a ref is needed.
</summary>
</member>
<member name="M:Pfz.Box`1.Equals(System.Object)">
<summary>
Compares this box with a value or another box.
</summary>
</member>
<member name="M:Pfz.Box`1.Equals(Pfz.Box{`0})">
<summary>
Compares this box with another box.
</summary>
</member>
<member name="M:Pfz.Box`1.GetHashCode">
<summary>
Gets the hashcode of the value or, if it is null, returns 0.
</summary>
</member>
<member name="M:Pfz.Box`1.ToString">
<summary>
Gets the ToString of the value held.
</summary>
</member>
<member name="T:Pfz.Threading.AbortSafe">
<summary>
Class with methods safe from "Thread.Abort()".
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.AllowAbort">
<summary>
This method will make a thread that is running in non-abortable manner
(ie, inside a finally block) to skip the rest of the actual finally block
if an abort was requested.
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.New``1(``0@)">
<summary>
Allocates a new object using it's default constructor and sets
it's result value to the variable passed as out parameter.
This will work completelly or fail completelly in case of an
Abort call, so there is no risk of stopping in-the-middle of the work.
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.Run(System.Action)">
<summary>
Runs a code block in an AbortSafe manner.
Be careful when using this, as you must not avoid Aborts of long running
code.
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.Run(System.Action,System.Action,System.Action)">
<summary>
Runs a block of code, guaranting that:
The allocation block will not be aborted.
The finally block will be called, independent if the allocation block was
run.
The code block is the only one that could be aborted.
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.ReadAllBytes(System.String)">
<summary>
Reads all bytes from a file, avoiding errors caused from Thread.Abort().
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.WriteAllBytes(System.String,System.Byte[])">
<summary>
Writes all bytes to a file, avoiding errors caused from Aborts.
If an abort happens, the stream is closed and the file is deleted.
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.Using``1(System.Func{``0},System.Action{``0})">
<summary>
Executes the given blocks as if they where a using clause.
The first block must return a disposable object. The second one will be
the "body" executed inside the using clause.
It simulates:
using(...allocationBlock...)
{
...codeBlock...
}
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.Lock(System.Object,System.Action)">
<summary>
Locks an object and executes the given action.
The lock is abort safe, not the executed block.
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.UnabortableLock(System.Object,System.Action)">
<summary>
Locks an object and executes the given action in an unabortable manner.
Aborts will happen or before the lock acquisition, or after the full block
is executed and the lock is released.
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.ReadLock(System.Threading.ReaderWriterLockSlim,System.Action)">
<summary>
Acquires a read-lock and then runs the action.
The lock is abort safe, not the executed block.
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.UpgradeableLock(System.Threading.ReaderWriterLockSlim,System.Action)">
<summary>
Acquires an upgradeable-lock and then runs the action.
The lock is abort safe, not the action.
</summary>
</member>
<member name="M:Pfz.Threading.AbortSafe.WriteLock(System.Threading.ReaderWriterLockSlim,System.Action)">
<summary>
Acquires a write-lock and then runs the action.
The lock is abort safe, not the action.
</summary>
</member>
<member name="P:Pfz.Threading.AbortSafe.WasAbortRequested">
<summary>
Returns a value indicating if an abort was requested for this thread.
</summary>
</member>
<member name="T:Pfz.ExceptionAwareStream">
<summary>
Stream class that has a Dispose receiving an Exception as the cause
of the dispose. Calling any method after the dispose will throw a
new ObjectDisposedException with that exception as the inner exception.
</summary>
</member>
<member name="T:Pfz.IExceptionAwareDisposable">
<summary>
Interface that must be implemented by objects that are disposable
and also capables of registering the Exception that caused the Dispose.
</summary>
</member>
<member name="M:Pfz.IExceptionAwareDisposable.Dispose(System.Exception)">
<summary>
Disposes the object setting the Exception that was responsible for
it's disposal.
</summary>
</member>
<member name="P:Pfz.IExceptionAwareDisposable.DisposeException">
<summary>
Gets the Exception that caused the dispose of this object, or null.
</summary>
</member>
<member name="M:Pfz.ExceptionAwareStream.Dispose(System.Exception)">
<summary>
Disposes the stream and sets the DisposeException.
</summary>
</member>
<member name="M:Pfz.ExceptionAwareStream.Dispose(System.Boolean)">
<summary>
Implemented to guarantee that it will be executed only once.
You must reimplement DoDispose, as this method is sealed.
</summary>
</member>
<member name="M:Pfz.ExceptionAwareStream.OnDispose(System.Boolean)">
<summary>
Does the effective dispose.
</summary>
</member>
<member name="M:Pfz.ExceptionAwareStream.CheckUndisposed">
<summary>
Checks if this object was disposed. If it is, throws an exception.
</summary>
</member>
<member name="P:Pfz.ExceptionAwareStream.DisposeLock">
<summary>
Gets the lock that should be used by the object.
</summary>
</member>
<member name="P:Pfz.ExceptionAwareStream.DisposeException">
<summary>
Gets the exception that caused the Dispose, if any.
</summary>
</member>
<member name="P:Pfz.ExceptionAwareStream.WasDisposed">
<summary>
Gets a value indicating if this object was already disposed.
</summary>
</member>
<member name="T:Pfz.Collections.EnumeratorDistributor`1">
<summary>
This class is responsible for distributing a single enumerator
among many enumerator readers, considering such readers can
"loose" some of the items.
This is useful for senting, for example, web-cam frames. A high-speed
client can receive all frames, while a slow client can receive frame
1, then frame 6, frame 12... but will still receive the "most recent"
frames.
You can inherit this class the the MultiClientEnumerator themselves
if you must only send the difference between frames.
</summary>
<typeparam name="T">
The type of the item that the original enumerator returns.
</typeparam>
</member>
<member name="T:Pfz.Threading.ThreadSafeExceptionAwareDisposable">
<summary>
A ThreadSafeDisposable inheritor capable of keeping information of why
it was disposed, considering it is disposed by an exception. This is
largelly used in the Remoting framework, as some exceptions can
dispose the objects, but for the user is better to know the original
exception, not the ObjectDisposedException.
</summary>
</member>
<member name="M:Pfz.Threading.ThreadSafeExceptionAwareDisposable.Dispose(System.Exception)">
<summary>
Disposes the actual object, setting the DisposeException property.
</summary>
</member>
<member name="M:Pfz.Threading.ThreadSafeExceptionAwareDisposable.CheckUndisposed">
<summary>
New version of CheckUndisposed, which will throw the appropriate
exception instead of ObjectDisposedException if this object was
disposed by another exception.
</summary>
</member>
<member name="P:Pfz.Threading.ThreadSafeExceptionAwareDisposable.DisposeException">
<summary>
Gets the Exception that caused this object to be disposed, or null.
</summary>
</member>
<member name="M:Pfz.Collections.EnumeratorDistributor`1.#ctor(Pfz.Collections.IFastEnumerator{`0})">
<summary>
Creates a new Distributor over the given real enumerator.
</summary>
</member>
<member name="M:Pfz.Collections.EnumeratorDistributor`1.Dispose(System.Boolean)">
<summary>
Disposes the base enumerator and the clients actually connected.
</summary>
</member>
<member name="M:Pfz.Collections.EnumeratorDistributor`1.CreateClient">
<summary>
Creates a client for this enumerator.
Inheritors can initialize additional information before returning
the enumerator client to you.
</summary>
</member>
<member name="P:Pfz.Collections.EnumeratorDistributor`1.BaseEnumerator">
<summary>
Gets the BaseEnumerator used by this distributor.
</summary>
</member>
<member name="E:Pfz.Collections.EnumeratorDistributor`1.Disposed">
<summary>
Called when this object is disposed.
</summary>
</member>
<member name="P:Pfz.Collections.EnumeratorDistributor`1.ActualValue">
<summary>
Gets the Actual value without waiting.
</summary>
</member>
<member name="T:Pfz.Threading.UnlimitedThreadPool">
<summary>
This is a thread pool that, different from System.Threading.ThreadPool,
does not have a thread limit and the threads are not background while
they run. Comparing to the system ThreadPool, it is better if the
thread can enter in wait mode. This happens when one thread has a
"fast" process, but can only terminate after another thread returns.
This thread pool keep threads alive for a certain number of generations.
The default value is two. So, at the first use, it lives for one more
generation. After the second use in that generation, it is marked to
live for two generations. Subsequent uses in this generation will not
change anything. Do not use very high values, as this can cause memory
usage problems.
</summary>
</member>
<member name="M:Pfz.Threading.UnlimitedThreadPool.Run(System.Action)">
<summary>
Runs an action in another thread. Uses an existing thread if one is
available or creates a new one if none are available, so this call will
not hang if there are no available threads.
</summary>
<param name="action">The function to execute.</param>
</member>
<member name="M:Pfz.Threading.UnlimitedThreadPool.Run(System.Action{System.Object},System.Object)">
<summary>
Runs an action in another thread. Uses an existing thread if one is
available or creates a new one if none are available, so this call will
not hang if there are no available threads.
</summary>
<param name="action">The function to execute.</param>
<param name="parameter">The object passed as parameter to the action.</param>
</member>
<member name="M:Pfz.Threading.UnlimitedThreadPool.Run``1(System.Action{``0},``0)">
<summary>
Runs an action in another thread. Uses an existing thread if one is
available or creates a new one if none are available, so this call will
not hang if there are no available threads.
</summary>
<typeparam name="T">The type of the parameter.</typeparam>
<param name="action">The function to execute.</param>
<param name="parameter">The object passed as parameter to the action.</param>
</member>
<member name="P:Pfz.Threading.UnlimitedThreadPool.CollectionsToKeepAlive">
<summary>
Gets or sets the maximum number of collections to keep a Thread from this pool
alive. The default value is two.
</summary>
</member>
<member name="T:Pfz.Caching.GCUtils">
<summary>
Some methods and events to interact with garbage collection. You can
keep an object alive during the next collection or register to know
when a collection has just happened. This is useful if you don't use
WeakReferences, but know how to free memory if needed. For example,
you can do a TrimExcess to your lists to free some memory.
Caution: GC.KeepAlive keeps the object alive until that line of code,
while GCUtils.KeepAlive keeps the object alive until the next
generation.
</summary>
</member>
<member name="M:Pfz.Caching.GCUtils.KeepAlive(System.Object)">
<summary>
Keeps an object alive at the next collection. This is useful for WeakReferences as an way
to guarantee that recently used objects will not be immediatelly collected. At the next
generation, you can call KeepAlive again, making the object alive for another generation.
</summary>
<param name="item"></param>
</member>
<member name="M:Pfz.Caching.GCUtils.Expire(System.Object)">
<summary>
Expires an object. Is the opposite of KeepAlive.
</summary>
<param name="item"></param>
<returns>true if the object was in the KeepAlive list, false otherwise.</returns>
</member>
<member name="E:Pfz.Caching.GCUtils.Collected">
<summary>
This event is called after a GarbageCollection has just finished,
in another thread. As this happens after the collection has finished,
all other threads are running too, so you must guarantee that
your event is thread safe.
</summary>
</member>
<member name="T:Pfz.Caching.GCUtils.ReferenceComparer">
<summary>
Class used to compare two references.
They must point to the same instance (not an equal instance) to be
considered equal.
This also helps making comparisons faster for objects that
implement Equals.
</summary>
</member>
<member name="T:Pfz.Caching.WeakList`1">
<summary>
A list that only keeps weak-references to it's items.
Ideal if at some point you only need to do a for-each over all the
non-collected items. Use WeakHashSet if you need to remove the items
or calls Contains frequently.
</summary>
<typeparam name="T"></typeparam>
</member>
<member name="M:Pfz.Caching.WeakList`1.#ctor">
<summary>
Creates an empty weak-list.
</summary>
</member>
<member name="M:Pfz.Caching.WeakList`1.#ctor(System.Int32)">
<summary>
Creates an empty weak-list using the given minCapacity to it.
</summary>
<param name="initialCapacity">The initialCapacity of the list. The default value is 32.</param>
</member>
<member name="M:Pfz.Caching.WeakList`1.Dispose(System.Boolean)">
<summary>
Releases all handles.
</summary>
</member>
<member name="M:Pfz.Caching.WeakList`1.Clear">
<summary>
Clears all the items in the list.
</summary>
</member>
<member name="M:Pfz.Caching.WeakList`1.Add(`0)">
<summary>
Adds an item to the list.
</summary>
</member>
<member name="M:Pfz.Caching.WeakList`1.ToList">
<summary>
Gets a strong-list with all the non-collected items present
in this list.
</summary>
</member>
<member name="M:Pfz.Caching.WeakList`1.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Creates the WeakList from the serialization info. At this level,
only loads the MinCapacity.
</summary>
</member>
<member name="M:Pfz.Caching.WeakList`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Creates serialization info. At this level, only saves the
MinCapacity.
</summary>
</member>
<member name="M:Pfz.Caching.WeakList`1.GetEnumerator">
<summary>
Gets an enumerator over the non-collected items of this
list.
</summary>
</member>
<member name="P:Pfz.Caching.WeakList`1.Count">
<summary>
Gets an approximate count of the items added.
</summary>
</member>
<member name="P:Pfz.Caching.WeakList`1.Item(System.Int32)">
<summary>
Gets or sets an item at a given index.
</summary>
</member>
<member name="T:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions">
<summary>
Adds methods to use ReaderWriterLockSlim easily,
always with time-outs to avoid dead-locks.
See PfzLockConfiguration class if you want to log dead-locks.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.ReadLock(System.Threading.ReaderWriterLockSlim)">
<summary>
Acquires a read-lock using the default time-out.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.ReadLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan)">
<summary>
Acquires a read-lock, using the given time-out.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryReadLock(System.Threading.ReaderWriterLockSlim)">
<summary>
Tries to acquire a read-lock on the given object using the default timeout.
If it fails, returns null.
</summary>
<param name="lockObject">The object to lock.</param>
<returns>A disposable object to release the lock, or null.</returns>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryReadLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan)">
<summary>
Tries to acquire a read-lock on the given object using the specified timeout.
If it fails, returns null.
</summary>
<param name="lockObject">The object to lock.</param>
<param name="timeout">The timeout to try for the lock.</param>
<returns>A disposable object to release the lock, or null.</returns>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.UpgradeableLock(System.Threading.ReaderWriterLockSlim)">
<summary>
Acquires an upgradeable-lock using the default time-out.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.UpgradeableLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan)">
<summary>
Acquires an upgradeable-lock, using the given time-out.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryUpgradeableLock(System.Threading.ReaderWriterLockSlim)">
<summary>
Tries to acquire an upgradeable lock on the given object, using the default timeout.
If it fails, returns null.
</summary>
<param name="lockObject">The object to try to lock.</param>
<returns>An disposable object to release the lock, or null if the locks fails.</returns>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryUpgradeableLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan)">
<summary>
Tries to acquire an upgradeable lock on the given object, using the specified timeout.
If it fails, returns null.
</summary>
<param name="lockObject">The object to try to lock.</param>
<param name="timeout">The maximum time to wait for the lock.</param>
<returns>An disposable object to release the lock, or null if the locks fails.</returns>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.WriteLock(System.Threading.ReaderWriterLockSlim)">
<summary>
Acquires a write-lock using the default time-out.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.WriteLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan)">
<summary>
Acquires a write-lock, using the given time-out.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryWriteLock(System.Threading.ReaderWriterLockSlim)">
<summary>
Tries to acquire a write-lock on the given object using the default timeout.
If it fails, returns null.
</summary>
<param name="lockObject">The object to lock.</param>
<returns>A disposable object to release the lock, or null.</returns>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryWriteLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan)">
<summary>
Tries to acquire a write-lock on the given object using the specified timeout.
If it fails, returns null.
</summary>
<param name="lockObject">The object to lock.</param>
<param name="timeout">The maximum time to wait for the lock.</param>
<returns>A disposable object to release the lock, or null.</returns>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.ReadLock(System.Threading.ReaderWriterLockSlim,System.Action)">
<summary>
Acquires a ReadLock using the default timeout and then
executes the given action. The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.ReadLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan,System.Action)">
<summary>
Acquires a ReadLock using the given timeout and then
executes the given action. The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryReadLock(System.Threading.ReaderWriterLockSlim,System.Action)">
<summary>
Tries to acquire a ReadLock using the default timeout.
If the lock is acquired, it executes the action and returns only
after releasing the lock. If not, it returns false.
The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryReadLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan,System.Action)">
<summary>
Tries to acquire a ReadLock using the given timeout.
If the lock is acquired, it executes the action and returns only
after releasing the lock. If not, it returns false.
The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.UpgradeableLock(System.Threading.ReaderWriterLockSlim,System.Action)">
<summary>
Acquires a UpgradeableLock using the default timeout and then
executes the given action. The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.UpgradeableLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan,System.Action)">
<summary>
Acquires a UpgradeableLock using the given timeout and then
executes the given action. The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryUpgradeableLock(System.Threading.ReaderWriterLockSlim,System.Action)">
<summary>
Tries to acquire a UpgradeableLock using the default timeout.
If the lock is acquired, it executes the action and returns only
after releasing the lock. If not, it returns false.
The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryUpgradeableLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan,System.Action)">
<summary>
Tries to acquire a UpgradeableLock using the given timeout.
If the lock is acquired, it executes the action and returns only
after releasing the lock. If not, it returns false.
The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.WriteLock(System.Threading.ReaderWriterLockSlim,System.Action)">
<summary>
Acquires a WriteLock using the default timeout and then
executes the given action. The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.WriteLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan,System.Action)">
<summary>
Acquires a WriteLock using the given timeout and then
executes the given action. The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryWriteLock(System.Threading.ReaderWriterLockSlim,System.Action)">
<summary>
Tries to acquire a WriteLock using the default timeout.
If the lock is acquired, it executes the action and returns only
after releasing the lock. If not, it returns false.
The lock acquisition is AbortSafe.
</summary>
</member>
<member name="M:Pfz.Extensions.ReaderWriterLockExtensions.PfzReaderWriterLockExtensions.TryWriteLock(System.Threading.ReaderWriterLockSlim,System.TimeSpan,System.Action)">
<summary>
Tries to acquire a WriteLock using the given timeout.
If the lock is acquired, it executes the action and returns only
after releasing the lock. If not, it returns false.
The lock acquisition is AbortSafe.
</summary>
</member>
<member name="T:Pfz.Extensions.AsyncForEachExtensions.PfzAsyncForEachExtensions">
<summary>
Adds some methods to IEnumerable classes to allow you to do
asynchronous foreachs.
</summary>
</member>
<member name="M:Pfz.Extensions.AsyncForEachExtensions.PfzAsyncForEachExtensions.AsyncForEach``1(System.Collections.Generic.IEnumerable{``0},System.Action{``0})">
<summary>
Does a foreach using the default .Net ThreadPool to process
each item.
</summary>
<typeparam name="T">The type of the items.</typeparam>
<param name="enumerable">The enumerable that contains the items to do the foreach.</param>
<param name="action">The action that will be executed to each item.</param>
</member>
<member name="M:Pfz.Extensions.AsyncForEachExtensions.PfzAsyncForEachExtensions.AsyncForEachUnlimited``1(System.Collections.Generic.IEnumerable{``0},System.Action{``0})">
<summary>
Executes each item in the collection in a separate thread.
Be careful when using this, as the AsyncForEach extension
method is generally better, because having too many
simultaneous threads ends-up decreasing performance.
</summary>
<typeparam name="T">The type of the items in the collection.</typeparam>
<param name="enumerable">The enumerable collection.</param>
<param name="action">The action to execute for each item.</param>
</member>
<member name="T:Pfz.Caching.KeepAliveGCHandle">
<summary>
This struct works like a KeepAliveWeakReference, but it is internal
as it's uses the GCHandle directly, and can leak memory if used
unproperly.
</summary>
</member>
<member name="T:Pfz.Caching.WeakKeyDictionary`2">
<summary>
A dictionary were keys are weakreferences. This is useful if you need
to "extend" existing classes. For example, if you want to add a Tag
property to any object. The way this dictionary works, you can add
items to a given object, which will be kept while the object is alive,
but if the object dies (is collected) they will be allowed to be
with it.
</summary>
<typeparam name="TKey">The type of the key, which must be a class.</typeparam>
<typeparam name="TValue">The type of the value.</typeparam>
</member>
<member name="M:Pfz.Caching.WeakKeyDictionary`2.#ctor">
<summary>
Creates the WeakKeyDictionary.
</summary>
</member>
<member name="M:Pfz.Caching.WeakKeyDictionary`2.Dispose(System.Boolean)">
<summary>
Frees all handles.
</summary>
</member>
<member name="M:Pfz.Caching.WeakKeyDictionary`2.Clear">
<summary>
Clears all items in the dictionary.
</summary>
</member>
<member name="M:Pfz.Caching.WeakKeyDictionary`2.Add(`0,`1)">
<summary>
Adds an item to the dictionary, or throws an exception if an item
with the same key already exists.
</summary>
<param name="key">The key of the item to add.</param>
<param name="value">The value of the item to add.</param>
</member>
<member name="M:Pfz.Caching.WeakKeyDictionary`2.Remove(`0)">
<summary>
Tries to remove an item from the dictionary, and returns a value
indicating if an item with the specified key existed.
</summary>
<param name="key">The key of the item to remove.</param>
<returns>true if an item with the given key existed, false otherwise.</returns>
</member>
<member name="M:Pfz.Caching.WeakKeyDictionary`2.ContainsKey(`0)">
<summary>
Checks if an item with the given key exists in this dictionary.
</summary>
</member>
<member name="M:Pfz.Caching.WeakKeyDictionary`2.TryGetValue(`0,`1@)">
<summary>
Tries to get a value with a given key.
</summary>
<param name="key">The key of the item to try to get.</param>
<param name="value">
The variable that will receive the found value, or the default value
if an item with the given key does not exist.
</param>
<returns>
true if an item with the given key was found and stored in value
parameter, false otherwise.
</returns>
</member>
<member name="M:Pfz.Caching.WeakKeyDictionary`2.ToList">
<summary>
Creates a list with all non-collected keys and values.
</summary>
</member>
<member name="M:Pfz.Caching.WeakKeyDictionary`2.GetEnumerator">
<summary>
Gets an enumerator of all non-collected keys and values.
</summary>
</member>
<member name="P:Pfz.Caching.WeakKeyDictionary`2.Count">
<summary>
Gets the number of the items in the dictionary. This value
is not that useful, as just after getting it the number of
items can change by a collection.
</summary>
</member>
<member name="P:Pfz.Caching.WeakKeyDictionary`2.Item(`0)">
<summary>
Gets or sets a value for the given key.
While getting, if the value does not exist an exception is thrown.
This can happen if the value was collected, so avoid using getter,
use TryGetValue instead.
</summary>
<param name="key">The key.</param>
</member>
<member name="P:Pfz.Caching.WeakKeyDictionary`2.Keys">
<summary>
Returns all the non-collected keys.
</summary>
</member>
<member name="P:Pfz.Caching.WeakKeyDictionary`2.Values">
<summary>
Gets all the values still alive in this dictionary.
</summary>
</member>
<member name="T:Pfz.Extensions.DisposeExtensions.PfzDisposeExtensions">
<summary>
Adds methods to the IDispose interface.
</summary>
</member>
<member name="M:Pfz.Extensions.DisposeExtensions.PfzDisposeExtensions.CheckedDispose(System.IDisposable)">
<summary>
Disposes a disposable object if it is not null.
</summary>
</member>
<member name="T:Pfz.Collections.FastEnumeratorWrapper`1">
<summary>
This class creates an IFastEnumerator wrapper over a custom enumerator.
Note that this class must be used in the server, so it passes the
IFastEnumerator to it's client. Using it locally or in the clients will
probably make things slower.
</summary>
</member>
<member name="M:Pfz.Collections.FastEnumeratorWrapper`1.#ctor(System.Collections.Generic.IEnumerable{`0})">
<summary>
Creates a new FastEnumerator over the given enumerable.
</summary>
</member>
<member name="M:Pfz.Collections.FastEnumeratorWrapper`1.#ctor(System.Collections.Generic.IEnumerator{`0})">
<summary>
Creates a new FastEnumerator over the given enumerator.
</summary>
</member>
<member name="M:Pfz.Collections.FastEnumeratorWrapper`1.Dispose">
<summary>
Disposes the internal enumerator.
</summary>
</member>
<member name="M:Pfz.Collections.FastEnumeratorWrapper`1.GetNext">
<summary>
Gets the next value, or null.
</summary>
</member>
<member name="T:Pfz.Collections.EnumeratorDistributorClient`1">
<summary>
This class connects to a MultiClientEnumeratorDistributor and is able
to use GetNext to get a next frame when one is available, while it is
also able to "loose" values if the real enumerator is running faster
than this client. This is useful when getting frames from a web-cam,
for example.
</summary>
</member>
<member name="M:Pfz.Collections.EnumeratorDistributorClient`1.#ctor(Pfz.Collections.EnumeratorDistributor{`0})">
<summary>
Creates a new multi-client enumerator connected to the given distributor.
</summary>
</member>
<member name="M:Pfz.Collections.EnumeratorDistributorClient`1.Dispose(System.Boolean)">
<summary>
Releases the resources used by this enumerator and removes it from
the distributor list.
</summary>
</member>
<member name="M:Pfz.Collections.EnumeratorDistributorClient`1.GetNext">
<summary>
Gets the actual value of the distributor or waits until a new
value is available.
</summary>
</member>
<member name="P:Pfz.Collections.EnumeratorDistributorClient`1.Distributor">
<summary>
Gets the Distributor used by this enumerator.
</summary>
</member>
<member name="T:Pfz.Extensions.MonitorLockExtensions.PfzMonitorLockExtensions">
<summary>
Adds methods to lock any object using Monitor methods easily and
always with time-out, so you can avoid dead-locks.
See PfzLockConfiguration class if you want to log dead-locks.
</summary>
</member>
<member name="M:Pfz.Extensions.MonitorLockExtensions.PfzMonitorLockExtensions.LockWithTimeout``1(``0)">
<summary>
Locks an object or throws an exception if it times-out.
Use with the using keyword.
Defaults to one minute.
</summary>
<typeparam name="T">Only used to constraint objects to reference types.</typeparam>
<param name="item">The object to lock.</param>
<returns>A disposable object so you can do a using in it.</returns>
</member>
<member name="M:Pfz.Extensions.MonitorLockExtensions.PfzMonitorLockExtensions.LockWithTimeout``1(``0,System.TimeSpan)">
<summary>
Locks an object or throws an exception if it times-out.
Use with the using keyword.
</summary>
<typeparam name="T">Only used to constraint objects to reference types.</typeparam>
<param name="item">The object to lock.</param>
<param name="timeout">A timespan representing the timeout value.</param>
<returns>A disposable object so you can do a using in it.</returns>
</member>
<member name="M:Pfz.Extensions.MonitorLockExtensions.PfzMonitorLockExtensions.TryLockWithTimeout``1(``0)">
<summary>
Tries to acquire a lock on the given object, using the default lock-timeout.
In case of failure, it logs the error, but does not generates an exception. Instead, it returns
null.
</summary>
<typeparam name="T">The type of class to lock.</typeparam>
<param name="item">The item to lock.</param>
<returns>A disposable object, so you can release the lock, or null if the lock was not acquired.</returns>
</member>
<member name="M:Pfz.Extensions.MonitorLockExtensions.PfzMonitorLockExtensions.TryLockWithTimeout``1(``0,System.TimeSpan)">
<summary>
Tries to acquire a lock on the given object, using the given time-out.
In case of failure, it logs the error, but does not generates an exception. Instead, it returns
null.
</summary>
<typeparam name="T">The type of class to lock.</typeparam>
<param name="item">The item to lock.</param>
<param name="timeout">The timeout value while trying to acquire the lock.</param>
<returns>A disposable object, so you can release the lock, or null if the lock was not acquired.</returns>
</member>
<member name="M:Pfz.Extensions.MonitorLockExtensions.PfzMonitorLockExtensions.LockWithTimeout``1(``0,System.Action)">
<summary>
Locks the specified item with the specified timeout.
If it acquires the lock, runs the given action. Note that the
action can be aborted, but the lock will not be held.
</summary>
</member>
<member name="M:Pfz.Extensions.MonitorLockExtensions.PfzMonitorLockExtensions.LockWithTimeout``1(``0,System.TimeSpan,System.Action)">
<summary>
Locks the specified item with the specified timeout.
If it acquires the lock, runs the given action. Note that the
action can be aborted, but the lock will not be held.
Allows you to specify the timeout value.
</summary>
</member>
<member name="M:Pfz.Extensions.MonitorLockExtensions.PfzMonitorLockExtensions.TryLockWithTimeout``1(``0,System.Action)">
<summary>
Tries to lock an object and then execute an action.
Returns if the lock was obtained and the action fully executed.
Be careful, as the lock is already released when the method returns.
</summary>
</member>
<member name="M:Pfz.Extensions.MonitorLockExtensions.PfzMonitorLockExtensions.TryLockWithTimeout``1(``0,System.TimeSpan,System.Action)">
<summary>
Tries to lock an object and then execute an action.
Returns if the lock was obtained and the action fully executed.
Be careful, as the lock is already released when the method returns.
</summary>
</member>
<member name="T:Pfz.Threading.LockConfiguration">
<summary>
This class only configures what to do when a dead-lock occurs while
acquiring a lock with PfzMonitorLockExtensions or with
PfzReaderWriterLockExtensions.
</summary>
</member>
<member name="E:Pfz.Threading.LockConfiguration.TimedOut">
<summary>
This event is invoked when any of the Locking extensions
times-out (probably by a dead-lock).
</summary>
</member>
<member name="P:Pfz.Threading.LockConfiguration.DefaultLockTimeout">
<summary>
Gets or sets the default timeout for LockWithTimeout method.
</summary>
</member>
<member name="P:Pfz.Threading.LockConfiguration.LockTimedOutLogPath">
<summary>
Gets or sets a directory path in with log files will be generated when/if
LockWithTimeout times out.
</summary>
</member>
<member name="T:Pfz.Threading.LockConfiguration.LockType">
<summary>
Enum used to identify which type of lock has dead-locked when
invoking DeadLocked event.
</summary>
</member>
<member name="F:Pfz.Threading.LockConfiguration.LockType.Monitor">
<summary>
A monitor lock has dead-locked. (LockWithTimeout method).
</summary>
</member>
<member name="F:Pfz.Threading.LockConfiguration.LockType.Read">
<summary>
A read-lock has dead-locked.
</summary>
</member>
<member name="F:Pfz.Threading.LockConfiguration.LockType.Upgradeable">
<summary>
An upgradeable-read-lock has dead-locked.
</summary>
</member>
<member name="F:Pfz.Threading.LockConfiguration.LockType.Write">
<summary>
A write-lock has dead-locked.
</summary>
</member>
<member name="T:Pfz.Threading.LockConfiguration.TimedOutEventArgs">
<summary>
Class used as argument of the TimedOut event.
</summary>
</member>
<member name="P:Pfz.Threading.LockConfiguration.TimedOutEventArgs.LockType">
<summary>
The LockType that caused the timeout.
</summary>
</member>
<member name="T:Pfz.Caching.WeakDelegate">
<summary>
Static class used to convert real (strong) delegates into weak
delegates.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegate.IsWeakDelegate(System.Delegate)">
<summary>
Verifies if a handler is already a weak delegate.
</summary>
<param name="handler">The handler to verify.</param>
<returns>true if the handler is already a weak delegate, false otherwise.</returns>
</member>
<member name="M:Pfz.Caching.WeakDelegate.From(System.Action)">
<summary>
Creates a weak delegate from an Action delegate.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegate.From``1(System.Action{``0})">
<summary>
Creates a weak delegate from an Action<T> delegate.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegate.From``2(System.Action{``0,``1})">
<summary>
Creates a weak delegate from an Action<T1, T2> delegate.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegate.From``3(System.Action{``0,``1,``2})">
<summary>
Creates a weak delegate from an Action<T1, T2, T3> delegate.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegate.From``4(System.Action{``0,``1,``2,``3})">
<summary>
Creates a weak delegate from an Action<T1, T2, T3, T4> delegate.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegate.From(System.EventHandler)">
<summary>
Creates a weak delegate from an EventHandler delegate.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegate.From``1(System.EventHandler{``0})">
<summary>
Creates a weak delegate from an Action<TEventArgs> delegate.
</summary>
</member>
<member name="T:Pfz.Caching.WeakDelegateBase">
<summary>
A class used as the base class to implement weak delegates.
See WeakDelegate.From method implementations to see how it works.
</summary>
</member>
<member name="M:Pfz.Caching.WeakDelegateBase.#ctor(System.Delegate)">
<summary>
Creates this weak-delegate class based as a copy of the given
delegate handler.
</summary>
<param name="handler">The handler to copy information from.</param>
</member>
<member name="M:Pfz.Caching.WeakDelegateBase.Invoke(System.Object[])">
<summary>
Invokes this delegate with the given parameters.
</summary>
<param name="parameters">The parameters to be used by the delegate.</param>
</member>
<member name="P:Pfz.Caching.WeakDelegateBase.Method">
<summary>
Gets the method used by this delegate.
</summary>
</member>
<member name="T:Pfz.Extensions.StreamExtensions.PfzStreamExtensions">
<summary>
Adds overloads to the stream Read method and adds the FullRead method,
which will continue to read until it reads everything that was requested,
or throws an IOException.
</summary>
</member>
<member name="M:Pfz.Extensions.StreamExtensions.PfzStreamExtensions.Read(System.IO.Stream,System.Byte[])">
<summary>
Calls read using the full given buffer.
</summary>
</member>
<member name="M:Pfz.Extensions.StreamExtensions.PfzStreamExtensions.Read(System.IO.Stream,System.Byte[],System.Int32)">
<summary>
Calls read using the given buffer and the initialIndex.
</summary>
</member>
<member name="M:Pfz.Extensions.StreamExtensions.PfzStreamExtensions.Write(System.IO.Stream,System.Byte[])">
<summary>
Writes all the bytes in the given buffer.
</summary>
</member>
<member name="M:Pfz.Extensions.StreamExtensions.PfzStreamExtensions.Write(System.IO.Stream,System.Byte[],System.Int32)">
<summary>
Writes the bytes from the given buffer, beginning at the given beginIndex.
</summary>
</member>
<member name="M:Pfz.Extensions.StreamExtensions.PfzStreamExtensions.FullRead(System.IO.Stream,System.Byte[])">
<summary>
Will read the given buffer to the end.
Throws an exception if it's not possible to read the full buffer.
</summary>
</member>
<member name="M:Pfz.Extensions.StreamExtensions.PfzStreamExtensions.FullRead(System.IO.Stream,System.Byte[],System.Int32)">
<summary>
Full reads the stream over the given buffer, but only at the given
initialIndex. If the requested length can't be read, throws an
IOException.
</summary>
</member>
<member name="M:Pfz.Extensions.StreamExtensions.PfzStreamExtensions.FullRead(System.IO.Stream,System.Byte[],System.Int32,System.Int32)">
<summary>
Reads the buffer in the requested area, but throws an exception if
can't read the full requested area.
</summary>
</member>
<member name="T:Pfz.Caching.KeepAliveWeakReference">
<summary>
This is a WeakReference class with KeepAlive capability.
Everytime you get the Target from this WeakReference, it calls the GCUtils.KeepAlive.
This is a very simple way to use weak-references only to your objects and also
keep them alive if they are used frequently.
</summary>
</member>
<member name="M:Pfz.Caching.KeepAliveWeakReference.#ctor(System.Object)">
<summary>
Constructs a KeepAliveWeakReference pointing to a target.
</summary>
<param name="target">The target of this KeepAliveWeakReference.</param>
</member>
<member name="M:Pfz.Caching.KeepAliveWeakReference.#ctor(System.Object,System.Boolean)">
<summary>
Constructs a KeepAliveWeakReference pointing to a target and allowing to trackResurrection.
The Caching framework does not use this constructor, it is only here to keep the functionality
of the second parameter present in the System.WeakReference constructor.
</summary>
<param name="target">The target of this WeakReference.</param>
<param name="trackResurrection">Boolean indicating if this WeakReference must trackResurrection.</param>
</member>
<member name="M:Pfz.Caching.KeepAliveWeakReference.#ctor(System.Object,System.Boolean,System.Boolean)">
<summary>
Constructs a KeepAliveWeakReference pointing to a target, allowing to trackResurrection and
allowing you to tell if immediateExpiration is allowed. The other two constructors always
do a KeepAlive, so they don't allow immediateExpiration.
</summary>
<param name="target">The target of this WeakReference.</param>
<param name="trackResurrection">Boolean indicating if this WeakReference must trackResurrection.</param>
<param name="allowImmediateExpiration">
If true, the target can be collected in the next collection.
If false, it will be kept alive at the next collection.
</param>
</member>
<member name="M:Pfz.Caching.KeepAliveWeakReference.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Simple keeping the serialization constructor present in WeakReference.
</summary>
<param name="info"></param>
<param name="context"></param>
</member>
<member name="P:Pfz.Caching.KeepAliveWeakReference.Target">
<summary>
Overrides the WeakReference.Target, so it calls KeepAlive while gets or sets the Target.
</summary>
</member>
<member name="P:Pfz.Caching.KeepAliveWeakReference.TargetAllowingExpiration">
<summary>
This is equivalent to a custom WeakReference target, as it's gets or sets the target
without calling KeepAlive. Keep in mind that when an external code uses WeakReference,
you can pass a KeepAliveWeakReference as a parameter, and the conventional Target that
is used by default will have the KeepAlive effect.
</summary>
</member>
<member name="T:Pfz.Caching.KeepAliveWeakReference`1">
<summary>
A typed version of weak-reference.
Note that it simple hides the untyped Target and TargetAllowingExpiration.
If you cast this object as a simple WeakReference you can still set
an invalid typed target to it. This is only a helper class to avoid
manual casts.
</summary>
<typeparam name="T">The type of the objects used by this weak-reference.</typeparam>
</member>
<member name="M:Pfz.Caching.KeepAliveWeakReference`1.#ctor(System.Object)">
<summary>
Constructs a KeepAliveWeakReference pointing to a target.
</summary>
<param name="target">The target of this KeepAliveWeakReference.</param>
</member>
<member name="M:Pfz.Caching.KeepAliveWeakReference`1.#ctor(System.Object,System.Boolean)">
<summary>
Constructs a KeepAliveWeakReference pointing to a target and allowing to trackResurrection.
The Caching framework does not use this constructor, it is only here to keep the functionality
of the second parameter present in the System.WeakReference constructor.
</summary>
<param name="target">The target of this WeakReference.</param>
<param name="trackResurrection">Boolean indicating if this WeakReference must trackResurrection.</param>
</member>
<member name="M:Pfz.Caching.KeepAliveWeakReference`1.#ctor(System.Object,System.Boolean,System.Boolean)">
<summary>
Constructs a KeepAliveWeakReference pointing to a target, allowing to trackResurrection and
allowing you to tell if immediateExpiration is allowed. The other two constructors always
do a KeepAlive, so they don't allow immediateExpiration.
</summary>
<param name="target">The target of this WeakReference.</param>
<param name="trackResurrection">Boolean indicating if this WeakReference must trackResurrection.</param>
<param name="allowImmediateExpiration">
If true, the target can be collected in the next collection.
If false, it will be kept alive at the next collection.
</param>
</member>
<member name="M:Pfz.Caching.KeepAliveWeakReference`1.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Simple keeping the serialization constructor present in WeakReference.
</summary>
<param name="info"></param>
<param name="context"></param>
</member>
<member name="P:Pfz.Caching.KeepAliveWeakReference`1.Target">
<summary>
Gets or sets the typed target, calling GCUtils.KeepAlive()
while doing it.
</summary>
</member>
<member name="P:Pfz.Caching.KeepAliveWeakReference`1.TargetAllowingExpiration">
<summary>
Gets or sets the typed-target, without calling GCUtils.KeepAlive().
</summary>
</member>
<member name="T:Pfz.Caching.ResultCache`2">
<summary>
This class acts as a cache for function evalutations. This is inspired
by the functional and immutable programming model, so calling a function
twice with the same parameter, which will generate the same result, will
be evaluated only once.
As a cache, such generated results can be garbage collected, but the
cache is able to generate the same value again, given the same
parameter. And, of course, the parameter can be an struct, so this
enables multi-parameters with a little extra effort.
To use this cache, you must override and implement the method Generate.
It is common to create the cache as an inheritor of this class with
a private constructor, and make it acessible by a static function call.
</summary>
</member>
<member name="M:Pfz.Caching.ResultCache`2.#ctor">
<summary>
Initializes the functional cache, and register it in the Collected event.
</summary>
</member>
<member name="M:Pfz.Caching.ResultCache`2.DoExecute(`0)">
<summary>
You must implement this method to effectivelly execute the function.
Remember that such function must always return the same value considering
the same input values.
</summary>
<param name="parameter">The parameter value.</param>
<returns>Your generated result value.</returns>
</member>
<member name="M:Pfz.Caching.ResultCache`2.Execute(`0)">
<summary>
Evaluates the function, or uses the cached value if this function
was already evaluated with the same parameters.
This method is virtual so it is possible to clone the result in cases
where the result is modifiable just before returning it.
As the value is cached, you must guarantee that the value is not modifiable
or, if it is, at least clone it so the returned value, if modified, will
not destroy the cached result.
</summary>
<param name="parameter">The parameter value.</param>
<returns>Your generated result value.</returns>
</member>
<member name="M:Pfz.Caching.ResultCache`2.Clear">
<summary>
Clears the cache.
</summary>
</member>
<member name="M:Pfz.Caching.ResultCache`2.Add(`0,`1)">
<summary>
Adds a value to the cache. This is here so inherited classes
that know they are generating values valid to be added to the
cache add it. Remember that this method throws an exception
when the value already exists and that Cache in general
must be thread-safe.
</summary>
</member>
<member name="M:Pfz.Caching.ResultCache`2.AddOrReplace(`0,`1)">
<summary>
Adds or replaces a value from the cache. This method is here
so inherited classes can replace existing cached values if,
for some reason, such value changes.
If you need to do this, remember that the cache can be used
by many threads and even the cache itself being thread-safe,
you may need your own locking to avoid incoherent states.
</summary>
</member>
<member name="M:Pfz.Caching.ResultCache`2.Remove(`0)">
<summary>
Removes a cached result.
</summary>
</member>
<member name="T:Pfz.Extensions.ClonningExtensions.PfzClonningExtensions">
<summary>
Adds some methods for clonning objects.
</summary>
</member>
<member name="M:Pfz.Extensions.ClonningExtensions.PfzClonningExtensions.TypedClone``1(``0)">
<summary>
Clones the source object returning the new one as the same type
(cast) of the original.
</summary>
</member>
<member name="M:Pfz.Extensions.ClonningExtensions.PfzClonningExtensions.CloneBySerialization``1(``0)">
<summary>
Clones an object by serializing it to a memory-stream and then
deserializing it.
</summary>
</member>
<member name="T:Pfz.Extensions.DisplayNameExtensions.PfzDisplayNameExtensions">
<summary>
Adds methods to work easily with Enums.
</summary>
</member>
<member name="M:Pfz.Extensions.DisplayNameExtensions.PfzDisplayNameExtensions.GetDisplayName(System.Enum)">
<summary>
Gets the display name of an enumerated value.
If no EnumDisplayName attribute is set, uses the default enum name.
</summary>
<param name="enumValue">The enum value to get the display name.</param>
<returns>The display name.</returns>
</member>
<member name="M:Pfz.Extensions.DisplayNameExtensions.PfzDisplayNameExtensions.GetDisplayName(System.Reflection.MemberInfo)">
<summary>
Gets the DisplayName of a member, or it's real name if it does
not have a DisplayName.
</summary>
<param name="member">The member to get the display name for.</param>
<returns>A name.</returns>
</member>
<member name="T:Pfz.Caching.WeakArray`1">
<summary>
This is an array of objects, where each object can be collected.
Each time an item is accessed by the indexer, a GCUtils.KeepAlive
is done.
</summary>
<typeparam name="T">The type of the array.</typeparam>
</member>
<member name="F:Pfz.Caching.WeakArray`1.Empty">
<summary>
Gets an empty WeakArray.
</summary>
</member>
<member name="M:Pfz.Caching.WeakArray`1.#ctor(System.Int32)">
<summary>
Creates the array with the given length.
</summary>
</member>
<member name="M:Pfz.Caching.WeakArray`1.Dispose(System.Boolean)">
<summary>
Releases the handles used by the array.
</summary>
</member>
<member name="M:Pfz.Caching.WeakArray`1.ToArray">
<summary>
Converts this WeakArray into a common array.
</summary>
</member>
<member name="M:Pfz.Caching.WeakArray`1.ToList">
<summary>
Converts this WeakArray into a list.
</summary>
</member>
<member name="M:Pfz.Caching.WeakArray`1.GetEnumerator">
<summary>
Gets an enumerator for this array, so foreach can be done.
</summary>
</member>
<member name="P:Pfz.Caching.WeakArray`1.Length">
<summary>
Gets the number of items in this array.
</summary>
</member>
<member name="P:Pfz.Caching.WeakArray`1.Item(System.Int32)">
<summary>
Gets or sets the items in this array.
</summary>
<param name="index">The index of the item to get or set.</param>
</member>
<member name="T:Pfz.Caching.WeakHashSet`1">
<summary>
HashSet class which allows items to be collected.
</summary>
</member>
<member name="M:Pfz.Caching.WeakHashSet`1.#ctor">
<summary>
Creates a new instance of the WeakHashSet class.
</summary>
</member>
<member name="M:Pfz.Caching.WeakHashSet`1.Dispose(System.Boolean)">
<summary>
Releases all the GCHandles used internally.
</summary>
<param name="disposing"></param>
</member>
<member name="M:Pfz.Caching.WeakHashSet`1.Add(`0)">
<summary>
Tries to add an item in this hashset.
Returns true if the item was added, or false if the item was
already present.
</summary>
</member>
<member name="M:Pfz.Caching.WeakHashSet`1.Contains(`0)">
<summary>
Returns true if the given item is in this hashset, false otherwise.
</summary>
</member>
<member name="M:Pfz.Caching.WeakHashSet`1.ToList">
<summary>
Gets a list with all the non-collected items present in this
hashset.
</summary>
<returns></returns>
</member>
<member name="M:Pfz.Caching.WeakHashSet`1.Remove(`0)">
<summary>
Removes the given item from this hashset.
Returns a value indicating if the given item was in the hashset.
</summary>
</member>
<member name="M:Pfz.Caching.WeakHashSet`1.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Creates the class from serialization. At this level, does not read
anything, as if everything was collected.
</summary>
</member>
<member name="M:Pfz.Caching.WeakHashSet`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Does not add any items to the serialization info, as if everything
was collected.
</summary>
</member>
<member name="M:Pfz.Caching.WeakHashSet`1.GetEnumerator">
<summary>
Gets an enumerator over the non-collected items in this hashset.
</summary>
</member>
<member name="T:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions">
<summary>
Class that has methods to convert values to and from many different
representations.
</summary>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.ToString(System.UInt64,System.Byte)">
<summary>
Converts a value to string using the specific numericBase.
</summary>
<param name="value">The value to generate a string representation.</param>
<param name="numericBase">The numericBase to use. 2 is binary, 16 is hexadecimal and so on.</param>
<returns>An string representation of the given value using the right numericBase.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.ToString(System.Int64,System.Byte)">
<summary>
Converts a value to string using the specific numericBase.
</summary>
<param name="value">The value to generate a string representation.</param>
<param name="numericBase">The numericBase to use. 2 is binary, 16 is hexadecimal and so on.</param>
<returns>An string representation of the given value using the right numericBase.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.TryParseUInt64(System.String,System.Byte,System.UInt64@)">
<summary>
Tries to converts an string into a ulong representation using an specific
numericBase.
</summary>
<param name="value">The string representation to convert to an ulong.</param>
<param name="numericBase">The numericBase to use. For example, 2 is binary.</param>
<param name="result">The resulting value.</param>
<returns>true if the convertion was possible.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.ParseUInt64(System.String,System.Byte)">
<summary>
Parses an string into an ulong using the given numericBase.
</summary>
<param name="value">The value to convert.</param>
<param name="numericBase">The numericBase to use. For example, 2 is binary.</param>
<returns>An ulong or throws an exception.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.TryParseInt64(System.String,System.Byte,System.Int64@)">
<summary>
Tries to converts an string into a ulong representation using an specific
numericBase.
</summary>
<param name="value">The string representation to convert to an ulong.</param>
<param name="numericBase">The numericBase to use. For example, 2 is binary.</param>
<param name="result">The resulting value.</param>
<returns>true if the convertion was possible.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.ParseInt64(System.String,System.Byte)">
<summary>
Parses an string into an ulong using the given numericBase.
</summary>
<param name="value">The value to convert.</param>
<param name="numericBase">The numericBase to use. For example, 2 is binary.</param>
<returns>An ulong or throws an exception.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.ToString(System.UInt32,System.Byte)">
<summary>
Converts a value to string using the specific numericBase.
</summary>
<param name="value">The value to generate a string representation.</param>
<param name="numericBase">The numericBase to use. 2 is binary, 16 is hexadecimal and so on.</param>
<returns>An string representation of the given value using the right numericBase.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.ToString(System.Int32,System.Byte)">
<summary>
Converts a value to string using the specific numericBase.
</summary>
<param name="value">The value to generate a string representation.</param>
<param name="numericBase">The numericBase to use. 2 is binary, 16 is hexadecimal and so on.</param>
<returns>An string representation of the given value using the right numericBase.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.TryParseUInt32(System.String,System.Byte,System.UInt32@)">
<summary>
Tries to converts an string into a uint representation using an specific
numericBase.
</summary>
<param name="value">The string representation to convert to an uint.</param>
<param name="numericBase">The numericBase to use. For example, 2 is binary.</param>
<param name="result">The resulting value.</param>
<returns>true if the convertion was possible.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.ParseUInt32(System.String,System.Byte)">
<summary>
Parses an string into an uint using the given numericBase.
</summary>
<param name="value">The value to convert.</param>
<param name="numericBase">The numericBase to use. For example, 2 is binary.</param>
<returns>An uint or throws an exception.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.TryParseInt32(System.String,System.Byte,System.Int32@)">
<summary>
Tries to converts an string into a uint representation using an specific
numericBase.
</summary>
<param name="value">The string representation to convert to an uint.</param>
<param name="numericBase">The numericBase to use. For example, 2 is binary.</param>
<param name="result">The resulting value.</param>
<returns>true if the convertion was possible.</returns>
</member>
<member name="M:Pfz.Extensions.NumericConversionsExtensions.PfzNumericConversionsExtensions.ParseInt32(System.String,System.Byte)">
<summary>
Parses an string into an uint using the given numericBase.
</summary>
<param name="value">The value to convert.</param>
<param name="numericBase">The numericBase to use. For example, 2 is binary.</param>
<returns>An uint or throws an exception.</returns>
</member>
<member name="T:Pfz.Threading.ActionRunner`1">
<summary>
Class that creates a thread to run Actions as messages. It only creates
one thread to process all messages. Use it only when you know you want to
process many messages asynchronously, but don't want (or can't) use ThreadPool
threads.
<typeparam name="T">The type of the actions this executor invokes.</typeparam>
</summary>
</member>
<member name="M:Pfz.Threading.ActionRunner`1.#ctor">
<summary>
Creates a new action runner.
</summary>
</member>
<member name="M:Pfz.Threading.ActionRunner`1.Dispose(System.Boolean)">
<summary>
Frees all used resources.
</summary>
<param name="disposing"></param>
</member>
<member name="M:Pfz.Threading.ActionRunner`1.Run(System.Action{`0},`0)">
<summary>
Runs the given action.
</summary>
<param name="action">The action to run.</param>
<param name="value">The value for the given action.</param>
</member>
<member name="T:Pfz.Time">
<summary>
A struct that represents Time only (instead of Date and Time).
</summary>
</member>
<member name="M:Pfz.Time.Parse(System.String)">
<summary>
Parses the given text as a Time using the default format.
</summary>
</member>
<member name="M:Pfz.Time.#ctor(System.Int32)">
<summary>
Creates a new time value from a given integer time, which
must be previously got from a Time.AsInteger.
</summary>
<param name="integerTime"></param>
</member>
<member name="M:Pfz.Time.#ctor(System.Int32,System.Int32,System.Int32,System.Int32)">
<summary>
Creates a new time object from the specified parameters.
</summary>
</member>
<member name="M:Pfz.Time.#ctor(System.DateTime)">
<summary>
Creates a new time object from the specified dateTime, obviouly
getting only the time part.
</summary>
<param name="dateTime"></param>
</member>
<member name="M:Pfz.Time.op_Equality(Pfz.Time,Pfz.Time)">
<summary>
Compares if two time objects are equal.
</summary>
</member>
<member name="M:Pfz.Time.op_Inequality(Pfz.Time,Pfz.Time)">
<summary>
Compares if two time objects are different.
</summary>
</member>
<member name="M:Pfz.Time.op_LessThan(Pfz.Time,Pfz.Time)">
<summary>
Compares if a time object is less than other.
</summary>
</member>
<member name="M:Pfz.Time.op_GreaterThan(Pfz.Time,Pfz.Time)">
<summary>
Compares if a time object is greater than other.
</summary>
</member>
<member name="M:Pfz.Time.op_LessThanOrEqual(Pfz.Time,Pfz.Time)">
<summary>
Compares if a time object is less than or equal to
another.
</summary>
</member>
<member name="M:Pfz.Time.op_GreaterThanOrEqual(Pfz.Time,Pfz.Time)">
<summary>
Compares if a time value is greater than or equal to
another.
</summary>
</member>
<member name="M:Pfz.Time.op_Implicit(Pfz.Time)~System.DateTime">
<summary>
Implicit convert a Time object to a DateTime object.
</summary>
<param name="time"></param>
<returns></returns>
</member>
<member name="M:Pfz.Time.op_Explicit(System.DateTime)~Pfz.Time">
<summary>
Explicit converts a DateTime object to a Time object.
</summary>
<param name="dateTime"></param>
<returns></returns>
</member>
<member name="M:Pfz.Time.GetHashCode">
<summary>
Gets the hashcode of this time object.
</summary>
<returns></returns>
</member>
<member name="M:Pfz.Time.Equals(System.Object)">
<summary>
Returns true if this time object equals another object.
</summary>
</member>
<member name="M:Pfz.Time.Equals(Pfz.Time)">
<summary>
Returns true if this time object equals the value of
another time object.
</summary>
</member>
<member name="M:Pfz.Time.ToString">
<summary>
Gets the time formatted.
</summary>
<returns></returns>
</member>
<member name="M:Pfz.Time.CompareTo(Pfz.Time)">
<summary>
Returns an integer value with the comparison result of
this time and another time. Negative value means this
time is smaller than the other.
</summary>
</member>
<member name="P:Pfz.Time.DefaultFormat">
<summary>
Gets or sets the default format used to display Time values.
</summary>
</member>
<member name="P:Pfz.Time.Now">
<summary>
Gets the actual time, without date information.
</summary>
</member>
<member name="P:Pfz.Time.Hour">
<summary>
Gets the hour of this time object.
</summary>
</member>
<member name="P:Pfz.Time.Minute">
<summary>
Gets the minute of this time object.
</summary>
</member>
<member name="P:Pfz.Time.Second">
<summary>
Gets the second of this time object.
</summary>
</member>
<member name="P:Pfz.Time.Millisecond">
<summary>
Gets the millisecond of this time object.
</summary>
</member>
<member name="P:Pfz.Time.AsInteger">
<summary>
Gets this value as an integer representation.
</summary>
</member>
<member name="T:Pfz.Collections.ReadOnlyHashSet`1">
<summary>
Read-only wrapper for hashsets.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.#ctor(System.Collections.Generic.HashSet{`0})">
<summary>
Creates a new read-only hashset wrapper over a modifiable hashset.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.GetEnumerator">
<summary>
Returns an enumerator to iterate through all items in this
hashset.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.Contains(`0)">
<summary>
Returns true if the given item exists in this hashset, otherwise
false.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.CopyTo(`0[])">
<summary>
Copies the values of this hashset to an array.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.CopyTo(`0[],System.Int32)">
<summary>
Copies the values of this hashset to an array, beginning
at the given destination index.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.CopyTo(`0[],System.Int32,System.Int32)">
<summary>
Copies the given count items from this hashset to an array,
beginning at the given destination index.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.IsProperSubsetOf(System.Collections.Generic.IEnumerable{`0})">
<summary>
Determines wheter this hashset is a proper subset of the other
collection.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.IsProperSupersetOf(System.Collections.Generic.IEnumerable{`0})">
<summary>
Determines wheter this hashset is a proper superset of the other
collection.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.IsSubsetOf(System.Collections.Generic.IEnumerable{`0})">
<summary>
Determines wheter this hashset is a subset of the other
collection.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.IsSupersetOf(System.Collections.Generic.IEnumerable{`0})">
<summary>
Determines wheter this hashset is a superset of the other
collection.
</summary>
</member>
<member name="M:Pfz.Collections.ReadOnlyHashSet`1.Overlaps(System.Collections.Generic.IEnumerable{`0})">
<summary>
Determines wheter this hashset overlaps the other collection.
</summary>
</member>
<member name="P:Pfz.Collections.ReadOnlyHashSet`1.Count">
<summary>
Gets the number of items in this hashset.
</summary>
</member>
<member name="T:Pfz.Extensions.TypeExtensions.PfzTypeExtensions">
<summary>
Adds some methods to the Type class so you can discover the
sub-types easily.
</summary>
</member>
<member name="M:Pfz.Extensions.TypeExtensions.PfzTypeExtensions.GetDirectSubClasses(System.Type,System.Reflection.Assembly)">
<summary>
Gets the sub-classes of the specific type, in the specific assembly.
</summary>
</member>
<member name="M:Pfz.Extensions.TypeExtensions.PfzTypeExtensions.GetSubClassesRecursive(System.Type,System.Reflection.Assembly)">
<summary>
Gets the sub-classes of the specific type, in the specific assembly.
</summary>
</member>
<member name="M:Pfz.Extensions.TypeExtensions.PfzTypeExtensions.GetReferencedAssemblies(System.Type)">
<summary>
Gets all assemblies that must be referenced if you want to
use everything from the given type. Useful for CodeDOM.
</summary>
<param name="type">The type to get all referenced assemblies.</param>
<returns>A hashset with all referenced assemblies.</returns>
</member>
<member name="M:Pfz.Extensions.TypeExtensions.PfzTypeExtensions.GetReferencedAssemblies(System.Collections.Generic.IEnumerable{System.Type})">
<summary>
Gets all assemblies that must be referenced if you want to
use everything from the given types. Useful for CodeDOM.
</summary>
<param name="types">A collection of all needed types.</param>
<returns>A HashSet of all referenced assemblies.</returns>
</member>
<member name="M:Pfz.Extensions.TypeExtensions.PfzTypeExtensions.AddReferencedAssemblies(System.Type,System.Collections.Generic.HashSet{System.Reflection.Assembly},System.Collections.Generic.HashSet{System.Type})">
<summary>
Adds all the referenced types/assemblies into the given hashsets.
This is almost an internal implementation, but if you need to add
many references but do not have a collection previouly created, you
must use this method for performance reasons.
</summary>
<param name="type">The type to get all the referencies.</param>
<param name="alreadyAddedAssemblies">A hashset, that is used to add the new referenced assemblies.</param>
<param name="alreadyAddedTypes">A hashset, that is used to add the new referenced types and to avoid reprocessing them.</param>
</member>
</members>
</doc>