root/src/kits/debugger/files/LocatableDirectory.cpp
/*
 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */

#include "LocatableDirectory.h"


LocatableDirectory::LocatableDirectory(LocatableEntryOwner* owner,
        LocatableDirectory* parent, const BString& path)
        :
        LocatableEntry(owner, parent),
        fPath(path),
        fLocatedPath()
{
}


LocatableDirectory::~LocatableDirectory()
{
}


const char*
LocatableDirectory::Name() const
{
        if (fPath.Length() <= 1)
                return fPath;

        int32 lastSlash = fPath.FindLast('/');
                // return -1, if not found
        return fPath.String() + (lastSlash + 1);
}


const char*
LocatableDirectory::Path() const
{
        return fPath.String();
}


void
LocatableDirectory::GetPath(BString& _path) const
{
        _path = fPath;
}


bool
LocatableDirectory::GetLocatedPath(BString& _path) const
{
        if (fLocatedPath.Length() == 0)
                return false;
        _path = fLocatedPath;
        return true;
}


void
LocatableDirectory::SetLocatedPath(const BString& path, bool implicit)
{
        fLocatedPath = path;
        fState = implicit
                ? LOCATABLE_ENTRY_LOCATED_IMPLICITLY
                : LOCATABLE_ENTRY_LOCATED_EXPLICITLY;
}


void
LocatableDirectory::AddEntry(LocatableEntry* entry)
{
        fEntries.Add(entry);
}


void
LocatableDirectory::RemoveEntry(LocatableEntry* entry)
{
        fEntries.Remove(entry);
}