From 4d5796fb9a6a2738f7b6a22a252c1b4dd4f15a68 Mon Sep 17 00:00:00 2001 From: Marek Roszko Date: Fri, 23 Oct 2020 23:33:04 -0400 Subject: [PATCH] Extract swig binding macros to their own header --- common/swig/kicad.i | 4 +- include/common.h | 1 + include/layers_id_colors_and_visibility.h | 1 + include/macros.h | 23 --------- include/macros_swig.h | 57 +++++++++++++++++++++++ include/netclass.h | 2 +- 6 files changed, 62 insertions(+), 26 deletions(-) create mode 100644 include/macros_swig.h diff --git a/common/swig/kicad.i b/common/swig/kicad.i index a205a5b10f..4fcb25965e 100644 --- a/common/swig/kicad.i +++ b/common/swig/kicad.i @@ -81,7 +81,7 @@ principle should be easily implemented by adapting the current STL containers. %{ #include - #include + #include #include #include #include @@ -109,7 +109,7 @@ principle should be easily implemented by adapting the current STL containers. // header files that must be wrapped %include -%include macros.h +%include macros_swig.h %include core/typeinfo.h %include eda_item.h %include eda_rect.h diff --git a/include/common.h b/include/common.h index 255aa000d4..a69bd9ebc4 100644 --- a/include/common.h +++ b/include/common.h @@ -52,6 +52,7 @@ #include #include #include +#include class PROJECT; class SEARCH_STACK; diff --git a/include/layers_id_colors_and_visibility.h b/include/layers_id_colors_and_visibility.h index a683c2796b..c5d5a1aa2b 100644 --- a/include/layers_id_colors_and_visibility.h +++ b/include/layers_id_colors_and_visibility.h @@ -31,6 +31,7 @@ #ifndef LAYERS_ID_AND_VISIBILITY_H_ #define LAYERS_ID_AND_VISIBILITY_H_ +#include #include #include #include diff --git a/include/macros.h b/include/macros.h index 8ebf6c7878..09f202474a 100644 --- a/include/macros.h +++ b/include/macros.h @@ -31,12 +31,6 @@ #ifndef MACROS_H #define MACROS_H -#include -#include -#include -#include -#include // std::shared_ptr - #include #if defined( __has_attribute ) @@ -144,21 +138,4 @@ void MIRROR( T& aPoint, const T& aMirrorRef ) aPoint = Mirror( aPoint, aMirrorRef ); } - -#ifdef SWIG -/// Declare a std::vector and also the swig %template in unison -#define DECL_VEC_FOR_SWIG(TypeName, MemberType) namespace std { %template(TypeName) vector; } typedef std::vector TypeName; -#define DECL_DEQ_FOR_SWIG(TypeName, MemberType) namespace std { %template(TypeName) deque; } typedef std::deque TypeName; -#define DECL_MAP_FOR_SWIG(TypeName, KeyType, ValueType) namespace std { %template(TypeName) map; } typedef std::map TypeName; -#define DECL_SPTR_FOR_SWIG(TypeName, MemberType) %shared_ptr(MemberType) namespace std { %template(TypeName) shared_ptr; } typedef std::shared_ptr TypeName; -#define DECL_SET_FOR_SWIG(TypeName, MemberType) namespace std { %template(TypeName) set; } typedef std::set TypeName; -#else -/// Declare a std::vector but no swig %template -#define DECL_VEC_FOR_SWIG(TypeName, MemberType) typedef std::vector TypeName; -#define DECL_DEQ_FOR_SWIG(TypeName, MemberType) typedef std::deque TypeName; -#define DECL_MAP_FOR_SWIG(TypeName, KeyType, ValueType) typedef std::map TypeName; -#define DECL_SPTR_FOR_SWIG(TypeName, MemberType) typedef std::shared_ptr TypeName; -#define DECL_SET_FOR_SWIG(TypeName, MemberType) typedef std::set TypeName; -#endif - #endif // MACROS_H diff --git a/include/macros_swig.h b/include/macros_swig.h new file mode 100644 index 0000000000..365721788e --- /dev/null +++ b/include/macros_swig.h @@ -0,0 +1,57 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2020 Ian McInerney + * Copyright (C) 2007-2014 Jean-Pierre Charras, jp.charras at wanadoo.fr + * Copyright (C) 1992-2020 KiCad Developers, see CHANGELOG.TXT for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/** + * @file macros_swig.h + * @brief This file contains macros just for swig binding + */ + +#ifndef MACROS_SWIG_H +#define MACROS_SWIG_H + +#include +#include +#include +#include +#include // std::shared_ptr + + +#ifdef SWIG +/// Declare a std::vector and also the swig %template in unison +#define DECL_VEC_FOR_SWIG(TypeName, MemberType) namespace std { %template(TypeName) vector; } typedef std::vector TypeName; +#define DECL_DEQ_FOR_SWIG(TypeName, MemberType) namespace std { %template(TypeName) deque; } typedef std::deque TypeName; +#define DECL_MAP_FOR_SWIG(TypeName, KeyType, ValueType) namespace std { %template(TypeName) map; } typedef std::map TypeName; +#define DECL_SPTR_FOR_SWIG(TypeName, MemberType) %shared_ptr(MemberType) namespace std { %template(TypeName) shared_ptr; } typedef std::shared_ptr TypeName; +#define DECL_SET_FOR_SWIG(TypeName, MemberType) namespace std { %template(TypeName) set; } typedef std::set TypeName; +#else +/// Declare a std::vector but no swig %template +#define DECL_VEC_FOR_SWIG(TypeName, MemberType) typedef std::vector TypeName; +#define DECL_DEQ_FOR_SWIG(TypeName, MemberType) typedef std::deque TypeName; +#define DECL_MAP_FOR_SWIG(TypeName, KeyType, ValueType) typedef std::map TypeName; +#define DECL_SPTR_FOR_SWIG(TypeName, MemberType) typedef std::shared_ptr TypeName; +#define DECL_SET_FOR_SWIG(TypeName, MemberType) typedef std::set TypeName; +#endif + +#endif // MACROS2_H diff --git a/include/netclass.h b/include/netclass.h index 304ef940bd..fbc52cda36 100644 --- a/include/netclass.h +++ b/include/netclass.h @@ -27,9 +27,9 @@ #define CLASS_NETCLASS_H -#include #include #include +#include class LINE_READER; class BOARD;