KiCad PCB EDA Suite
Loading...
Searching...
No Matches
property_validator.h
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 (C) 2023 Jon Evans <[email protected]>
5* Copyright (C) 2023 KiCad Developers, see AUTHORS.txt for contributors.
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 KICAD_PROPERTY_VALIDATOR_H
22#define KICAD_PROPERTY_VALIDATOR_H
23
24#include <functional>
25#include <optional>
26
27#include <wx/any.h>
28#include <wx/string.h>
29
30class EDA_ITEM;
31class UNITS_PROVIDER;
32
35{
36public:
37 virtual ~VALIDATION_ERROR() = default;
38
39 virtual wxString Format( UNITS_PROVIDER* aUnits ) const = 0;
40};
41
42// TODO: This is a bit of code smell; maybe create a wrapper class to hide the ptr
44using VALIDATOR_RESULT = std::optional<std::unique_ptr<VALIDATION_ERROR>>;
45
51using PROPERTY_VALIDATOR_FN = std::function<VALIDATOR_RESULT( const wxAny&&, EDA_ITEM* aItem )>;
52
53#endif //KICAD_PROPERTY_VALIDATOR_H
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:88
Represents an error returned by a validator and contains enough data to format an error message.
virtual wxString Format(UNITS_PROVIDER *aUnits) const =0
virtual ~VALIDATION_ERROR()=default
std::function< VALIDATOR_RESULT(const wxAny &&, EDA_ITEM *aItem)> PROPERTY_VALIDATOR_FN
A property validator function takes in the data type of the owning property, and returns a VALIDATOR_...
std::optional< std::unique_ptr< VALIDATION_ERROR > > VALIDATOR_RESULT
Null optional means validation succeeded.