Skip to content

Commit

Permalink
feat: 🎸 add tree metrics and refine gumtrtee properties
Browse files Browse the repository at this point in the history
  • Loading branch information
Xanonymous-GitHub committed Jul 18, 2024
1 parent b62cec8 commit add2af2
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
25 changes: 23 additions & 2 deletions core/src/main/kotlin/tw/xcc/gumtree/model/GumTree.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,31 @@ class GumTree :
private val traversalHelper = TraversalHelper(this)
private val compareHelper = CompareHelper(this)

val type: TreeType = TreeType("")
var label: String = ""
val pos: Int = -1
val length: Int = -1
private var label: String = ""

private var _type = TreeType.empty()
private var type: TreeType
get() = _type
set(value) =
synchronized(this) {
_type = value
}

private var _metrics = TreeMetrics.empty()
var metrics: TreeMetrics
get() = _metrics
set(value) =
synchronized(this) {
_metrics = value
}

val descendents: List<GumTree> by lazy {
synchronized(this) {
preOrdered().drop(1)
}
}

fun insertChildAt(
pos: Int,
Expand Down
12 changes: 12 additions & 0 deletions core/src/main/kotlin/tw/xcc/gumtree/model/TreeMetrics.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package tw.xcc.gumtree.model

data class TreeMetrics(
val height: Int,
val depth: Int,
val subTreeSize: Int,
val positionOfParent: Int
) {
companion object {
fun empty(): TreeMetrics = TreeMetrics(-1, -1, -1, -1)
}
}
4 changes: 4 additions & 0 deletions core/src/main/kotlin/tw/xcc/gumtree/model/TreeType.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@ package tw.xcc.gumtree.model

data class TreeType(val name: String) {
fun isEmpty(): Boolean = name.isEmpty()

companion object {
fun empty(): TreeType = TreeType("")
}
}

0 comments on commit add2af2

Please sign in to comment.