diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2013-02-15 23:21:33 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2013-02-15 23:21:33 -0600 |
commit | 71abba5631126445560d6ab309a51c28745a0b74 (patch) | |
tree | cebdb0db1f78eccd9dae0742734ccaf6d167c028 /tdecore/tdeglobal.h | |
parent | ed99a30644c19b0a3cf0d2147243532df4daa16b (diff) | |
download | tdelibs-71abba5631126445560d6ab309a51c28745a0b74.tar.gz tdelibs-71abba5631126445560d6ab309a51c28745a0b74.zip |
Fix prior commit
Diffstat (limited to 'tdecore/tdeglobal.h')
-rw-r--r-- | tdecore/tdeglobal.h | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/tdecore/tdeglobal.h b/tdecore/tdeglobal.h new file mode 100644 index 000000000..a1a8114be --- /dev/null +++ b/tdecore/tdeglobal.h @@ -0,0 +1,251 @@ +/* This file is part of the KDE libraries + Copyright (C) 1999 Sirtaj Singh Kanq <taj@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License version 2 as published by the Free Software Foundation. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +#ifndef _KGLOBAL_H +#define _KGLOBAL_H + +#include "tdelibs_export.h" +#include <kinstance.h> // KDE4: class TDEInstance is enough here + +class KCharsets; +class TDEConfig; +class TDESharedConfig; +class TDEIconLoader; +class TDEHardwareDevices; +class TDEGlobalNetworkManager; +class TDELocale; +class TDEStandardDirs; +class KStaticDeleterBase; +class KStaticDeleterList; +class KStringDict; +class TQString; + +/** + * Access to the KDE global objects. + * TDEGlobal provides you with pointers of many central + * objects that exist only once in the process. It is also + * responsible for managing instances of KStaticDeleterBase. + * + * @see KStaticDeleterBase + * @author Sirtaj Singh Kang (taj@kde.org) + */ +class TDECORE_EXPORT TDEGlobal +{ +public: + + /** + * Returns the global instance. There is always at least + * one instance of a component in one application (in most + * cases the application itself). + * @return the global instance + */ + static TDEInstance *instance(); + + /** + * Returns the application standard dirs object. + * @return the global standard dir object + */ + static TDEStandardDirs *dirs(); + + /** + * Returns the general config object. + * @return the global configuration object. + */ + static TDEConfig *config(); + + /** + * Returns the general config object. + * @return the global configuration object. + */ + static TDESharedConfig *sharedConfig(); + + /** + * Returns an iconloader object. + * @return the global iconloader object + */ + static TDEIconLoader *iconLoader(); + + /** + * Returns a TDEHardwareDevices object. + * @return the global hardware devices object + */ + static TDEHardwareDevices *hardwareDevices(); + + /** + * Returns a TDEGlobalNetworkManager object. + * @return the global network manager object + */ + static TDEGlobalNetworkManager *networkManager(); + + /** + * Returns the global locale object. + * @return the global locale object + */ + static TDELocale *locale(); + + /** + * The global charset manager. + * @return the global charset manager + */ + static KCharsets *charsets(); + + /** + * Creates a static TQString. + * + * To be used inside functions(!) like: + * \code + * static const TQString &myString = TDEGlobal::staticQString("myText"); + * \endcode + * + * !!! Do _NOT_ use: !!! + * \code + * static TQString myString = TDEGlobal::staticQString("myText"); + * \endcode + * This creates a static object (instead of a static reference) + * and as you know static objects are EVIL. + * @param str the string to create + * @return the static string + */ + static const TQString &staticQString(const char *str); + + /** + * Creates a static TQString. + * + * To be used inside functions(!) like: + * \code + * static const TQString &myString = TDEGlobal::staticQString(i18n("My Text")); + * \endcode + * + * !!! Do _NOT_ use: !!! + * \code + * static TQString myString = TDEGlobal::staticQString(i18n("myText")); + * \endcode + * This creates a static object (instead of a static reference) + * and as you know static objects are EVIL. + * @param str the string to create + * @return the static string + */ + static const TQString &staticQString(const TQString &str); + + /** + * Registers a static deleter. + * @param d the static deleter to register + * @see KStaticDeleterBase + * @see KStaticDeleter + */ + static void registerStaticDeleter(KStaticDeleterBase *d); + + /** + * Unregisters a static deleter. + * @param d the static deleter to unregister + * @see KStaticDeleterBase + * @see KStaticDeleter + */ + static void unregisterStaticDeleter(KStaticDeleterBase *d); + + /** + * Calls KStaticDeleterBase::destructObject() on all + * registered static deleters and unregisters them all. + * @see KStaticDeleterBase + * @see KStaticDeleter + */ + static void deleteStaticDeleters(); + + //private: + static KStringDict *_stringDict; + static TDEInstance *_instance; + static TDELocale *_locale; + static KCharsets *_charsets; + static KStaticDeleterList *_staticDeleters; + + /** + * The instance currently active (useful in a multi-instance + * application, such as a KParts application). + * Don't use this - it's mainly for TDEAboutDialog and KBugReport. + * @internal + */ + static void setActiveInstance(TDEInstance *d); + static TDEInstance *activeInstance() { return _activeInstance; } + + static TDEInstance *_activeInstance; +}; + +/** + * \relates TDEGlobal + * A typesafe function to find the minimum of the two arguments. + */ +#define KMIN(a,b) kMin(a,b) +/** + * \relates TDEGlobal + * A typesafe function to find the maximum of the two arguments. + */ +#define KMAX(a,b) kMax(a,b) +/** + * \relates TDEGlobal + * A typesafe function to determine the absolute value of the argument. + */ +#define KABS(a) kAbs(a) +/** + * \relates TDEGlobal + * A typesafe function that returns x if it's between low and high values. + * low if x is smaller than then low and high if x is bigger than high. + */ +#define KCLAMP(x,low,high) kClamp(x,low,high) + +// XXX KDE4: Make kMin, kMax and kClamp return "T" instead of "const T &"! +template<class T> +inline const T& kMin (const T& a, const T& b) { return a < b ? a : b; } + +template<class T> +inline const T& kMax (const T& a, const T& b) { return b < a ? a : b; } + +template<class T> +inline T kAbs (const T& a) { return a < 0 ? -a : a; } + +template<class T> +inline const T& kClamp( const T& x, const T& low, const T& high ) +{ + if ( x < low ) return low; + else if ( high < x ) return high; + else return x; +} + +/** + * Locale-independent tqstricmp. Use this for comparing ascii keywords + * in a case-insensitive way. + * tqstricmp fails with e.g. the Turkish locale where 'I'.lower() != 'i' + * @since 3.4 + */ +int TDECORE_EXPORT kasciistricmp( const char *str1, const char *str2 ); + + +/** + * \mainpage The KDE Core Functionality Library + * + * All KDE programs use this library to provide basic functionality such + * as the configuration system, IPC, internationalization and locale + * support, site-independent access to the filesystem and a large number + * of other (but no less important) things. + * + * All KDE applications should link to the tdecore library. Also, using a + * TDEApplication derived class instead of TQApplication is almost + * mandatory if you expect your application to behave nicely within the + * KDE environment. + */ + +#endif // _KGLOBAL_H + |