| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- /*============================================================================
- KWSys - Kitware System Library
- Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
- Distributed under the OSI-approved BSD License (the "License");
- see accompanying file Copyright.txt for details.
- This software is distributed WITHOUT ANY WARRANTY; without even the
- implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the License for more information.
- ============================================================================*/
- #ifndef @KWSYS_NAMESPACE@_System_h
- #define @KWSYS_NAMESPACE@_System_h
- #include <@KWSYS_NAMESPACE@/Configure.h>
- /* Redefine all public interface symbol names to be in the proper
- namespace. These macros are used internally to kwsys only, and are
- not visible to user code. Use kwsysHeaderDump.pl to reproduce
- these macros after making changes to the interface. */
- #if !defined(KWSYS_NAMESPACE)
- # define kwsys_ns(x) @KWSYS_NAMESPACE@##x
- # define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
- #endif
- #if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
- # define kwsysSystem_Parse_CommandForUnix kwsys_ns(System_Parse_CommandForUnix)
- # define kwsysSystem_Shell_GetArgumentForWindows kwsys_ns(System_Shell_GetArgumentForWindows)
- # define kwsysSystem_Shell_GetArgumentForUnix kwsys_ns(System_Shell_GetArgumentForUnix)
- # define kwsysSystem_Shell_GetArgumentSizeForWindows kwsys_ns(System_Shell_GetArgumentSizeForWindows)
- # define kwsysSystem_Shell_GetArgumentSizeForUnix kwsys_ns(System_Shell_GetArgumentSizeForUnix)
- # define kwsysSystem_Shell_Flag_e kwsys_ns(System_Shell_Flag_e)
- # define kwsysSystem_Shell_Flag_Make kwsys_ns(System_Shell_Flag_Make)
- # define kwsysSystem_Shell_Flag_VSIDE kwsys_ns(System_Shell_Flag_VSIDE)
- # define kwsysSystem_Shell_Flag_EchoWindows kwsys_ns(System_Shell_Flag_EchoWindows)
- # define kwsysSystem_Shell_Flag_WatcomWMake kwsys_ns(System_Shell_Flag_WatcomWMake)
- # define kwsysSystem_Shell_Flag_MinGWMake kwsys_ns(System_Shell_Flag_MinGWMake)
- # define kwsysSystem_Shell_Flag_NMake kwsys_ns(System_Shell_Flag_NMake)
- # define kwsysSystem_Shell_Flag_AllowMakeVariables kwsys_ns(System_Shell_Flag_AllowMakeVariables)
- #endif
- #ifdef __VMS
- #define @KWSYS_NAMESPACE@System_Shell_GetArgumentForUnix \
- @KWSYS_NAMESPACE@System_Shell_UnixGA
- #define @KWSYS_NAMESPACE@System_Shell_GetArgumentSizeForUnix \
- @KWSYS_NAMESPACE@System_Shell_UnixGAS
- #define @KWSYS_NAMESPACE@System_Shell_GetArgumentForWindows \
- @KWSYS_NAMESPACE@System_Shell_WindowsGA
- #endif
- #if defined(__cplusplus)
- extern "C"
- {
- #endif
- /**
- * Transform the given command line argument for use in a Windows or
- * Unix shell. Returns a pointer to the end of the command line
- * argument in the provided output buffer. Flags may be passed to
- * modify the generated quoting and escape sequences to work under
- * alternative environments.
- */
- kwsysEXPORT char* kwsysSystem_Shell_GetArgumentForWindows(const char* in,
- char* out,
- int flags);
- kwsysEXPORT char* kwsysSystem_Shell_GetArgumentForUnix(const char* in,
- char* out,
- int flags);
- /**
- * Compute the size of the buffer required to store the output from
- * kwsysSystem_Shell_GetArgumentForWindows or
- * kwsysSystem_Shell_GetArgumentForUnix. The flags passed must be
- * identical between the two calls.
- */
- kwsysEXPORT int kwsysSystem_Shell_GetArgumentSizeForWindows(const char* in,
- int flags);
- kwsysEXPORT int kwsysSystem_Shell_GetArgumentSizeForUnix(const char* in,
- int flags);
- /**
- * Flags to pass to kwsysSystem_Shell_GetArgumentForWindows or
- * kwsysSystem_Shell_GetArgumentForUnix. These modify the generated
- * quoting and escape sequences to work under alternative
- * environments.
- */
- enum kwsysSystem_Shell_Flag_e
- {
- /** The target shell is in a makefile. */
- kwsysSystem_Shell_Flag_Make = (1<<0),
- /** The target shell is in a VS project file. Do not use with
- Shell_Flag_Make. */
- kwsysSystem_Shell_Flag_VSIDE = (1<<1),
- /** In a windows shell the argument is being passed to "echo". */
- kwsysSystem_Shell_Flag_EchoWindows = (1<<2),
- /** The target shell is in a Watcom WMake makefile. */
- kwsysSystem_Shell_Flag_WatcomWMake = (1<<3),
- /** The target shell is in a MinGW Make makefile. */
- kwsysSystem_Shell_Flag_MinGWMake = (1<<4),
- /** The target shell is in a NMake makefile. */
- kwsysSystem_Shell_Flag_NMake = (1<<6),
- /** Make variable reference syntax $(MAKEVAR) should not be escaped
- to allow a build tool to replace it. Replacement values
- containing spaces, quotes, backslashes, or other
- non-alphanumeric characters that have significance to some makes
- or shells produce undefined behavior. */
- kwsysSystem_Shell_Flag_AllowMakeVariables = (1<<5)
- };
- /**
- * Parse a unix-style command line string into separate arguments.
- *
- * On success, returns a pointer to an array of pointers to individual
- * argument strings. Each string is null-terminated and the last
- * entry in the array is a NULL pointer (just like argv). It is the
- * caller's responsibility to free() the strings and the array of
- * pointers to them.
- *
- * On failure, returns NULL. Failure occurs only on invalid flags or
- * when memory cannot be allocated; never due to content of the input
- * string. Missing close-quotes are treated as if the necessary
- * closing quote appears.
- *
- * By default single- and double-quoted arguments are supported, and
- * any character may be escaped by a backslash. The flags argument is
- * reserved for future use, and must be zero (or the call will fail).
- */
- kwsysEXPORT char** kwsysSystem_Parse_CommandForUnix(const char* command,
- int flags);
- #if defined(__cplusplus)
- } /* extern "C" */
- #endif
- /* If we are building a kwsys .c or .cxx file, let it use these macros.
- Otherwise, undefine them to keep the namespace clean. */
- #if !defined(KWSYS_NAMESPACE)
- # undef kwsys_ns
- # undef kwsysEXPORT
- # if !defined(KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
- # undef kwsysSystem_Parse_CommandForUnix
- # undef kwsysSystem_Shell_GetArgumentForWindows
- # undef kwsysSystem_Shell_GetArgumentForUnix
- # undef kwsysSystem_Shell_GetArgumentSizeForWindows
- # undef kwsysSystem_Shell_GetArgumentSizeForUnix
- # undef kwsysSystem_Shell_Flag_e
- # undef kwsysSystem_Shell_Flag_Make
- # undef kwsysSystem_Shell_Flag_VSIDE
- # undef kwsysSystem_Shell_Flag_EchoWindows
- # undef kwsysSystem_Shell_Flag_WatcomWMake
- # undef kwsysSystem_Shell_Flag_MinGWMake
- # undef kwsysSystem_Shell_Flag_NMake
- # undef kwsysSystem_Shell_Flag_AllowMakeVariables
- # endif
- #endif
- #endif
|