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, you may find one here:
18
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19
* or you may search the http://www.gnu.org website for the version 2 license,
20
* or you may write to the Free Software Foundation, Inc.,
21
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22
*/
23
24
#include <
refdes_utils.h
>
25
26
#include <
string_utils.h
>
27
28
#include <algorithm>
29
#include <cctype>
30
31
32
namespace
UTIL
33
{
34
35
wxString
GetRefDesPrefix
(
const
wxString& aRefDes )
36
{
37
// find the first non-digit, non-question-mark character from the back
38
auto
res
= std::find_if( aRefDes.rbegin(), aRefDes.rend(),
39
[]( wxUniChar aChr )
40
{
41
return aChr !=
'?'
&& !std::isdigit( aChr );
42
} );
43
44
return
{ aRefDes.begin(),
res
.base() };
45
}
46
47
48
wxString
GetRefDesUnannotated
(
const
wxString& aSource )
49
{
50
return
UTIL::GetRefDesPrefix
( aSource ) + wxT(
"?"
);
51
}
52
53
54
int
GetRefDesNumber
(
const
wxString& aRefDes )
55
{
56
int
retval = -1;
// negative to indicate not found
57
size_t
firstnum = aRefDes.find_first_of( wxS(
"0123456789"
) );
58
59
if
( firstnum != wxString::npos )
60
{
61
wxString candidateValue = aRefDes.Mid( firstnum );
62
long
result
;
63
64
if
( !candidateValue.ToLong( &
result
) )
65
retval = -1;
66
else
67
retval =
static_cast<
int
>
(
result
);
68
}
69
70
return
retval;
71
}
72
73
}
// namespace UTIL
UTIL
A model subscriber implementation using links to represent connections.
Definition
refdes_utils.cpp:33
UTIL::GetRefDesPrefix
wxString GetRefDesPrefix(const wxString &aRefDes)
Get the (non-numeric) prefix from a refdes - e.g.
Definition
refdes_utils.cpp:35
UTIL::GetRefDesUnannotated
wxString GetRefDesUnannotated(const wxString &aSource)
Return an unannotated refdes from either a prefix or an existing refdes.
Definition
refdes_utils.cpp:48
UTIL::GetRefDesNumber
int GetRefDesNumber(const wxString &aRefDes)
Get the numeric suffix from a refdes - e.g.
Definition
refdes_utils.cpp:54
refdes_utils.h
Collection of utility functions for component reference designators (refdes)
string_utils.h
res
VECTOR3I res
Definition
test_matrix3x3.cpp:54
result
wxString result
Test unit parsing edge cases and error handling.
Definition
test_text_eval_numeric_compat.cpp:602
src
common
refdes_utils.cpp
Generated on Sun Sep 21 2025 01:05:21 for KiCad PCB EDA Suite by
1.13.2