/* * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2024 Jon Evans * Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #include #include #include #include #include #include #include #include #include // Adding something new here? Add it to test_api_enums.cpp! using namespace kiapi::board; template<> types::PadType ToProtoEnum( PAD_ATTRIB aValue ) { switch( aValue ) { case PAD_ATTRIB::PTH: return types::PadType::PT_PTH; case PAD_ATTRIB::SMD: return types::PadType::PT_SMD; case PAD_ATTRIB::CONN: return types::PadType::PT_EDGE_CONNECTOR; case PAD_ATTRIB::NPTH: return types::PadType::PT_NPTH; default: wxCHECK_MSG( false, types::PadType::PT_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> PAD_ATTRIB FromProtoEnum( types::PadType aValue ) { switch( aValue ) { case types::PadType::PT_UNKNOWN: case types::PadType::PT_PTH: return PAD_ATTRIB::PTH; case types::PadType::PT_SMD: return PAD_ATTRIB::SMD; case types::PadType::PT_EDGE_CONNECTOR: return PAD_ATTRIB::CONN; case types::PadType::PT_NPTH: return PAD_ATTRIB::NPTH; default: wxCHECK_MSG( false, PAD_ATTRIB::PTH, "Unhandled case in FromProtoEnum" ); } } template<> types::DrillShape ToProtoEnum( PAD_DRILL_SHAPE aValue ) { switch( aValue ) { case PAD_DRILL_SHAPE::CIRCLE: return types::DrillShape::DS_CIRCLE; case PAD_DRILL_SHAPE::OBLONG: return types::DrillShape::DS_OBLONG; case PAD_DRILL_SHAPE::UNDEFINED: return types::DrillShape::DS_UNDEFINED; default: wxCHECK_MSG( false, types::DrillShape::DS_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> PAD_DRILL_SHAPE FromProtoEnum( types::DrillShape aValue ) { switch( aValue ) { case types::DrillShape::DS_CIRCLE: return PAD_DRILL_SHAPE::CIRCLE; case types::DrillShape::DS_OBLONG: return PAD_DRILL_SHAPE::OBLONG; case types::DrillShape::DS_UNKNOWN: case types::DrillShape::DS_UNDEFINED: return PAD_DRILL_SHAPE::UNDEFINED; default: wxCHECK_MSG( false, PAD_DRILL_SHAPE::UNDEFINED, "Unhandled case in FromProtoEnum" ); } } template<> types::PadStackShape ToProtoEnum( PAD_SHAPE aValue ) { switch( aValue ) { case PAD_SHAPE::CIRCLE: return types::PadStackShape::PSS_CIRCLE; case PAD_SHAPE::RECTANGLE: return types::PadStackShape::PSS_RECTANGLE; case PAD_SHAPE::OVAL: return types::PadStackShape::PSS_OVAL; case PAD_SHAPE::TRAPEZOID: return types::PadStackShape::PSS_TRAPEZOID; case PAD_SHAPE::ROUNDRECT: return types::PadStackShape::PSS_ROUNDRECT; case PAD_SHAPE::CHAMFERED_RECT: return types::PadStackShape::PSS_CHAMFEREDRECT; case PAD_SHAPE::CUSTOM: return types::PadStackShape::PSS_CUSTOM; default: wxCHECK_MSG( false, types::PadStackShape::PSS_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> PAD_SHAPE FromProtoEnum( types::PadStackShape aValue ) { switch( aValue ) { case types::PadStackShape::PSS_UNKNOWN: case types::PadStackShape::PSS_CIRCLE: return PAD_SHAPE::CIRCLE; case types::PadStackShape::PSS_RECTANGLE: return PAD_SHAPE::RECTANGLE; case types::PadStackShape::PSS_OVAL: return PAD_SHAPE::OVAL; case types::PadStackShape::PSS_TRAPEZOID: return PAD_SHAPE::TRAPEZOID; case types::PadStackShape::PSS_ROUNDRECT: return PAD_SHAPE::ROUNDRECT; case types::PadStackShape::PSS_CHAMFEREDRECT: return PAD_SHAPE::CHAMFERED_RECT; case types::PadStackShape::PSS_CUSTOM: return PAD_SHAPE::CUSTOM; default: wxCHECK_MSG( false, PAD_SHAPE::CIRCLE, "Unhandled case in FromProtoEnum" ); } } template<> types::PadStackType ToProtoEnum( PADSTACK::MODE aValue ) { switch( aValue ) { case PADSTACK::MODE::NORMAL: return types::PadStackType::PST_NORMAL; case PADSTACK::MODE::FRONT_INNER_BACK: return types::PadStackType::PST_FRONT_INNER_BACK; case PADSTACK::MODE::CUSTOM: return types::PadStackType::PST_CUSTOM; default: wxCHECK_MSG( false, types::PadStackType::PST_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> PADSTACK::MODE FromProtoEnum( types::PadStackType aValue ) { switch( aValue ) { case types::PadStackType::PST_UNKNOWN: case types::PadStackType::PST_NORMAL: return PADSTACK::MODE::NORMAL; case types::PadStackType::PST_FRONT_INNER_BACK: return PADSTACK::MODE::FRONT_INNER_BACK; case types::PadStackType::PST_CUSTOM: return PADSTACK::MODE::CUSTOM; default: wxCHECK_MSG( false, PADSTACK::MODE::NORMAL, "Unhandled case in FromProtoEnum" ); } } template<> types::ViaType ToProtoEnum( VIATYPE aValue ) { switch( aValue ) { case VIATYPE::THROUGH: return types::ViaType::VT_THROUGH; case VIATYPE::BLIND_BURIED: return types::ViaType::VT_BLIND_BURIED; case VIATYPE::MICROVIA: return types::ViaType::VT_MICRO; default: wxCHECK_MSG( false, types::ViaType::VT_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> VIATYPE FromProtoEnum( types::ViaType aValue ) { switch( aValue ) { case types::ViaType::VT_UNKNOWN: case types::ViaType::VT_THROUGH: return VIATYPE::THROUGH; case types::ViaType::VT_BLIND_BURIED: return VIATYPE::BLIND_BURIED; case types::ViaType::VT_MICRO: return VIATYPE::MICROVIA; default: wxCHECK_MSG( false, VIATYPE::THROUGH, "Unhandled case in FromProtoEnum" ); } } template<> types::ZoneConnectionStyle ToProtoEnum( ZONE_CONNECTION aValue ) { switch( aValue ) { case ZONE_CONNECTION::INHERITED: return types::ZoneConnectionStyle::ZCS_INHERITED; case ZONE_CONNECTION::NONE: return types::ZoneConnectionStyle::ZCS_NONE; case ZONE_CONNECTION::THERMAL: return types::ZoneConnectionStyle::ZCS_THERMAL; case ZONE_CONNECTION::FULL: return types::ZoneConnectionStyle::ZCS_FULL; case ZONE_CONNECTION::THT_THERMAL: return types::ZoneConnectionStyle::ZCS_PTH_THERMAL; default: wxCHECK_MSG( false, types::ZoneConnectionStyle::ZCS_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> ZONE_CONNECTION FromProtoEnum( types::ZoneConnectionStyle aValue ) { switch( aValue ) { case types::ZoneConnectionStyle::ZCS_UNKNOWN: return ZONE_CONNECTION::INHERITED; case types::ZoneConnectionStyle::ZCS_INHERITED: return ZONE_CONNECTION::INHERITED; case types::ZoneConnectionStyle::ZCS_NONE: return ZONE_CONNECTION::NONE; case types::ZoneConnectionStyle::ZCS_THERMAL: return ZONE_CONNECTION::THERMAL; case types::ZoneConnectionStyle::ZCS_FULL: return ZONE_CONNECTION::FULL; case types::ZoneConnectionStyle::ZCS_PTH_THERMAL: return ZONE_CONNECTION::THT_THERMAL; default: wxCHECK_MSG( false, ZONE_CONNECTION::INHERITED, "Unhandled case in FromProtoEnum" ); } } template<> types::UnconnectedLayerRemoval ToProtoEnum( PADSTACK::UNCONNECTED_LAYER_MODE aValue ) { switch( aValue ) { case PADSTACK::UNCONNECTED_LAYER_MODE::KEEP_ALL: return types::UnconnectedLayerRemoval::ULR_KEEP; case PADSTACK::UNCONNECTED_LAYER_MODE::REMOVE_ALL: return types::UnconnectedLayerRemoval::ULR_REMOVE; case PADSTACK::UNCONNECTED_LAYER_MODE::REMOVE_EXCEPT_START_AND_END: return types::UnconnectedLayerRemoval::ULR_REMOVE_EXCEPT_START_AND_END; default: wxCHECK_MSG( false, types::UnconnectedLayerRemoval::ULR_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> PADSTACK::UNCONNECTED_LAYER_MODE FromProtoEnum( types::UnconnectedLayerRemoval aValue ) { switch( aValue ) { case types::UnconnectedLayerRemoval::ULR_UNKNOWN: case types::UnconnectedLayerRemoval::ULR_KEEP: return PADSTACK::UNCONNECTED_LAYER_MODE::KEEP_ALL; case types::UnconnectedLayerRemoval::ULR_REMOVE: return PADSTACK::UNCONNECTED_LAYER_MODE::REMOVE_ALL; case types::UnconnectedLayerRemoval::ULR_REMOVE_EXCEPT_START_AND_END: return PADSTACK::UNCONNECTED_LAYER_MODE::REMOVE_EXCEPT_START_AND_END; default: wxCHECK_MSG( false, PADSTACK::UNCONNECTED_LAYER_MODE::KEEP_ALL, "Unhandled case in FromProtoEnum"); } } template<> types::IslandRemovalMode ToProtoEnum( ISLAND_REMOVAL_MODE aValue ) { switch( aValue ) { case ISLAND_REMOVAL_MODE::ALWAYS: return types::IslandRemovalMode::IRM_ALWAYS; case ISLAND_REMOVAL_MODE::NEVER: return types::IslandRemovalMode::IRM_NEVER; case ISLAND_REMOVAL_MODE::AREA: return types::IslandRemovalMode::IRM_AREA; default: wxCHECK_MSG( false, types::IslandRemovalMode::IRM_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> ISLAND_REMOVAL_MODE FromProtoEnum( types::IslandRemovalMode aValue ) { switch( aValue ) { case types::IslandRemovalMode::IRM_UNKNOWN: case types::IslandRemovalMode::IRM_ALWAYS: return ISLAND_REMOVAL_MODE::ALWAYS; case types::IslandRemovalMode::IRM_NEVER: return ISLAND_REMOVAL_MODE::NEVER; case types::IslandRemovalMode::IRM_AREA: return ISLAND_REMOVAL_MODE::AREA; default: wxCHECK_MSG( false, ISLAND_REMOVAL_MODE::ALWAYS, "Unhandled case in FromProtoEnum" ); } } template<> types::ZoneFillMode ToProtoEnum( ZONE_FILL_MODE aValue ) { switch( aValue ) { case ZONE_FILL_MODE::POLYGONS: return types::ZoneFillMode::ZFM_SOLID; case ZONE_FILL_MODE::HATCH_PATTERN: return types::ZoneFillMode::ZFM_HATCHED; default: wxCHECK_MSG( false, types::ZoneFillMode::ZFM_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> ZONE_FILL_MODE FromProtoEnum( types::ZoneFillMode aValue ) { switch( aValue ) { case types::ZoneFillMode::ZFM_UNKNOWN: case types::ZoneFillMode::ZFM_SOLID: return ZONE_FILL_MODE::POLYGONS; case types::ZoneFillMode::ZFM_HATCHED: return ZONE_FILL_MODE::HATCH_PATTERN; default: wxCHECK_MSG( false, ZONE_FILL_MODE::POLYGONS, "Unhandled case in FromProtoEnum" ); } } template<> types::ZoneBorderStyle ToProtoEnum( ZONE_BORDER_DISPLAY_STYLE aValue ) { switch( aValue ) { case ZONE_BORDER_DISPLAY_STYLE::NO_HATCH: return types::ZoneBorderStyle::ZBS_SOLID; case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL: return types::ZoneBorderStyle::ZBS_DIAGONAL_FULL; case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE: return types::ZoneBorderStyle::ZBS_DIAGONAL_EDGE; case ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER: return types::ZoneBorderStyle::ZBS_INVISIBLE; default: wxCHECK_MSG( false, types::ZoneBorderStyle::ZBS_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> ZONE_BORDER_DISPLAY_STYLE FromProtoEnum( types::ZoneBorderStyle aValue ) { switch( aValue ) { case types::ZoneBorderStyle::ZBS_SOLID: return ZONE_BORDER_DISPLAY_STYLE::NO_HATCH; case types::ZoneBorderStyle::ZBS_DIAGONAL_FULL: return ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL; case types::ZoneBorderStyle::ZBS_UNKNOWN: case types::ZoneBorderStyle::ZBS_DIAGONAL_EDGE: return ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE; case types::ZoneBorderStyle::ZBS_INVISIBLE: return ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER; default: wxCHECK_MSG( false, ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE, "Unhandled case in FromProtoEnum" ); } } template<> types::PlacementRuleSourceType ToProtoEnum( RULE_AREA_PLACEMENT_SOURCE_TYPE aValue ) { switch( aValue ) { case RULE_AREA_PLACEMENT_SOURCE_TYPE::SHEETNAME: return types::PlacementRuleSourceType::PRST_SHEET_NAME; case RULE_AREA_PLACEMENT_SOURCE_TYPE::COMPONENT_CLASS: return types::PlacementRuleSourceType::PRST_COMPONENT_CLASS; default: wxCHECK_MSG( false, types::PlacementRuleSourceType::PRST_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> RULE_AREA_PLACEMENT_SOURCE_TYPE FromProtoEnum( types::PlacementRuleSourceType aValue ) { switch( aValue ) { case types::PlacementRuleSourceType::PRST_UNKNOWN: case types::PlacementRuleSourceType::PRST_SHEET_NAME: return RULE_AREA_PLACEMENT_SOURCE_TYPE::SHEETNAME; case types::PlacementRuleSourceType::PRST_COMPONENT_CLASS: return RULE_AREA_PLACEMENT_SOURCE_TYPE::COMPONENT_CLASS; default: wxCHECK_MSG( false, RULE_AREA_PLACEMENT_SOURCE_TYPE::SHEETNAME, "Unhandled case in FromProtoEnum" ); } } template<> types::TeardropType ToProtoEnum( TEARDROP_TYPE aValue ) { switch( aValue ) { case TEARDROP_TYPE::TD_NONE: return types::TeardropType::TDT_NONE; case TEARDROP_TYPE::TD_UNSPECIFIED: return types::TeardropType::TDT_UNSPECIFIED; case TEARDROP_TYPE::TD_VIAPAD: return types::TeardropType::TDT_VIA_PAD; case TEARDROP_TYPE::TD_TRACKEND: return types::TeardropType::TDT_TRACK_END; default: wxCHECK_MSG( false, types::TeardropType::TDT_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> TEARDROP_TYPE FromProtoEnum( types::TeardropType aValue ) { switch( aValue ) { case types::TeardropType::TDT_UNKNOWN: case types::TeardropType::TDT_NONE: return TEARDROP_TYPE::TD_NONE; case types::TeardropType::TDT_UNSPECIFIED: return TEARDROP_TYPE::TD_UNSPECIFIED; case types::TeardropType::TDT_VIA_PAD: return TEARDROP_TYPE::TD_VIAPAD; case types::TeardropType::TDT_TRACK_END: return TEARDROP_TYPE::TD_TRACKEND; default: wxCHECK_MSG( false, TEARDROP_TYPE::TD_NONE, "Unhandled case in FromProtoEnum" ); } } template<> types::DimensionTextBorderStyle ToProtoEnum( DIM_TEXT_BORDER aValue ) { switch( aValue ) { case DIM_TEXT_BORDER::NONE: return types::DimensionTextBorderStyle::DTBS_NONE; case DIM_TEXT_BORDER::RECTANGLE: return types::DimensionTextBorderStyle::DTBS_RECTANGLE; case DIM_TEXT_BORDER::CIRCLE: return types::DimensionTextBorderStyle::DTBS_CIRCLE; case DIM_TEXT_BORDER::ROUNDRECT: return types::DimensionTextBorderStyle::DTBS_ROUNDRECT; default: wxCHECK_MSG( false, types::DimensionTextBorderStyle::DTBS_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> DIM_TEXT_BORDER FromProtoEnum( types::DimensionTextBorderStyle aValue ) { switch( aValue ) { case types::DimensionTextBorderStyle::DTBS_UNKNOWN: case types::DimensionTextBorderStyle::DTBS_NONE: return DIM_TEXT_BORDER::NONE; case types::DimensionTextBorderStyle::DTBS_RECTANGLE: return DIM_TEXT_BORDER::RECTANGLE; case types::DimensionTextBorderStyle::DTBS_CIRCLE: return DIM_TEXT_BORDER::CIRCLE; case types::DimensionTextBorderStyle::DTBS_ROUNDRECT: return DIM_TEXT_BORDER::ROUNDRECT; default: wxCHECK_MSG( false, DIM_TEXT_BORDER::NONE, "Unhandled case in FromProtoEnum" ); } } template<> types::DimensionUnitFormat ToProtoEnum( DIM_UNITS_FORMAT aValue ) { switch( aValue ) { case DIM_UNITS_FORMAT::NO_SUFFIX: return types::DimensionUnitFormat::DUF_NO_SUFFIX; case DIM_UNITS_FORMAT::BARE_SUFFIX: return types::DimensionUnitFormat::DUF_BARE_SUFFIX; case DIM_UNITS_FORMAT::PAREN_SUFFIX: return types::DimensionUnitFormat::DUF_PAREN_SUFFIX; default: wxCHECK_MSG( false, types::DimensionUnitFormat::DUF_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> DIM_UNITS_FORMAT FromProtoEnum( types::DimensionUnitFormat aValue ) { switch( aValue ) { case types::DimensionUnitFormat::DUF_UNKNOWN: case types::DimensionUnitFormat::DUF_NO_SUFFIX: return DIM_UNITS_FORMAT::NO_SUFFIX; case types::DimensionUnitFormat::DUF_BARE_SUFFIX: return DIM_UNITS_FORMAT::BARE_SUFFIX; case types::DimensionUnitFormat::DUF_PAREN_SUFFIX: return DIM_UNITS_FORMAT::PAREN_SUFFIX; default: wxCHECK_MSG( false, DIM_UNITS_FORMAT::NO_SUFFIX, "Unhandled case in FromProtoEnum" ); } } template<> types::DimensionArrowDirection ToProtoEnum( DIM_ARROW_DIRECTION aValue ) { switch( aValue ) { case DIM_ARROW_DIRECTION::INWARD: return types::DimensionArrowDirection::DAD_INWARD; case DIM_ARROW_DIRECTION::OUTWARD: return types::DimensionArrowDirection::DAD_OUTWARD; default: wxCHECK_MSG( false, types::DimensionArrowDirection::DAD_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> DIM_ARROW_DIRECTION FromProtoEnum( types::DimensionArrowDirection aValue ) { switch( aValue ) { case types::DimensionArrowDirection::DAD_INWARD: return DIM_ARROW_DIRECTION::INWARD; case types::DimensionArrowDirection::DAD_UNKNOWN: case types::DimensionArrowDirection::DAD_OUTWARD: return DIM_ARROW_DIRECTION::OUTWARD; default: wxCHECK_MSG( false, DIM_ARROW_DIRECTION::OUTWARD, "Unhandled case in FromProtoEnum" ); } } template<> types::DimensionPrecision ToProtoEnum( DIM_PRECISION aValue ) { switch( aValue ) { case DIM_PRECISION::X: return types::DimensionPrecision::DP_FIXED_0; case DIM_PRECISION::X_X: return types::DimensionPrecision::DP_FIXED_1; case DIM_PRECISION::X_XX: return types::DimensionPrecision::DP_FIXED_2; case DIM_PRECISION::X_XXX: return types::DimensionPrecision::DP_FIXED_3; case DIM_PRECISION::X_XXXX: return types::DimensionPrecision::DP_FIXED_4; case DIM_PRECISION::X_XXXXX: return types::DimensionPrecision::DP_FIXED_5; case DIM_PRECISION::V_VV: return types::DimensionPrecision::DP_SCALED_IN_2; case DIM_PRECISION::V_VVV: return types::DimensionPrecision::DP_SCALED_IN_3; case DIM_PRECISION::V_VVVV: return types::DimensionPrecision::DP_SCALED_IN_4; case DIM_PRECISION::V_VVVVV: return types::DimensionPrecision::DP_SCALED_IN_5; default: wxCHECK_MSG( false, types::DimensionPrecision::DP_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> DIM_PRECISION FromProtoEnum( types::DimensionPrecision aValue ) { switch( aValue ) { case types::DimensionPrecision::DP_FIXED_0: return DIM_PRECISION::X; case types::DimensionPrecision::DP_FIXED_1: return DIM_PRECISION::X_X; case types::DimensionPrecision::DP_FIXED_2: return DIM_PRECISION::X_XX; case types::DimensionPrecision::DP_FIXED_3: return DIM_PRECISION::X_XXX; case types::DimensionPrecision::DP_FIXED_4: return DIM_PRECISION::X_XXXX; case types::DimensionPrecision::DP_FIXED_5: return DIM_PRECISION::X_XXXXX; case types::DimensionPrecision::DP_UNKNOWN: case types::DimensionPrecision::DP_SCALED_IN_2: return DIM_PRECISION::V_VV; case types::DimensionPrecision::DP_SCALED_IN_3: return DIM_PRECISION::V_VVV; case types::DimensionPrecision::DP_SCALED_IN_4: return DIM_PRECISION::V_VVVV; case types::DimensionPrecision::DP_SCALED_IN_5: return DIM_PRECISION::V_VVVVV; default: wxCHECK_MSG( false, DIM_PRECISION::V_VV, "Unhandled case in FromProtoEnum" ); } } template<> types::DimensionTextPosition ToProtoEnum( DIM_TEXT_POSITION aValue ) { switch( aValue ) { case DIM_TEXT_POSITION::OUTSIDE: return types::DimensionTextPosition::DTP_OUTSIDE; case DIM_TEXT_POSITION::INLINE: return types::DimensionTextPosition::DTP_INLINE; case DIM_TEXT_POSITION::MANUAL: return types::DimensionTextPosition::DTP_MANUAL; default: wxCHECK_MSG( false, types::DimensionTextPosition::DTP_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> DIM_TEXT_POSITION FromProtoEnum( types::DimensionTextPosition aValue ) { switch( aValue ) { case types::DimensionTextPosition::DTP_UNKNOWN: case types::DimensionTextPosition::DTP_OUTSIDE: return DIM_TEXT_POSITION::OUTSIDE; case types::DimensionTextPosition::DTP_INLINE: return DIM_TEXT_POSITION::INLINE; case types::DimensionTextPosition::DTP_MANUAL: return DIM_TEXT_POSITION::MANUAL; default: wxCHECK_MSG( false, DIM_TEXT_POSITION::OUTSIDE, "Unhandled case in FromProtoEnum" ); } } template<> types::DimensionUnit ToProtoEnum( DIM_UNITS_MODE aValue ) { switch( aValue ) { case DIM_UNITS_MODE::INCHES: return types::DimensionUnit::DU_INCHES; case DIM_UNITS_MODE::MILS: return types::DimensionUnit::DU_MILS; case DIM_UNITS_MODE::MILLIMETRES: return types::DimensionUnit::DU_MILLIMETERS; case DIM_UNITS_MODE::AUTOMATIC: return types::DimensionUnit::DU_AUTOMATIC; default: wxCHECK_MSG( false, types::DimensionUnit::DU_UNKNOWN, "Unhandled case in ToProtoEnum"); } } template<> DIM_UNITS_MODE FromProtoEnum( types::DimensionUnit aValue ) { switch( aValue ) { case types::DimensionUnit::DU_INCHES: return DIM_UNITS_MODE::INCHES; case types::DimensionUnit::DU_MILS: return DIM_UNITS_MODE::MILS; case types::DimensionUnit::DU_MILLIMETERS: return DIM_UNITS_MODE::MILLIMETRES; case types::DimensionUnit::DU_UNKNOWN: case types::DimensionUnit::DU_AUTOMATIC: return DIM_UNITS_MODE::AUTOMATIC; default: wxCHECK_MSG( false, DIM_UNITS_MODE::AUTOMATIC, "Unhandled case in FromProtoEnum" ); } } // Adding something new here? Add it to test_api_enums.cpp!