KiCad PCB EDA Suite
Loading...
Searching...
No Matches
refdes_utils.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright The KiCad Developers, see AUTHORS.TXT for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19
20#include <refdes_utils.h>
21
22#include <string_utils.h>
23
24#include <algorithm>
25#include <cctype>
26
27
28namespace UTIL
29{
30
31wxString GetRefDesPrefix( const wxString& aRefDes )
32{
33 // find the first non-digit, non-question-mark character from the back
34 auto res = std::find_if( aRefDes.rbegin(), aRefDes.rend(),
35 []( wxUniChar aChr )
36 {
37 return aChr != '?' && !std::isdigit( aChr );
38 } );
39
40 return { aRefDes.begin(), res.base() };
41}
42
43
44wxString GetRefDesUnannotated( const wxString& aSource )
45{
46 return UTIL::GetRefDesPrefix( aSource ) + wxT( "?" );
47}
48
49
50int GetRefDesNumber( const wxString& aRefDes )
51{
52 int retval = -1; // negative to indicate not found
53 size_t firstnum = aRefDes.find_first_of( wxS( "0123456789" ) );
54
55 if( firstnum != wxString::npos )
56 {
57 wxString candidateValue = aRefDes.Mid( firstnum );
58 long result;
59
60 if( !candidateValue.ToLong( &result ) )
61 retval = -1;
62 else
63 retval = static_cast<int>( result );
64 }
65
66 return retval;
67}
68
69} // namespace UTIL
A model subscriber implementation using links to represent connections.
wxString GetRefDesPrefix(const wxString &aRefDes)
Get the (non-numeric) prefix from a refdes - e.g.
wxString GetRefDesUnannotated(const wxString &aSource)
Return an unannotated refdes from either a prefix or an existing refdes.
int GetRefDesNumber(const wxString &aRefDes)
Get the numeric suffix from a refdes - e.g.
Collection of utility functions for component reference designators (refdes)
VECTOR3I res
wxString result
Test unit parsing edge cases and error handling.