Add determination to which Kicad app type belongs
This commit is contained in:
parent
9f7db24871
commit
55ddc8161f
|
@ -266,4 +266,225 @@ constexpr KICAD_T BaseType( const KICAD_T aType )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
constexpr bool IsNullType( const KICAD_T aType )
|
||||||
|
{
|
||||||
|
return aType <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool IsInstatiableType( const KICAD_T aType )
|
||||||
|
{
|
||||||
|
if( IsNullType( aType ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if( BaseType( aType ) != aType )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
switch( aType )
|
||||||
|
{
|
||||||
|
case SCH_SCREEN_T:
|
||||||
|
return false;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool IsEeschemaType( const KICAD_T aType )
|
||||||
|
{
|
||||||
|
switch( aType )
|
||||||
|
{
|
||||||
|
case SCH_MARKER_T:
|
||||||
|
case SCH_JUNCTION_T:
|
||||||
|
case SCH_NO_CONNECT_T:
|
||||||
|
case SCH_BUS_WIRE_ENTRY_T:
|
||||||
|
case SCH_BUS_BUS_ENTRY_T:
|
||||||
|
case SCH_LINE_T:
|
||||||
|
case SCH_BITMAP_T:
|
||||||
|
case SCH_TEXT_T:
|
||||||
|
case SCH_LABEL_T:
|
||||||
|
case SCH_GLOBAL_LABEL_T:
|
||||||
|
case SCH_HIER_LABEL_T:
|
||||||
|
case SCH_FIELD_T:
|
||||||
|
case SCH_SYMBOL_T:
|
||||||
|
case SCH_SHEET_PIN_T:
|
||||||
|
case SCH_SHEET_T:
|
||||||
|
case SCH_PIN_T:
|
||||||
|
|
||||||
|
case SCH_FIELD_LOCATE_REFERENCE_T:
|
||||||
|
case SCH_FIELD_LOCATE_VALUE_T:
|
||||||
|
case SCH_FIELD_LOCATE_FOOTPRINT_T:
|
||||||
|
case SCH_FIELD_LOCATE_DATASHEET_T:
|
||||||
|
|
||||||
|
case SCH_LINE_LOCATE_WIRE_T:
|
||||||
|
case SCH_LINE_LOCATE_BUS_T:
|
||||||
|
case SCH_LINE_LOCATE_GRAPHIC_LINE_T:
|
||||||
|
|
||||||
|
case SCH_LABEL_LOCATE_WIRE_T:
|
||||||
|
case SCH_LABEL_LOCATE_BUS_T:
|
||||||
|
|
||||||
|
case SCH_SYMBOL_LOCATE_POWER_T:
|
||||||
|
case SCH_LOCATE_ANY_T:
|
||||||
|
|
||||||
|
case SCH_SCREEN_T:
|
||||||
|
case SCHEMATIC_T:
|
||||||
|
|
||||||
|
case LIB_SYMBOL_T:
|
||||||
|
case LIB_ALIAS_T:
|
||||||
|
case LIB_SHAPE_T:
|
||||||
|
case LIB_TEXT_T:
|
||||||
|
case LIB_PIN_T:
|
||||||
|
|
||||||
|
case LIB_FIELD_T:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool IsPcbnewType( const KICAD_T aType )
|
||||||
|
{
|
||||||
|
switch( aType )
|
||||||
|
{
|
||||||
|
case PCB_T:
|
||||||
|
|
||||||
|
case PCB_FOOTPRINT_T:
|
||||||
|
case PCB_PAD_T:
|
||||||
|
case PCB_SHAPE_T:
|
||||||
|
case PCB_TEXT_T:
|
||||||
|
case PCB_FP_TEXT_T:
|
||||||
|
case PCB_FP_SHAPE_T:
|
||||||
|
case PCB_FP_ZONE_T:
|
||||||
|
case PCB_TRACE_T:
|
||||||
|
case PCB_VIA_T:
|
||||||
|
case PCB_ARC_T:
|
||||||
|
case PCB_MARKER_T:
|
||||||
|
case PCB_DIMENSION_T:
|
||||||
|
case PCB_DIM_ALIGNED_T:
|
||||||
|
case PCB_DIM_LEADER_T:
|
||||||
|
case PCB_DIM_CENTER_T:
|
||||||
|
case PCB_DIM_ORTHOGONAL_T:
|
||||||
|
case PCB_TARGET_T:
|
||||||
|
case PCB_ZONE_T:
|
||||||
|
case PCB_ITEM_LIST_T:
|
||||||
|
case PCB_NETINFO_T:
|
||||||
|
case PCB_GROUP_T:
|
||||||
|
|
||||||
|
case PCB_LOCATE_STDVIA_T:
|
||||||
|
case PCB_LOCATE_UVIA_T:
|
||||||
|
case PCB_LOCATE_BBVIA_T:
|
||||||
|
case PCB_LOCATE_TEXT_T:
|
||||||
|
case PCB_LOCATE_GRAPHIC_T:
|
||||||
|
case PCB_LOCATE_HOLE_T:
|
||||||
|
case PCB_LOCATE_PTH_T:
|
||||||
|
case PCB_LOCATE_NPTH_T:
|
||||||
|
case PCB_LOCATE_BOARD_EDGE_T:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool IsGerbviewType( const KICAD_T aType )
|
||||||
|
{
|
||||||
|
switch( aType )
|
||||||
|
{
|
||||||
|
case GERBER_LAYOUT_T:
|
||||||
|
case GERBER_DRAW_ITEM_T:
|
||||||
|
case GERBER_IMAGE_T:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool IsPageLayoutEditorType( const KICAD_T aType )
|
||||||
|
{
|
||||||
|
switch( aType )
|
||||||
|
{
|
||||||
|
case WSG_LINE_T:
|
||||||
|
case WSG_RECT_T:
|
||||||
|
case WSG_POLY_T:
|
||||||
|
case WSG_TEXT_T:
|
||||||
|
case WSG_BITMAP_T:
|
||||||
|
case WSG_PAGE_T:
|
||||||
|
|
||||||
|
case WS_PROXY_UNDO_ITEM_T:
|
||||||
|
case WS_PROXY_UNDO_ITEM_PLUS_T:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool IsMiscType( const KICAD_T aType )
|
||||||
|
{
|
||||||
|
switch( aType )
|
||||||
|
{
|
||||||
|
case SCREEN_T:
|
||||||
|
|
||||||
|
case SYMBOL_LIB_TABLE_T:
|
||||||
|
case FP_LIB_TABLE_T:
|
||||||
|
case SYMBOL_LIBS_T:
|
||||||
|
case SEARCH_STACK_T:
|
||||||
|
case S3D_CACHE_T:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool IsTypeCorrect( KICAD_T aType )
|
||||||
|
{
|
||||||
|
return IsNullType( aType )
|
||||||
|
|| IsEeschemaType( aType )
|
||||||
|
|| IsPcbnewType( aType )
|
||||||
|
|| IsGerbviewType( aType )
|
||||||
|
|| IsPageLayoutEditorType( aType )
|
||||||
|
|| IsMiscType( aType );
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr bool IsTypeAvailable( KICAD_T aType )
|
||||||
|
{
|
||||||
|
if( !IsInstatiableType( aType ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if( IsEeschemaType( aType ) )
|
||||||
|
{
|
||||||
|
#ifdef EESCHEMA
|
||||||
|
return true;
|
||||||
|
#endif // EESCHEMA
|
||||||
|
}
|
||||||
|
|
||||||
|
if( IsPcbnewType( aType ) )
|
||||||
|
{
|
||||||
|
#ifdef PCBNEW
|
||||||
|
return true;
|
||||||
|
#endif // PCBNEW
|
||||||
|
}
|
||||||
|
|
||||||
|
if( IsGerbviewType( aType ) )
|
||||||
|
{
|
||||||
|
#ifdef GERBVIEW
|
||||||
|
return true;
|
||||||
|
#endif // GERBVIEW
|
||||||
|
}
|
||||||
|
|
||||||
|
if( IsPageLayoutEditorType( aType ) )
|
||||||
|
{
|
||||||
|
#ifdef PL_EDITOR
|
||||||
|
return true;
|
||||||
|
#endif // PL_EDITOR
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // __KICAD_TYPEINFO_H
|
#endif // __KICAD_TYPEINFO_H
|
||||||
|
|
Loading…
Reference in New Issue