Trait/Object

eu.cdevreeze.yaidom.queryapi

HasParent

Related Docs: object HasParent | package queryapi

Permalink

trait HasParent extends HasParentApi

Implementation trait for elements that can be asked for the ancestor elements, if any.

This trait only knows about elements, not about documents as root element parents.

Based on abstract method parentOption alone, this trait offers a rich API for querying the element ancestry of an element.

Linear Supertypes
HasParentApi, AnyElemApi, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. HasParent
  2. HasParentApi
  3. AnyElemApi
  4. AnyRef
  5. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Type Members

  1. abstract type ThisElem <: ThisElemApi

    Permalink

    The ("stable") element type itself.

    The ("stable") element type itself. It is not restricted in the query API traits (only indirectly, through ThisElemApi).

    Concrete element classes will restrict this type to that element class itself.

    Why do we need 2 type members ThisElem and ThisElemApi and not just ThisElem? Consider for example query method implementations in trait ElemLike. Had we used just one type member ThisElem (restricting it to be a sub-type of ElemLike), then a call of a function like findAllChildElems on another element would not return a value of the same type (ElemLike.this.ThisElem) according to the Scala compiler. To prevent the use of casts, we used 2 type members ThisElem and ThisElemApi instead.

    Definition Classes
    AnyElemApi
  2. abstract type ThisElemApi <: HasParent

    Permalink

    Upperbound on type ThisElem, which must be restricted to a sub-type of the query API trait in question.

    Upperbound on type ThisElem, which must be restricted to a sub-type of the query API trait in question.

    Concrete element classes will restrict this type to that element class itself.

    The purely abstract query API traits (XXXApi) should only restrict this type to a sub-type of the query API trait, without putting any further restrictions on the type. This way these purely abstract traits are easy to use as "generic" element contracts abstracting over multiple backing element implementations (for example, Saxon tiny trees and native yaidom elements) without "infecting" the client code with generics.

    To a lesser extent, this should also be true for the partially implemented query API traits (XXXLike).

    Definition Classes
    HasParent → HasParentApi → AnyElemApi

Abstract Value Members

  1. abstract def parentOption: Option[ThisElem]

    Permalink

    Returns the parent element, if any, wrapped in an Option

    Returns the parent element, if any, wrapped in an Option

    Definition Classes
    HasParentApi
  2. abstract def thisElem: ThisElem

    Permalink

    This element itself.

    This element itself.

    Definition Classes
    AnyElemApi

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def ancestors: IndexedSeq[ThisElem]

    Permalink

    Returns ancestorsOrSelf.drop(1)

    Returns ancestorsOrSelf.drop(1)

    Definition Classes
    HasParent → HasParentApi
  5. final def ancestorsOrSelf: IndexedSeq[ThisElem]

    Permalink

    Returns all ancestor elements or self

    Returns all ancestor elements or self

    Definition Classes
    HasParent → HasParentApi
  6. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  7. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def findAncestor(p: (ThisElem) ⇒ Boolean): Option[ThisElem]

    Permalink

    Returns the first found ancestor element obeying the given predicate, if any, wrapped in an Option

    Returns the first found ancestor element obeying the given predicate, if any, wrapped in an Option

    Definition Classes
    HasParent → HasParentApi
  12. final def findAncestorOrSelf(p: (ThisElem) ⇒ Boolean): Option[ThisElem]

    Permalink

    Returns the first found ancestor-or-self element obeying the given predicate, if any, wrapped in an Option

    Returns the first found ancestor-or-self element obeying the given predicate, if any, wrapped in an Option

    Definition Classes
    HasParent → HasParentApi
  13. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  14. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  15. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  16. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  17. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  18. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  19. final def parent: ThisElem

    Permalink

    Returns the equivalent parentOption.get, throwing an exception if this is the root element

    Returns the equivalent parentOption.get, throwing an exception if this is the root element

    Definition Classes
    HasParent → HasParentApi
  20. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  21. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  22. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from HasParentApi

Inherited from AnyElemApi

Inherited from AnyRef

Inherited from Any

Ungrouped