# Juliet\include\Core\HAL\Filesystem\Filesystem

## Source Files
- Header: `Juliet\include\Core\HAL\Filesystem\Filesystem.h`
- Source: `Juliet\src\Core\HAL\Filesystem\Filesystem.cpp`

## AI Description
The `Filesystem` component in the Juliet library is designed to manage file paths and operations within a game engine. It provides functions to retrieve the base path of the application directory, the resolved base path for compiled shaders, and build full paths to asset files based on their filenames. The component also includes functionality to check if a given path is absolute and initializes the filesystem by probing candidate paths for the compiled shader directory. This ensures that the engine can locate necessary resources correctly during runtime.

## Symbols

### Namespace `Juliet`

#### Functions & Methods
- `// Returns the path to the application directory
    [[nodiscard]] extern JULIET_API String GetBasePath()`
- `// Returns the resolved base path to the compiled shaders directory.
    // In dev, this resolves to ../../Assets/compiled/ relative to the exe.
    // In shipping, this resolves to Assets/Shaders/ next to the exe.
     [[nodiscard]] extern JULIET_API String GetAssetBasePath()`
- `// Builds a full path to an asset file given its filename (e.g. "Triangle.vert.dxil").
    // The caller owns the returned buffer and must free it.
    [[nodiscard]] extern JULIET_API String GetAssetPath(String filename)`
- `[[nodiscard]]extern JULIET_API bool IsAbsolutePath(String path)`

