Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions csrc/src/namespace_config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
* @file flash_namespace_config.h
* @brief Configuration file for Flash namespace management and isolation
*
* This header provides configuration macros for managing the Flash namespace
* across a codebase. It allows for flexible namespace naming and provides
* utilities for namespace declaration and scoping.
*
* Usage Examples:
*
* 1. Basic namespace wrapping:
* @code
* BEGIN_FLASH_NAMESPACE
* class FlashDevice {
* // Implementation
* };
* END_FLASH_NAMESPACE
* @endcode
*
* 2. Accessing types within the namespace:
* @code
* FLASH_NAMESPACE_ALIAS(FlashDevice) device;
* @endcode
*
* 3. Defining content within namespace scope:
* @code
* FLASH_NAMESPACE_SCOPE(
* struct Configuration {
* uint32_t size;
* bool enabled;
* };
* )
* @endcode
*
* 4. Custom namespace name:
* @code
* #define FLASH_NAMESPACE flash
* #include "flash_namespace_config.h"
* @endcode
*
* Configuration:
* - The default namespace is 'flash' if FLASH_NAMESPACE is not defined
* - Define FLASH_NAMESPACE before including this header to customize the
* namespace name
*
* Best Practices:
* - Include this header in all files that need access to the Flash namespace
*
*/
#pragma once

#ifndef FLASH_NAMESPACE_CONFIG_H
#define FLASH_NAMESPACE_CONFIG_H

// Set default namespace to flash
#ifndef FLASH_NAMESPACE
#define FLASH_NAMESPACE flash
#endif

#define FLASH_NAMESPACE_ALIAS(name) FLASH_NAMESPACE::name

#define FLASH_NAMESPACE_SCOPE(content) \
namespace FLASH_NAMESPACE { \
content \
}

#endif // FLASH_NAMESPACE_CONFIG_H