Class VirtualPath
Represents a path within the virtual storage. Provides functionality for manipulating, comparing, normalizing, and splitting paths.
Inherited Members
Namespace: AkiraNetwork.VirtualStorageLibrary
Assembly: VirtualStorageLibrary.dll
Syntax
public class VirtualPath : IEquatable<VirtualPath>, IComparable<VirtualPath>, IComparable
Constructors
VirtualPath(IEnumerable<VirtualNodeName>)
Initializes a new instance of the VirtualPath class with the specified collection of path parts.
Declaration
public VirtualPath(IEnumerable<VirtualNodeName> parts)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnumerable<VirtualNodeName> | parts | The collection of path parts. |
VirtualPath(string)
Initializes a new instance of the VirtualPath class with the specified path string.
Declaration
public VirtualPath(string path)
Parameters
| Type | Name | Description |
|---|---|---|
| string | path | The initial path string. |
Properties
Depth
Gets the depth of the path.
Declaration
public int Depth { get; }
Property Value
| Type | Description |
|---|---|
| int | An integer representing the depth of the path. |
DirectoryPath
Gets the directory part of the path.
Declaration
public VirtualPath DirectoryPath { get; }
Property Value
| Type | Description |
|---|---|
| VirtualPath | A VirtualPath representing the directory part of the path. |
Dot
Gets the dot (".") symbol.
Declaration
public static string Dot { get; }
Property Value
| Type | Description |
|---|---|
| string | A string representing the dot symbol. |
DotDot
Gets the double dot ("..") symbol.
Declaration
public static string DotDot { get; }
Property Value
| Type | Description |
|---|---|
| string | A string representing the double dot symbol. |
FixedDepth
Gets the depth of the fixed path.
Declaration
public int FixedDepth { get; }
Property Value
| Type | Description |
|---|---|
| int | An integer representing the depth of the fixed path. |
Remarks
The fixed depth indicates the number of parts in the path, excluding those with wildcards.
FixedPath
Gets the fixed path after applying wildcard matching.
Declaration
public VirtualPath FixedPath { get; }
Property Value
| Type | Description |
|---|---|
| VirtualPath | A VirtualPath object representing the fixed path. |
Remarks
The fixed path excludes parts containing wildcards.
IsAbsolute
Gets a value indicating whether the instance's path is absolute.
Declaration
public bool IsAbsolute { get; }
Property Value
| Type | Description |
|---|---|
| bool |
|
IsDot
Gets a value indicating whether the instance's path is a dot.
Declaration
public bool IsDot { get; }
Property Value
| Type | Description |
|---|---|
| bool |
|
IsDotDot
Gets a value indicating whether the instance's path is a double dot.
Declaration
public bool IsDotDot { get; }
Property Value
| Type | Description |
|---|---|
| bool |
|
IsEmpty
Gets a value indicating whether the instance's path is empty.
Declaration
public bool IsEmpty { get; }
Property Value
| Type | Description |
|---|---|
| bool |
|
IsEndsWithSlash
Gets a value indicating whether the instance's path ends with a slash.
Declaration
public bool IsEndsWithSlash { get; }
Property Value
| Type | Description |
|---|---|
| bool |
|
IsRoot
Gets a value indicating whether the instance's path is the root path.
Declaration
public bool IsRoot { get; }
Property Value
| Type | Description |
|---|---|
| bool |
|
NodeName
Gets the node name of the path.
Declaration
public VirtualNodeName NodeName { get; }
Property Value
| Type | Description |
|---|---|
| VirtualNodeName | A VirtualNodeName representing the node name of the path. |
PartsList
Gets the list of parts that make up the path.
Declaration
public List<VirtualNodeName> PartsList { get; }
Property Value
| Type | Description |
|---|---|
| List<VirtualNodeName> | A list of VirtualNodeName objects representing the parts of the path. |
Path
Gets the path string.
Declaration
public string Path { get; }
Property Value
| Type | Description |
|---|---|
| string | The string representation of the path. |
Root
Gets the root path.
Declaration
public static string Root { get; }
Property Value
| Type | Description |
|---|---|
| string | A string representing the root path. |
Separator
Gets the path separator character.
Declaration
public static char Separator { get; }
Property Value
| Type | Description |
|---|---|
| char | A character representing the path separator. |
Methods
AddEndSlash()
Adds a trailing slash to the path if it doesn't already have one.
Declaration
public VirtualPath AddEndSlash()
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath with a trailing slash. |
AddStartSlash()
Adds a leading slash to the path if it doesn't already have one.
Declaration
public VirtualPath AddStartSlash()
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath with a leading slash. |
ArePathsSubdirectories(VirtualPath, VirtualPath)
Determines whether one path is a subdirectory of another path.
Declaration
public static bool ArePathsSubdirectories(VirtualPath path1, VirtualPath path2)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | path1 | The first VirtualPath. |
| VirtualPath | path2 | The second VirtualPath. |
Returns
| Type | Description |
|---|---|
| bool | true if one path is a subdirectory of the other; otherwise, false. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | Thrown if either path is empty. |
Combine(params VirtualPath[])
Combines the instance's path with the specified paths.
Declaration
public VirtualPath Combine(params VirtualPath[] paths)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath[] | paths | An array of VirtualPath objects to combine. |
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath representing the combined path. |
Combine(params string[])
Combines the specified paths into a single path.
Declaration
public static string Combine(params string[] paths)
Parameters
| Type | Name | Description |
|---|---|---|
| string[] | paths | An array of path strings to combine. |
Returns
| Type | Description |
|---|---|
| string | A combined path string. |
CombineFromIndex(VirtualPath, int)
Combines the instance's path with the parts of another path starting from a specified index.
Declaration
public VirtualPath CombineFromIndex(VirtualPath path, int index)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | path | The VirtualPath whose parts to combine. |
| int | index | The starting index from which to combine the parts. |
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath representing the combined path. |
CompareTo(VirtualPath?)
Compares the instance's path with another VirtualPath.
Declaration
public int CompareTo(VirtualPath? other)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | other | The other VirtualPath to compare with. |
Returns
| Type | Description |
|---|---|
| int | An integer indicating the relative order of the paths. |
CompareTo(object?)
Compares the instance's path with another object.
Declaration
public int CompareTo(object? other)
Parameters
| Type | Name | Description |
|---|---|---|
| object | other | The object to compare with. |
Returns
| Type | Description |
|---|---|
| int | An integer indicating the relative order of the paths. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | Thrown if the object is not a VirtualPath. |
Equals(VirtualPath?)
Indicates whether this path is equal to the specified VirtualPath object.
Declaration
public bool Equals(VirtualPath? other)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | other | The VirtualPath object to compare with the instance's path. |
Returns
| Type | Description |
|---|---|
| bool | true if the specified VirtualPath is equal to the instance's path; otherwise, false. |
Equals(object?)
Indicates whether this path is equal to the specified object.
Declaration
public override bool Equals(object? obj)
Parameters
| Type | Name | Description |
|---|---|---|
| object | obj | The object to compare with the instance's path. |
Returns
| Type | Description |
|---|---|
| bool | true if the specified object is equal to the instance's path; otherwise, false. |
Overrides
GetHashCode()
Returns the hash code for this path.
Declaration
public override int GetHashCode()
Returns
| Type | Description |
|---|---|
| int | The hash code for this path. |
Overrides
GetNodeName()
Retrieves the node name from the instance's path.
Declaration
public VirtualNodeName GetNodeName()
Returns
| Type | Description |
|---|---|
| VirtualNodeName | A VirtualNodeName object representing the node name. |
GetParentPath()
Gets the parent path of the instance's path.
Declaration
public VirtualPath GetParentPath()
Returns
| Type | Description |
|---|---|
| VirtualPath | A VirtualPath representing the parent path. |
GetPartsLinkedList()
Gets the parts of the path as a linked list.
Declaration
public LinkedList<VirtualNodeName> GetPartsLinkedList()
Returns
| Type | Description |
|---|---|
| LinkedList<VirtualNodeName> | A LinkedList<T> of VirtualNodeName objects representing the path parts. |
GetPartsList()
Retrieves the node parts of the path as a list. This method converts the node parts stored in a linked list structure into a list structure, making it more convenient for sequential access and operations that require indexing.
Declaration
public List<VirtualNodeName> GetPartsList()
Returns
| Type | Description |
|---|---|
| List<VirtualNodeName> | A List<T> of VirtualNodeName objects representing the node parts of the path. |
GetRelativePath(VirtualPath)
Gets the relative path from the specified base path.
Declaration
public VirtualPath GetRelativePath(VirtualPath basePath)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | basePath | The base path. |
Returns
| Type | Description |
|---|---|
| VirtualPath | A VirtualPath representing the relative path. |
Exceptions
| Type | Condition |
|---|---|
| InvalidOperationException | Thrown if the instance's path is not absolute: This exception occurs when
the method is called on a VirtualPath instance that does
not start with the root path separator, indicating that it is not an
absolute path.
Thrown if the base path is not absolute: This exception occurs when
the |
IsSubdirectory(VirtualPath)
Determines whether this instance's path is a subdirectory of the specified parent path.
Declaration
public bool IsSubdirectory(VirtualPath parentPath)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | parentPath | The parent VirtualPath. |
Returns
| Type | Description |
|---|---|
| bool | true if this instance's path is a subdirectory of the parent path; otherwise, false. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | Thrown if this instance's path or the parent path is empty. |
IsValidPath(VirtualPath)
Checks if all node names in the specified VirtualPath are considered valid
by IsValidNodeName(VirtualNodeName). Returns false immediately if an invalid node name is found.
Declaration
public static bool IsValidPath(VirtualPath path)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | path | The VirtualPath object to validate. |
Returns
| Type | Description |
|---|---|
| bool |
|
NormalizePath()
Normalizes the instance's path.
Declaration
public VirtualPath NormalizePath()
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath instance with the normalized path. |
NormalizePath(string)
Normalizes the specified path string.
Declaration
public static string NormalizePath(string path)
Parameters
| Type | Name | Description |
|---|---|---|
| string | path | The path string to normalize. |
Returns
| Type | Description |
|---|---|
| string | A normalized path string. |
Exceptions
| Type | Condition |
|---|---|
| InvalidOperationException | Thrown when attempting to navigate above the root directory. |
StartsWith(VirtualPath)
Determines whether the instance's path starts with the specified path.
Declaration
public bool StartsWith(VirtualPath path)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | path | The VirtualPath to compare with. |
Returns
| Type | Description |
|---|---|
| bool | true if the instance's path starts with the specified path; otherwise, false. |
ToString()
Returns a string that represents the instance's path.
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| string | A string that represents the instance's path. |
Overrides
TrimEndSlash()
Removes the trailing slash from the path.
Declaration
public VirtualPath TrimEndSlash()
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath without the trailing slash. |
Operators
operator +(VirtualPath, VirtualNodeName)
Combines a VirtualPath with a VirtualNodeName.
Declaration
public static VirtualPath operator +(VirtualPath path, VirtualNodeName nodeName)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | path | The VirtualPath. |
| VirtualNodeName | nodeName | The VirtualNodeName. |
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath representing the combined path. |
operator +(VirtualPath, VirtualPath)
Combines two VirtualPath instances.
Declaration
public static VirtualPath operator +(VirtualPath path1, VirtualPath path2)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | path1 | The first VirtualPath. |
| VirtualPath | path2 | The second VirtualPath. |
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath representing the combined path. |
operator +(VirtualPath, char)
Combines a VirtualPath with a character.
Declaration
public static VirtualPath operator +(VirtualPath path, char chr)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | path | The VirtualPath. |
| char | chr | The character to combine with the path. |
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath representing the combined path. |
operator +(VirtualPath, string)
Combines a VirtualPath with a string.
Declaration
public static VirtualPath operator +(VirtualPath path, string str)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | path | The VirtualPath. |
| string | str | The string to combine with the path. |
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath representing the combined path. |
operator +(char, VirtualPath)
Combines a character with a VirtualPath.
Declaration
public static VirtualPath operator +(char chr, VirtualPath path)
Parameters
| Type | Name | Description |
|---|---|---|
| char | chr | The character to combine with the path. |
| VirtualPath | path | The VirtualPath. |
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath representing the combined path. |
operator +(string, VirtualPath)
Combines a string with a VirtualPath.
Declaration
public static VirtualPath operator +(string str, VirtualPath path)
Parameters
| Type | Name | Description |
|---|---|---|
| string | str | The string to combine with the path. |
| VirtualPath | path | The VirtualPath. |
Returns
| Type | Description |
|---|---|
| VirtualPath | A new VirtualPath representing the combined path. |
operator ==(VirtualPath?, VirtualPath?)
Determines whether two VirtualPath instances are equal.
Declaration
public static bool operator ==(VirtualPath? left, VirtualPath? right)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | left | The left VirtualPath. |
| VirtualPath | right | The right VirtualPath. |
Returns
| Type | Description |
|---|---|
| bool | true if the paths are equal; otherwise, false. |
implicit operator string(VirtualPath?)
Implicitly converts a VirtualPath to a string.
Declaration
public static implicit operator string(VirtualPath? virtualPath)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | virtualPath | The VirtualPath object. |
Returns
| Type | Description |
|---|---|
| string | The string representation of the VirtualPath, or an empty string if the path is null. |
implicit operator VirtualPath(string)
Implicitly converts a string to a VirtualPath.
Declaration
public static implicit operator VirtualPath(string path)
Parameters
| Type | Name | Description |
|---|---|---|
| string | path | The string representation of the path. |
Returns
| Type | Description |
|---|---|
| VirtualPath | A VirtualPath object representing the given string path. |
operator !=(VirtualPath?, VirtualPath?)
Determines whether two VirtualPath instances are not equal.
Declaration
public static bool operator !=(VirtualPath? left, VirtualPath? right)
Parameters
| Type | Name | Description |
|---|---|---|
| VirtualPath | left | The left VirtualPath. |
| VirtualPath | right | The right VirtualPath. |
Returns
| Type | Description |
|---|---|
| bool | true if the paths are not equal; otherwise, false. |