| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 | 
							- /*
 
-  Author: Juan Rada-Vilela, Ph.D.
 
-  Copyright (C) 2010-2014 FuzzyLite Limited
 
-  All rights reserved
 
-  This file is part of fuzzylite.
 
-  fuzzylite is free software: you can redistribute it and/or modify it under
 
-  the terms of the GNU Lesser General Public License as published by the Free
 
-  Software Foundation, either version 3 of the License, or (at your option)
 
-  any later version.
 
-  fuzzylite 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 Lesser General Public License
 
-  for more details.
 
-  You should have received a copy of the GNU Lesser General Public License
 
-  along with fuzzylite.  If not, see <http://www.gnu.org/licenses/>.
 
-  fuzzylite™ is a trademark of FuzzyLite Limited.
 
-  */
 
- #ifndef FL_FUZZYLITE_H
 
- #define FL_FUZZYLITE_H
 
- #include <algorithm>
 
- #include <cmath>
 
- #include <iostream>
 
- #include <sstream>
 
- #include <limits>
 
- #include <memory>
 
- #ifndef FL_VERSION
 
- #define FL_VERSION "?"
 
- #endif
 
- #ifndef FL_DATE
 
- #define FL_DATE "?"
 
- #endif
 
- #ifndef FL_BUILD_PATH
 
- #define FL_BUILD_PATH ""
 
- #endif
 
- #define FL__FILE__ std::string(__FILE__).substr(std::string(FL_BUILD_PATH).size())
 
- #define FL_LOG_PREFIX FL__FILE__ << " [" << __LINE__ << "]:"
 
- #define FL_AT FL__FILE__, __LINE__, __FUNCTION__
 
- #define FL_LOG(message) {if (fl::fuzzylite::logging()){std::cout << FL_LOG_PREFIX << message << std::endl;}}
 
- #define FL_LOGP(message) {if (fl::fuzzylite::logging()){std::cout << message << std::endl;}}
 
- #define FL_DEBUG_BEGIN if (fl::fuzzylite::debug()){
 
- #define FL_DEBUG_END }
 
- #define FL_DBG(message) FL_DEBUG_BEGIN\
 
-         std::cout << FL__FILE__ << "::" << __FUNCTION__ << "[" << __LINE__ << "]:" \
 
-                 << message << std::endl;\
 
-         FL_DEBUG_END
 
- #ifdef FL_WINDOWS
 
- #include <ciso646> //alternative operator spellings:
 
- //#define and &&
 
- //#define or ||
 
- //#define not !
 
- //#define bitand &
 
- //#define bitor |
 
- //TODO: Address warning 4251 by exporting members?
 
- //http://www.unknownroad.com/rtfm/VisualStudio/warningC4251.html
 
- #ifdef _MSC_VER
 
- #pragma warning (disable:4251)
 
- #endif
 
- //fuzzylite as a shared library is exported
 
- //Applications linking with fuzzylite as a shared library need to import
 
- //fuzzylite as a static library does not export or import
 
- //Applications linking with fuzzylite as a static library do not import
 
- #if defined(FL_EXPORT_LIBRARY)
 
- #define FL_API __declspec(dllexport)
 
- #elif defined(FL_IMPORT_LIBRARY)
 
- #define FL_API __declspec(dllimport)
 
- #else
 
- #define FL_API
 
- #endif
 
- #else
 
- #define FL_API
 
- #endif
 
- namespace fl {
 
- #ifdef FL_USE_FLOAT
 
-     typedef float scalar;
 
- #else
 
-     typedef double scalar;
 
- #endif
 
-     const scalar nan = std::numeric_limits<scalar>::quiet_NaN();
 
-     const scalar inf = std::numeric_limits<scalar>::infinity();
 
- #ifdef FL_CPP11
 
-     //C++11 defines
 
-     //Pointers
 
-     const std::nullptr_t null = nullptr;
 
- #define FL_unique_ptr std::unique_ptr
 
- #define FL_move_ptr(x) std::move(x)
 
-     //Identifiers
 
- #define FL_IOVERRIDE override
 
- #define FL_IFINAL final
 
- #define FL_IDEFAULT = default
 
- #define FL_IDELETE = delete
 
- #define FL_INOEXCEPT noexcept
 
-     //Constructors
 
- #define FL_DEFAULT_COPY(Class) \
 
-     Class(const Class&) = default; \
 
-     Class& operator=(const Class&) = default;
 
- #define FL_DEFAULT_MOVE(Class) \
 
-     Class(Class&&) = default; \
 
-     Class& operator=(Class&&) = default;
 
- #define FL_DEFAULT_COPY_AND_MOVE(Class) \
 
-     Class(const Class&) = default; \
 
-     Class& operator=(const Class&) = default;\
 
-     Class(Class&&) = default; \
 
-     Class& operator=(Class&&) = default;
 
- #define FL_DISABLE_COPY(Class) \
 
-     Class(const Class &) = delete;\
 
-     Class &operator=(const Class &) = delete;
 
- #else
 
-     //C++98 defines
 
-     //Pointers
 
-     const long null = 0L;
 
- #define FL_unique_ptr std::auto_ptr
 
- #define FL_move_ptr(x) x
 
-     //Identifiers
 
- #define FL_IOVERRIDE
 
- #define FL_IFINAL
 
- #define FL_IDEFAULT
 
- #define FL_IDELETE
 
- #define FL_INOEXCEPT throw()
 
-     //Constructors
 
- #define FL_DEFAULT_COPY(Class)
 
- #define FL_DEFAULT_MOVE(Class)
 
- #define FL_DEFAULT_COPY_AND_MOVE(Class)
 
- #define FL_DISABLE_COPY(Class) \
 
-     Class(const Class &);\
 
-     Class &operator=(const Class &);
 
- #endif
 
- }
 
- namespace fl {
 
-     class FL_API fuzzylite {
 
-     protected:
 
-         static int _decimals;
 
-         static scalar _macheps;
 
-         static bool _debug;
 
-         static bool _logging;
 
-     public:
 
-         static std::string name();
 
-         static std::string fullname();
 
-         static std::string version();
 
-         static std::string longVersion();
 
-         static std::string license();
 
-         static std::string author();
 
-         static std::string company();
 
-         static std::string website();
 
-         static std::string date();
 
-         static std::string platform();
 
-         static std::string floatingPoint();
 
-         static bool debug();
 
-         static void setDebug(bool debug);
 
-         static int decimals();
 
-         static void setDecimals(int decimals);
 
-         static scalar macheps();
 
-         static void setMachEps(scalar macheps);
 
-         static bool logging();
 
-         static void setLogging(bool logging);
 
-     };
 
- }
 
- #endif  /* FL_FUZZYLITE_H */
 
 
  |