#pragma once // [cart-sys3d.h]: 3D cartesian axis type // // -------------------------------------------------------------------------------------------- // #include <string.h> namespace nse { namespace nse_const3d { enum axisType { axisX = 0, axisY = 1, axisZ = 2, axisXY = 3, axisXZ = 4, axisYZ = 5, axisXYZ = 6 }; } const char* axis_name(const nse_const3d::axisType axis); bool axis_value(nse_const3d::axisType *axis, const char* name); bool is_axis_1d(const nse_const3d::axisType axis); bool is_axis_2d(const nse_const3d::axisType axis); bool is_axis_3d(const nse_const3d::axisType axis); namespace nse_const3d { enum domainSideType { westSide = 0, eastSide = 1, southSide = 2, northSide = 3, bottomSide = 4, topSide = 5 }; } } // Implementation: // -------------------------------------------------------------------------------------------- // inline const char* nse::axis_name(const nse_const3d::axisType axis) { if (axis == nse_const3d::axisX) return "X"; if (axis == nse_const3d::axisY) return "Y"; if (axis == nse_const3d::axisZ) return "Z"; if (axis == nse_const3d::axisXY) return "XY"; if (axis == nse_const3d::axisXZ) return "XZ"; if (axis == nse_const3d::axisYZ) return "YZ"; if (axis == nse_const3d::axisXYZ) return "XYZ"; return "UNDEF"; } inline bool nse::axis_value(nse_const3d::axisType *axis, const char* name) { if (!strcmp(name, axis_name(nse_const3d::axisX))) { (*axis) = nse_const3d::axisX; return true; } if (!strcmp(name, axis_name(nse_const3d::axisY))) { (*axis) = nse_const3d::axisY; return true; } if (!strcmp(name, axis_name(nse_const3d::axisZ))) { (*axis) = nse_const3d::axisZ; return true; } if (!strcmp(name, axis_name(nse_const3d::axisXY))) { (*axis) = nse_const3d::axisXY; return true; } if (!strcmp(name, axis_name(nse_const3d::axisXZ))) { (*axis) = nse_const3d::axisXZ; return true; } if (!strcmp(name, axis_name(nse_const3d::axisYZ))) { (*axis) = nse_const3d::axisYZ; return true; } if (!strcmp(name, axis_name(nse_const3d::axisXYZ))) { (*axis) = nse_const3d::axisXYZ; return true; } return false; } inline bool nse::is_axis_1d(const nse_const3d::axisType axis) { return ((axis == nse_const3d::axisX) || (axis == nse_const3d::axisY) || (axis == nse_const3d::axisZ)); } inline bool nse::is_axis_2d(const nse_const3d::axisType axis) { return ((axis == nse_const3d::axisXY) || (axis == nse_const3d::axisXZ) || (axis == nse_const3d::axisYZ)); } inline bool nse::is_axis_3d(const nse_const3d::axisType axis) { return (axis == nse_const3d::axisXYZ); }