mirror of
https://github.com/cuberite/TCLAP.git
synced 2025-08-04 02:06:29 -04:00
Fix sstream/strstream (and config.h) compiler issues.
Code would not compile with HAVE_STRSTREAM defined. Code would not compile without HAVE_CONFIG_H defined (unless -DHAVE_STRSTREAM or -DHAVE_SSTREAM was specified). Code would not compile with HAVE_CONFIG_H defined if config.h did not also define HAVE_SSTREAM. This patch moves annoying logic for sstream/strstream logic to it's own file and fixes the above mentioned issues. https://sourceforge.net/p/tclap/bugs/23/
This commit is contained in:
parent
d3ae484f7f
commit
d2e5525760
@ -6,6 +6,7 @@
|
||||
*
|
||||
* Copyright (c) 2003, Michael E. Smoot .
|
||||
* Copyright (c) 2004, Michael E. Smoot, Daniel Aarno .
|
||||
* Copyright (c) 2017 Google Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* See the file COPYING in the top directory of this distribution for
|
||||
@ -27,8 +28,6 @@
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#else
|
||||
#define HAVE_SSTREAM
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
@ -38,6 +37,8 @@
|
||||
#include <iomanip>
|
||||
#include <cstdio>
|
||||
|
||||
#include <tclap/sstream.h>
|
||||
|
||||
#if defined(HAVE_SSTREAM)
|
||||
#include <sstream>
|
||||
typedef std::istringstream istringstream;
|
||||
@ -415,7 +416,7 @@ template<typename T> void
|
||||
ExtractValue(T &destVal, const std::string& strVal, ValueLike vl)
|
||||
{
|
||||
static_cast<void>(vl); // Avoid warning about unused vl
|
||||
std::istringstream is(strVal);
|
||||
istringstream is(strVal.c_str());
|
||||
|
||||
int valuesRead = 0;
|
||||
while ( is.good() ) {
|
||||
|
@ -23,23 +23,14 @@
|
||||
#ifndef TCLAP_VALUESCONSTRAINT_H
|
||||
#define TCLAP_VALUESCONSTRAINT_H
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <tclap/Constraint.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#else
|
||||
#define HAVE_SSTREAM
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_SSTREAM)
|
||||
#include <sstream>
|
||||
#elif defined(HAVE_STRSTREAM)
|
||||
#include <strstream>
|
||||
#else
|
||||
#error "Need a stringstream (sstream or strstream) to compile!"
|
||||
#endif
|
||||
#include <tclap/sstream.h>
|
||||
|
||||
namespace TCLAP {
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
* file: ZshCompletionOutput.h
|
||||
*
|
||||
* Copyright (c) 2006, Oliver Kiddle
|
||||
* Copyright (c) 2017 Google Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* See the file COPYING in the top directory of this distribution for
|
||||
@ -23,6 +24,10 @@
|
||||
#ifndef TCLAP_ZSHCOMPLETIONOUTPUT_H
|
||||
#define TCLAP_ZSHCOMPLETIONOUTPUT_H
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
@ -33,6 +38,7 @@
|
||||
#include <tclap/CmdLineOutput.h>
|
||||
#include <tclap/XorHandler.h>
|
||||
#include <tclap/Arg.h>
|
||||
#include <tclap/sstream.h>
|
||||
|
||||
namespace TCLAP {
|
||||
|
||||
@ -284,7 +290,7 @@ inline std::string ZshCompletionOutput::getMutexList( CmdLineInterface& _cmd, Ar
|
||||
return "(-)";
|
||||
}
|
||||
|
||||
std::ostringstream list;
|
||||
ostringstream list;
|
||||
if ( a->acceptsMultipleValues() )
|
||||
{
|
||||
list << '*';
|
||||
|
50
include/tclap/sstream.h
Normal file
50
include/tclap/sstream.h
Normal file
@ -0,0 +1,50 @@
|
||||
// -*- Mode: c++; c-basic-offset: 4; tab-width: 4; -*-
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* file: sstream.h
|
||||
*
|
||||
* Copyright (c) 2003, Michael E. Smoot .
|
||||
* Copyright (c) 2004, Michael E. Smoot, Daniel Aarno .
|
||||
* Copyright (c) 2017 Google Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* See the file COPYING in the top directory of this distribution for
|
||||
* more information.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef TCLAP_SSTREAM_H
|
||||
#define TCLAP_SSTREAM_H
|
||||
|
||||
#if !defined(HAVE_STRSTREAM)
|
||||
// Assume sstream is available if strstream is not specified
|
||||
// (https://sourceforge.net/p/tclap/bugs/23/)
|
||||
#define HAVE_SSTREAM
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_SSTREAM)
|
||||
#include <sstream>
|
||||
namespace TCLAP {
|
||||
typedef std::istringstream istringstream;
|
||||
typedef std::ostringstream ostringstream;
|
||||
}
|
||||
#elif defined(HAVE_STRSTREAM)
|
||||
#include <strstream>
|
||||
namespace TCLAP {
|
||||
typedef std::istrstream istringstream;
|
||||
typedef std::ostrstream ostringstream;
|
||||
}
|
||||
#else
|
||||
#error "Need a stringstream (sstream or strstream) to compile!"
|
||||
#endif
|
||||
|
||||
#endif // TCLAP_SSTREAM_H
|
Loading…
x
Reference in New Issue
Block a user