Program Listing for File commandline_processing.h#
↰ Return to documentation for file (src/util/commandlineProcessing/commandline_processing.h)
#ifndef ROSE_COMMANDLINE_UTILITY_H
#define ROSE_COMMANDLINE_UTILITY_H
//#include "rosedefs.h"
#include "rosedll.h"
#include <list>
#include <vector>
#include <string>
#include <stack>
#include <map>
#define Rose_STL_Container std::vector
//Rama (12/22/2006): changing the class to a namespace and removing the "static"ness of the "member" functions
// therefore are unable to call other functions in the ROSE library. See also, Rose::CommandLine for higher-level functions.
namespace CommandlineProcessing
{
ROSE_UTIL_API Rose_STL_Container<std::string> generateArgListFromString ( std::string commandline );
// std::string generateStringFromArgList( Rose_STL_Container<std::string> & argList);
ROSE_UTIL_API std::string generateStringFromArgList( const Rose_STL_Container<std::string> & argList);
ROSE_UTIL_API Rose_STL_Container<std::string> generateArgListFromArgcArgv ( int argc, const char* argv[] );
inline Rose_STL_Container<std::string> generateArgListFromArgcArgv ( int argc, char* argv[] )
{return generateArgListFromArgcArgv(argc, (const char**)argv);}
ROSE_UTIL_API void generateArgcArgvFromList ( Rose_STL_Container<std::string> argList, int & argc, char** & argv );
ROSE_UTIL_API Rose_STL_Container<std::string> generateOptionList (const Rose_STL_Container<std::string> & argList, std::string inputPrefix );
ROSE_UTIL_API Rose_STL_Container<std::string> generateOptionListWithDeclaredParameters (const Rose_STL_Container<std::string> & argList, std::string inputPrefix );
ROSE_UTIL_API Rose_STL_Container<std::string> generateOptionWithNameParameterList ( Rose_STL_Container<std::string> & argList, std::string inputPrefix, std::string newPrefix = "");
extern Rose_STL_Container<std::string> extraCppSourceFileSuffixes;
ROSE_UTIL_API bool isOption ( std::vector<std::string> & argv, std::string optionPrefix, std::string Option, bool removeOption );
ROSE_UTIL_API bool isOptionWithParameter ( std::vector<std::string> & argv, std::string optionPrefix, std::string Option, int & optionParameter, bool removeOption );
ROSE_UTIL_API bool isOptionWithParameter ( std::vector<std::string> & argv, std::string optionPrefix, std::string Option, float & optionParameter, bool removeOption );
ROSE_DLL_API bool isOptionWithParameter ( std::vector<std::string> & argv, std::string optionPrefix, std::string Option, std::string & optionParameter, bool removeOption );
ROSE_UTIL_API void addListToCommandLine ( std::vector<std::string> & argv , std::string prefix, Rose_STL_Container<std::string> argList );
ROSE_UTIL_API void removeArgs ( std::vector<std::string> & argv, std::string prefix );
ROSE_UTIL_API void removeArgsWithParameters ( std::vector<std::string> & argv, std::string prefix );
ROSE_UTIL_API void removeAllFileNamesExcept ( std::vector<std::string> & argv, Rose_STL_Container<std::string> filenameList, std::string exceptFilename );
ROSE_UTIL_API std::string generateStringFromArgList ( Rose_STL_Container<std::string> argList, bool skipInitialEntry, bool skipSourceFiles );
ROSE_DLL_API Rose_STL_Container<std::string> generateSourceFilenames ( Rose_STL_Container<std::string> argList, bool binaryMode );
// DQ and PC (6/1/2006): Added Peter's suggested fixes to support auto-documentation.
ROSE_UTIL_API void addSourceFileSuffix ( const std::string &suffix );
ROSE_UTIL_API void addCppSourceFileSuffix ( const std::string &suffix );
ROSE_UTIL_API bool isSourceFilename ( std::string name );
ROSE_UTIL_API bool isObjectFilename ( std::string name );
ROSE_DLL_API bool isExecutableFilename ( std::string name );
// DQ (8/20/2008): Added test that will allow bogus exececutable files (marked as .exe but not executable) to pass
ROSE_DLL_API bool isValidFileWithExecutableFileSuffixes ( std::string name );
ROSE_UTIL_API bool isCFileNameSuffix ( const std::string & suffix );
// Liao (6/6/2008): Added support for UPC file suffix name
ROSE_UTIL_API bool isUPCFileNameSuffix ( const std::string & suffix );
ROSE_UTIL_API bool isCppFileNameSuffix ( const std::string & suffix );
// DQ (8/7/2007): Added support for Fortran file suffix names.
ROSE_UTIL_API bool isFortranFileNameSuffix ( const std::string & suffix );
// DQ (5/18/2008): Support to marking when C preprocessing is required for
// Fortran files, default is true for C and C++.
ROSE_UTIL_API bool isFortranFileNameSuffixRequiringCPP ( const std::string & suffix );
// DQ (11/17/2007): Added fortran mode specific suffix checking
ROSE_UTIL_API bool isFortran77FileNameSuffix ( const std::string & suffix );
ROSE_UTIL_API bool isFortran90FileNameSuffix ( const std::string & suffix );
ROSE_UTIL_API bool isFortran95FileNameSuffix ( const std::string & suffix );
ROSE_UTIL_API bool isFortran2003FileNameSuffix ( const std::string & suffix );
ROSE_UTIL_API bool isFortran2008FileNameSuffix ( const std::string & suffix );
// DQ (1/23/2009): Added support for Co-Array Fortran file extension.
ROSE_UTIL_API bool isCoArrayFortranFileNameSuffix ( const std::string & suffix );
// TV (05/17/2010) Support for CUDA
ROSE_UTIL_API bool isCudaFileNameSuffix ( const std::string & suffix );
// TV (05/17/2010) Support for OpenCL
ROSE_UTIL_API bool isOpenCLFileNameSuffix ( const std::string & suffix );
ROSE_UTIL_API void initSourceFileSuffixList();
static Rose_STL_Container<std::string> validSourceFileSuffixes;
ROSE_UTIL_API void initObjectFileSuffixList();
static Rose_STL_Container<std::string> validObjectFileSuffixes;
ROSE_DLL_API void initExecutableFileSuffixList();
static Rose_STL_Container<std::string> validExecutableFileSuffixes;
// bool isOptionTakingFileName( std::string argument );
ROSE_DLL_API bool isOptionTakingSecondParameter( std::string argument );
ROSE_DLL_API bool isOptionTakingThirdParameter ( std::string argument );
};
// DQ (4/5/2010): This are defined in sage_support.cpp
ROSE_DLL_API std::string
findRoseSupportPathFromSource(const std::string& sourceTreeLocation,
const std::string& installTreeLocation);
// DQ (4/5/2010): This are defined in sage_support.cpp
ROSE_DLL_API std::string
findRoseSupportPathFromBuild(const std::string& buildTreeLocation,
const std::string& installTreeLocation);
// DQ (4/5/2010): This are defined in sage_support.cpp
ROSE_DLL_API bool
roseInstallPrefix(std::string& result);
// endif associated with define ROSE_COMMANDLINE_UTILITY_H
#endif