Class Location
Represents a location inside a possibly nested IAbstractMarkupDataContainer collection.
Implements
Inherited Members
Namespace: SdlSdl.FileTypeSupportFrameworkBilingualApi
Assembly: Sdl.FileTypeSupport.Framework.Core.dll
Syntax
public class Location : ICloneable
Remarks
The parent in the top level location (index 0) is the root container (often IParagraph or ISegment). The BottomLevel is the location in the lowest level.
Constructors
Location()
Default constructor
Declaration
public Location()
Location(IAbstractMarkupDataContainer, IAbstractMarkupData)
Creates a location that corresponds to the position of the item with regards to the specified root container.
Declaration
public Location(IAbstractMarkupDataContainer rootContainer, IAbstractMarkupData itemAtLocation)
Parameters
Type | Name | Description |
---|---|---|
IAbstractMarkupDataContainer | rootContainer | Must not be null |
IAbstractMarkupData | itemAtLocation | Must be an item somewhere inside the root container, i.e. the root container must be an ancestor to the item. |
Location(IAbstractMarkupDataContainer, bool)
Initialize the location to the first or last position in the specified root container.
Declaration
public Location(IAbstractMarkupDataContainer rootContainer, bool firstLocation)
Parameters
Type | Name | Description |
---|---|---|
IAbstractMarkupDataContainer | rootContainer | |
bool | firstLocation | Indicates whether the location should be initialized to the first or the last available location of the root container. Pass true to initialize it to the first location, and false to initialize it to the last location. |
Location(LevelLocation)
Initializes the location with one level only. This generates a location that is equivalent to the passed-in LevelLocation.
Declaration
public Location(LevelLocation location)
Parameters
Type | Name | Description |
---|---|---|
LevelLocation | location | must not be null |
Location(Location)
Creates a deep clone
Declaration
public Location(Location other)
Parameters
Type | Name | Description |
---|---|---|
Location | other |
Properties
BottomLevel
Quick access to the most specific level
Declaration
public LevelLocation BottomLevel { get; }
Property Value
Type | Description |
---|---|
LevelLocation |
Depth
Returns the number of levels in the location.
Declaration
public int Depth { get; }
Property Value
Type | Description |
---|---|
int |
IsAtEnd
True
if the MoveNext() method
returns false
.
Declaration
public bool IsAtEnd { get; }
Property Value
Type | Description |
---|---|
bool |
IsAtStart
True
if the MovePrevious() method
returns false
.
Declaration
public bool IsAtStart { get; }
Property Value
Type | Description |
---|---|
bool |
IsValid
True if all levels are valid locations and each level corresponds to the location defined in the parent layer.
Declaration
public bool IsValid { get; }
Property Value
Type | Description |
---|---|
bool |
ItemAtLocation
Returns the item at the location specified by the bottom level.
If the location is not valid, or if there is not item at the location (i.e. if it is a location after the last element in a collection), this property returns null.
Declaration
public IAbstractMarkupData ItemAtLocation { get; }
Property Value
Type | Description |
---|---|
IAbstractMarkupData |
Levels
Provides access to the actual collection of levels that this location represents.
Declaration
public List<LevelLocation> Levels { get; }
Property Value
Type | Description |
---|---|
ListLevelLocation |
Methods
Clone()
Creates a deep clone of this object.
Declaration
public object Clone()
Returns
Type | Description |
---|---|
object |
Equals(object)
Returns true
if this location refers to the same position as the other location.
Declaration
public override bool Equals(object obj)
Parameters
Type | Name | Description |
---|---|---|
object | obj |
Returns
Type | Description |
---|---|
bool |
Overrides
GetHashCode()
Returns the hash code of the levels in this location.
Declaration
public override int GetHashCode()
Returns
Type | Description |
---|---|
int |
Overrides
MoveFirstChild()
Changes the location to refer to the position just before the first child node of the item at the current location.
If no child node is available (i.e. the current location does not refer to a node that is an IAbstractMarkupDataContainer), the location is not changed, and this method returns false.
Note that if the item at the current location is a container, but it has no content, the location is still advanced to a location at the index 0 inside the collection, as it is possible to insert new content there.
Declaration
public bool MoveFirstChild()
Returns
Type | Description |
---|---|
bool | True if the location was changed successfully |
MoveLastChild()
Changes the location to just behind the last child node of the item at the current location.
If no child node is available (i.e. the current location does not refer to a node that is an IAbstractMarkupDataContainer), the location is not changed, and this method returns false.
Note that if the item at the current location is a container, but it has no content, the location is still advanced to a location at the index 0 inside the collection, as it is possible to insert new content there.
Declaration
public bool MoveLastChild()
Returns
Type | Description |
---|---|
bool | True if the location was changed successfully |
MoveNext()
Advances to the next possible location. This will move to the next available position according to the following priority list:
- First child
- Next Sibling
- Next Parent Sibling
If the location is invalid, the behavior is undefined and exceptions may be thrown.
Declaration
public bool MoveNext()
Returns
Type | Description |
---|---|
bool | True if location was successfully advanced to the next possible position. |
MoveNextSibling()
Advance the location to the next sibling position in the current bottom layer.
If no next sibling position is available (i.e. the location is already behind the last item in the parent collection), the location is not changed, and this method returns false.
Declaration
public bool MoveNextSibling()
Returns
Type | Description |
---|---|
bool | True if the location was changed successfully |
MoveParent()
Changes the location to refer to the position just before the parent of the current bottom level location.
If no parent location is available (i.e. the location is already in the top layer), the location is not changed, and this method returns false.
Declaration
public bool MoveParent()
Returns
Type | Description |
---|---|
bool | True if the location was changed successfully |
MovePrevious()
Moves the location to the preceding available position according to the following priority list:
- Previous Sibling Last Child
- Previous Sibling
- Parent
Declaration
public bool MovePrevious()
Returns
Type | Description |
---|---|
bool | True if the location was successfully moved to a previous position. |
MovePreviousSibling()
Moves the location to the preceding sibling position in the current bottom layer.
If no previous sibling location is available (i.e. the current location is already at the start of the parent collection), the location is not changed, and this method returns false.
Declaration
public bool MovePreviousSibling()
Returns
Type | Description |
---|---|
bool | True if the location was changed successfully |
ToString()
Overridden to provide more useful information while debugging
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
string |