# Juliet\include\Core\HotReload\HotReload

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

## AI Description
The `HotReload` component in the Juliet library is designed to facilitate hot code reloading for applications. It provides a set of functions to initialize, shutdown, load, and unload code dynamically. The main purpose of this component is to allow developers to modify their application's code without having to restart the entire application, which can be time-consuming and disruptive.

The `HotReloadCode` struct encapsulates all the necessary information for managing the hot reload process, including paths to the DLLs, lock files, and memory arenas. The `InitHotReloadCode` function initializes these paths based on the base path of the application and creates the required full paths. It also loads the code into an arena.

The `ShutdownHotReloadCode` function releases all resources associated with the hot reload process, including the arena and any allocated memory. The `ReloadCode` function attempts to load the code again after a specified number of tries, ensuring that the application can continue running without interruption.

This component is particularly useful for development environments where changes are frequent or when debugging issues in real-time.

## Symbols

### Namespace `Juliet`

#### Classes, Structs & Unions
- `struct HotReloadCode`

#### Functions & Methods
- `extern JULIET_API void InitHotReloadCode(HotReloadCode& code, String dllName, String transientDllName, String lockFilename)`
- `extern JULIET_API void ShutdownHotReloadCode(HotReloadCode& code)`
- `extern JULIET_API void LoadCode(HotReloadCode& code)`
- `extern JULIET_API void UnloadCode(HotReloadCode& code)`
- `extern JULIET_API void ReloadCode(HotReloadCode& code)`
- `extern JULIET_API bool ShouldReloadCode(const HotReloadCode& code)`

