00001 /* 00002 * Copyright (C) 2003-2009 Olivier Boudeville 00003 * 00004 * This file is part of the Ceylan library. 00005 * 00006 * The Ceylan library is free software: you can redistribute it and/or modify 00007 * it under the terms of either the GNU Lesser General Public License or 00008 * the GNU General Public License, as they are published by the Free Software 00009 * Foundation, either version 3 of these Licenses, or (at your option) 00010 * any later version. 00011 * 00012 * The Ceylan library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU Lesser General Public License and the GNU General Public License 00016 * for more details. 00017 * 00018 * You should have received a copy of the GNU Lesser General Public 00019 * License and the GNU General Public License along with the Ceylan library. 00020 * If not, see <http://www.gnu.org/licenses/>. 00021 * 00022 * Author: Olivier Boudeville (olivier.boudeville@esperide.com) 00023 * 00024 */ 00025 00026 00027 #ifndef CEYLAN_FEATURES_H_ 00028 #define CEYLAN_FEATURES_H_ 00029 00030 00031 #include "CeylanException.h" // for Ceylan::Exception 00032 #include "CeylanTypes.h" // for Ceylan::Flags 00033 00034 00035 #include <string> 00036 00037 00038 00039 00040 namespace Ceylan 00041 { 00042 00043 00044 00060 namespace Features 00061 { 00062 00063 00064 00070 class CEYLAN_DLL FeatureNotAvailableException: public Ceylan::Exception 00071 { 00072 00073 public: 00074 00075 explicit FeatureNotAvailableException( 00076 const std::string & message ) ; 00077 00078 virtual ~FeatureNotAvailableException() throw() ; 00079 00080 } ; 00081 00082 00083 00084 00108 extern CEYLAN_DLL const Ceylan::Flags RegularExpressions ; 00109 00110 00111 00123 extern CEYLAN_DLL const Ceylan::Flags Multithreading ; 00124 00125 00126 00137 extern CEYLAN_DLL const Ceylan::Flags Networking ; 00138 00139 00140 00150 extern CEYLAN_DLL const Ceylan::Flags FileDescriptors ; 00151 00152 00153 00162 extern CEYLAN_DLL const Ceylan::Flags SymbolicLinks ; 00163 00164 00165 00174 extern CEYLAN_DLL const Ceylan::Flags AdvancedFileAttributes ; 00175 00176 00177 00182 extern CEYLAN_DLL const Ceylan::Flags FileLocks ; 00183 00184 00185 00191 extern CEYLAN_DLL const Ceylan::Flags AdvancedProcessManagement ; 00192 00193 00194 00199 extern CEYLAN_DLL const Ceylan::Flags Plugins ; 00200 00201 00202 00207 extern CEYLAN_DLL const Ceylan::Flags Signals ; 00208 00209 00210 00211 00223 CEYLAN_DLL void checkForSupportedFeatures( Ceylan::Flags featuresFlag ); 00224 00225 00226 00228 CEYLAN_DLL bool areRegularExpressionsSupported() ; 00229 00230 00232 CEYLAN_DLL bool isMultithreadingSupported() ; 00233 00234 00236 CEYLAN_DLL bool isNetworkingSupported() ; 00237 00238 00240 CEYLAN_DLL bool areFileDescriptorsSupported() ; 00241 00242 00244 CEYLAN_DLL bool areSymbolicLinksSupported() ; 00245 00246 00248 CEYLAN_DLL bool areAdvancedFileAttributesSupported() ; 00249 00250 00252 CEYLAN_DLL bool areFileLocksSupported() ; 00253 00254 00256 CEYLAN_DLL bool isAdvancedProcessManagementSupported() ; 00257 00258 00260 CEYLAN_DLL bool arePluginsSupported() ; 00261 00262 00264 CEYLAN_DLL bool areSignalsSupported() ; 00265 00266 00267 00273 CEYLAN_DLL const std::string describeAvailableFeatures() ; 00274 00275 00276 } 00277 00278 } 00279 00280 00281 00282 #endif // CEYLAN_FEATURES_H_ 00283