From bdbbcfaf1690455db6989398b5a3caabdb13d4da Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 31 Jul 2003 22:48:08 +0000 Subject: [PATCH] Added CountDescendants(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4174 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../private/kernel/disk_device_manager/KPartition.h | 1 + src/kernel/core/disk_device_manager/KPartition.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/headers/private/kernel/disk_device_manager/KPartition.h b/headers/private/kernel/disk_device_manager/KPartition.h index c05e280902..82e1b073e2 100644 --- a/headers/private/kernel/disk_device_manager/KPartition.h +++ b/headers/private/kernel/disk_device_manager/KPartition.h @@ -130,6 +130,7 @@ public: bool RemoveAllChildren(); KPartition *ChildAt(int32 index) const; int32 CountChildren() const; + int32 CountDescendants() const; // Shadow Partition diff --git a/src/kernel/core/disk_device_manager/KPartition.cpp b/src/kernel/core/disk_device_manager/KPartition.cpp index 7ba762422f..011a3714f8 100644 --- a/src/kernel/core/disk_device_manager/KPartition.cpp +++ b/src/kernel/core/disk_device_manager/KPartition.cpp @@ -656,6 +656,16 @@ KPartition::CountChildren() const return fPartitionData.child_count; } +// CountDescendants +int32 +KPartition::CountDescendants() const +{ + int32 count = 1; + for (int32 i = 0; KPartition *child = ChildAt(i); i++) + count += child->CountDescendants(); + return count; +} + // CreateShadowPartition status_t KPartition::CreateShadowPartition()