Files

103 lines
2.2 KiB
C++
Raw Permalink Normal View History

2026-07-12 14:22:00 +04:00
#ifndef BUSINESS_LOGIC_H
#define BUSINESS_LOGIC_H
/* Opening bracket */
#define OPEN {
/* Closing bracket */
#define CLOSE }
/* Begin of namespace */
#define BEGIN_NAMESPACE(name) \
namespace name OPEN
/* Begin of namespace */
#define END_NAMESPACE \
CLOSE
/* Declaring classes of factory method */
#define DFM_TYPES \
class Product; \
class Creator;
/* Factory method namespace declaration */
#define DFM_NAMESPACE(name) \
BEGIN_NAMESPACE(name) \
DFM_TYPES \
END_NAMESPACE
/* Factory method base cod declaration */
#define DFM_BASE \
DFM_NAMESPACE(Abstract) \
DFM_NAMESPACE(One) \
DFM_NAMESPACE(Family)
namespace BusinessLogic
{
namespace Hash
{
namespace Function
{
DFM_BASE
DFM_NAMESPACE(FNV1a)
DFM_NAMESPACE(Standart)
DFM_NAMESPACE(Equivalent)
namespace Pattern
{
DFM_NAMESPACE(FamilyToOne)
}
}
namespace Algorithm
{
DFM_BASE
DFM_NAMESPACE(LinearProbing)
DFM_NAMESPACE(QuadraticProbing)
DFM_NAMESPACE(PseudorandomProbing)
DFM_NAMESPACE(DoubleHashing)
}
namespace Factory
{
class Abstract;
class One;
class Family;
}
namespace Table /* Only string data */
{
class Abstract;
class OpenAddressing; // Direct address hash function
class Chains; // Hash function implemented by the chain method
namespace Pattern
{
class InterfaceSubscriber;
class Publisher;
}
}
}
namespace Pattern // Can be used for different classes
{
template<typename T>
class Singleton;
}
namespace Convert
{
class FromStdString;
}
namespace Statistics
{
class Dispersion;
}
}
#endif // BUSINESS_LOGIC_H