KiCad PCB EDA Suite
Loading...
Searching...
No Matches
pns_linked_item.h
Go to the documentation of this file.
1/*
2 * KiRouter - a push-and-(sometimes-)shove PCB router
3 *
4 * Copyright (C) 2019 CERN
5 * Author: Seth Hillbrand <[email protected]>
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef PCBNEW_ROUTER_PNS_LINKED_ITEM_H_
22#define PCBNEW_ROUTER_PNS_LINKED_ITEM_H_
23
24#include "pns_item.h"
25
26
27namespace PNS
28{
29class LINKED_ITEM : public ITEM
30{
31public:
32
33 typedef uint64_t UNIQ_ID;
34
36 ITEM( aKind )
37 {
38 m_uid = genNextUid();
39 }
40
41 LINKED_ITEM( const LINKED_ITEM& aOther ) :
42 ITEM( aOther ),
43 m_uid( aOther.m_uid )
44 {}
45
46 UNIQ_ID Uid() const { return m_uid; }
47
48 virtual void SetWidth( int aWidth )
49 {};
50
51 virtual int Width() const
52 {
53 return 0;
54 }
55
56private:
57 static UNIQ_ID genNextUid();
58protected:
60};
61
62} // namespace PNS
63#endif /* PCBNEW_ROUTER_PNS_LINKED_ITEM_H_ */
Base class for PNS router board items.
Definition: pns_item.h:97
PnsKind
< Supported item types
Definition: pns_item.h:101
virtual int Width() const
UNIQ_ID Uid() const
virtual void SetWidth(int aWidth)
static UNIQ_ID genNextUid()
Definition: pns_item.cpp:353
LINKED_ITEM(const LINKED_ITEM &aOther)
LINKED_ITEM(PnsKind aKind)
Push and Shove diff pair dimensions (gap) settings dialog.