int polygon_gererator_main( int argc, char* argv[] )
{
    if( argc < 2 )
    {
        printf( "A sample tool for dumping board geometry as a set of polygons.\n" );
        printf( "Usage : %s board_file.kicad_pcb\n\n", argv[0] );
        return KI_TEST::RET_CODES::BAD_CMDLINE;
    }

    std::string filename;

    if( argc > 1 )
        filename = argv[1];

    auto brd = KI_TEST::ReadBoardFromFileOrStream( filename );

    if( !brd )
    {
        return POLY_GEN_RET_CODES::LOAD_FAILED;
    }

    for( unsigned net = 0; net < brd->GetNetCount(); net++ )
    {
        printf( "net %d\n", net );

        for( auto track : brd->Tracks() )
            process( track, net );

        for( auto mod : brd->Modules() )
        {
            for( auto pad : mod->Pads() )
                process( pad, net );
        }

        for( auto zone : brd->Zones() )
            process( zone, net );

        printf( "endnet\n" );
    }

    return KI_TEST::RET_CODES::OK;
}
 void ChessPiece::initTracks( const Position::Track * d, size_t numberOfTracks)
 {
     m_tracks = Tracks( d, d + numberOfTracks );
 }