Browse Source
Move duplicated code of plugin.cpp and sch_plugin.cpp into a new plugin_utils located in commons
newinvert
Move duplicated code of plugin.cpp and sch_plugin.cpp into a new plugin_utils located in commons
newinvert
16 changed files with 176 additions and 121 deletions
-
1common/CMakeLists.txt
-
76common/plugins/plugin_utils.cpp
-
55common/plugins/plugin_utils.h
-
7eeschema/sch_io_mgr.h
-
48eeschema/sch_plugin.cpp
-
26eeschema/sch_plugins/altium/sch_altium_plugin.cpp
-
5eeschema/sch_plugins/altium/sch_altium_plugin.h
-
5eeschema/sch_plugins/legacy/sch_legacy_plugin.cpp
-
7pcbnew/io_mgr.h
-
50pcbnew/plugin.cpp
-
2pcbnew/plugins/altium/altium_circuit_maker_plugin.cpp
-
2pcbnew/plugins/altium/altium_circuit_studio_plugin.cpp
-
5pcbnew/plugins/altium/altium_designer_plugin.cpp
-
2pcbnew/plugins/altium/solidworks_pcb_plugin.cpp
-
3pcbnew/plugins/cadstar/cadstar_pcb_archive_plugin.cpp
-
3pcbnew/plugins/pcad/pcad_plugin.cpp
@ -0,0 +1,76 @@ |
|||
/*
|
|||
* This program source code file is part of KiCad, a free EDA CAD application. |
|||
* |
|||
* Copyright (C) 2023 KiCad Developers, see AUTHORS.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 |
|||
*/ |
|||
|
|||
#include "plugin_utils.h"
|
|||
|
|||
#include <wx/wfstream.h>
|
|||
#include <wx/txtstrm.h>
|
|||
|
|||
namespace PLUGIN_UTILS |
|||
{ |
|||
|
|||
bool fileStartsWithPrefix( const wxString& aFilePath, const wxString& aPrefix, bool aIgnoreWhitespace ) |
|||
{ |
|||
wxFileInputStream input( aFilePath ); |
|||
|
|||
if( input.IsOk() && !input.Eof() ) |
|||
{ |
|||
// Find first non-empty line
|
|||
wxTextInputStream text( input ); |
|||
wxString line = text.ReadLine(); |
|||
|
|||
if( aIgnoreWhitespace ) |
|||
{ |
|||
while( line.IsEmpty() ) |
|||
line = text.ReadLine().Trim( false /*trim from left*/ ); |
|||
} |
|||
|
|||
if( line.StartsWith( aPrefix ) ) |
|||
return true; |
|||
} |
|||
|
|||
return false; |
|||
} |
|||
|
|||
|
|||
bool fileStartsWithBinaryHeader( const wxString& aFilePath, const std::vector<uint8_t>& aHeader ) |
|||
{ |
|||
wxFileInputStream input( aFilePath ); |
|||
|
|||
if( input.IsOk() && !input.Eof() ) |
|||
{ |
|||
if( static_cast<size_t>( input.GetLength() ) < aHeader.size() ) |
|||
return false; |
|||
|
|||
std::vector<uint8_t> parsedHeader( aHeader.size() ); |
|||
|
|||
if( !input.ReadAll( parsedHeader.data(), parsedHeader.size() ) ) |
|||
return false; |
|||
|
|||
return parsedHeader == aHeader; |
|||
} |
|||
|
|||
return false; |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,55 @@ |
|||
/* |
|||
* This program source code file is part of KiCad, a free EDA CAD application. |
|||
* |
|||
* Copyright (C) 2023 KiCad Developers, see AUTHORS.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 |
|||
*/ |
|||
|
|||
#ifndef PLUGIN_UTILS_H |
|||
#define PLUGIN_UTILS_H |
|||
|
|||
#include <cstdint> |
|||
#include <vector> |
|||
|
|||
#include <wx/string.h> |
|||
|
|||
namespace PLUGIN_UTILS |
|||
{ |
|||
|
|||
static const std::vector<uint8_t> COMPOUND_FILE_HEADER{ 0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1}; |
|||
|
|||
/** |
|||
* Check if a file starts with a defined string |
|||
* @param aFilePath path to the file where we want to check the prefix |
|||
* @param aPrefix prefix string which should match with the initial characters in the file |
|||
* @param aIgnoreWhitespace true if whitespace characters should be ignored before the prefix |
|||
*/ |
|||
bool fileStartsWithPrefix( const wxString& aFilePath, const wxString& aPrefix, bool aIgnoreWhitespace ); |
|||
|
|||
/** |
|||
* Check if a file starts with a defined binary header |
|||
* @param aFilePath path to the file where we want to check the prefix |
|||
* @param aHeader vector of bytes which need to match with the start of the file |
|||
*/ |
|||
bool fileStartsWithBinaryHeader( const wxString& aFilePath, const std::vector<uint8_t>& aHeader ); |
|||
|
|||
} |
|||
|
|||
|
|||
#endif // PLUGIN_UTILS_H |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue