#include <Core/Common/String.h>
#include <Core/HAL/Filesystem/Filesystem.h>
#include <Core/HAL/Filesystem/Filesystem_Platform.h>
#include <Core/HAL/Filesystem/Filesystem_Private.h>
#include <Core/Memory/Allocator.h>

namespace Juliet
{
    namespace
    {
        String CachedBasePath = {};
    }

    String GetBasePath()
    {
        if (!IsValid(CachedBasePath))
        {
            CachedBasePath = Platform::GetBasePath();
        }
        return CachedBasePath;
    }

    bool IsAbsolutePath(String path)
    {
        if (!IsValid(path))
        {
            return false;
        }
        return Platform::IsAbsolutePath(path);
    }

    void InitFilesystem() {}

    void ShutdownFilesystem()
    {
        if (IsValid(CachedBasePath))
        {
            CachedBasePath.Size = 0;
            SafeFree(CachedBasePath.Data);
        }
    }
} // namespace Juliet
