Changeset 1500


Ignore:
Timestamp:
Sep 15, 2008, 8:47:37 PM (15 years ago)
Author:
Peter
Message:

Added structure to deprecate functions. I chose to use a gcc style,
and it is tested in configure whether the compiler supports it. If not
the deprecation has no effect. Using a deprecated function will cause
a compiler warning. In gcc the warning can be turned off with
'-Wno-deprecated'. Possibly we should turn off the warning by default,
so a user has to turn it on by defining
-DYAT_DISABLE_DEPRECATED...

fixes #367

Location:
trunk
Files:
1 added
8 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/configure.ac

    r1497 r1500  
    228228   AC_MSG_RESULT($has_infinity)])
    229229
     230AC_MSG_CHECKING([g++ deprecation attribute])
     231AC_TRY_COMPILE([void f() __attribute__ ((deprecated));], [],
     232               AC_DEFINE([YAT_HAVE_GCC_DEPRECATED], [1],
     233          [Define if compiler supports deprecated attribute, as in g++ 4.0])
     234               AC_MSG_RESULT([yes]),
     235               AC_MSG_RESULT([no]) )
     236
    230237
    231238# yat specific settings
     
    262269AC_CONFIG_FILES([build_support/yat-config],
    263270                [chmod +x build_support/yat-config])
     271
     272AC_CONFIG_HEADER([yat/utility/config_public.h])
    264273
    265274# warning about missing doxygen
  • trunk/doc/build_tool.doxygen

    r1487 r1500  
    107107\endverbatim
    108108
     109\section Deprecated Functions
     110
    109111*/
    110112
  • trunk/test/statistics_test.cc

    r1487 r1500  
    6767  if (m!=4.5 || m!=m_gsl)
    6868    suite.add(false);
    69   statistics::percentile(data.begin(), data.end(), 100);
     69  statistics::percentile2(data.begin(), data.end(), 100);
    7070  data.resize(1);
    7171  statistics::median(data.begin(), data.end());
  • trunk/test/utility_test.cc

    r1492 r1500  
    6060  // test float/double
    6161  std::string s("1.2");
    62   if (!utility::is_double(s)){
    63     suite.add(false);
    64   }
    65   else if (!utility::is_float(s)) {
    66     suite.add(false);
    67   }
    68   else if (utility::is_int(s)) {
     62  if (!utility::is<double>(s)){
     63    suite.add(false);
     64  }
     65  else if (!utility::is<float>(s)) {
     66    suite.add(false);
     67  }
     68  else if (utility::is<int>(s)) {
    6969    suite.add(false);
    7070  }
     
    7575  // test int
    7676  s="23";
    77   if (!utility::is_double(s)){
    78     suite.add(false);
    79   }
    80   else if (!utility::is_float(s)) {
    81     suite.add(false);
    82   }
    83   else if (!utility::is_int(s)) {
     77  if (!utility::is<double>(s)){
     78    suite.add(false);
     79  }
     80  else if (!utility::is<float>(s)) {
     81    suite.add(false);
     82  }
     83  else if (!utility::is<int>(s)) {
    8484    suite.add(false);
    8585  }
     
    9090  // test nan
    9191  s=" nAn  ";
    92   if (!utility::is_double(s)){
     92  if (!utility::is<double>(s)){
    9393    suite.add(false);
    9494    suite.err() << "error: " << s << " is a double\n";
     
    112112  // testing trailing values
    113113  s=" 23 23   ";
    114   if (utility::is_double(s)){
    115     suite.add(false);
    116   }
    117   else if (utility::is_float(s)) {
    118     suite.add(false);
    119   }
    120   else if (utility::is_int(s)) {
     114  if (utility::is<double>(s)){
     115    suite.add(false);
     116  }
     117  else if (utility::is<float>(s)) {
     118    suite.add(false);
     119  }
     120  else if (utility::is<int>(s)) {
    121121    suite.add(false);
    122122  }
  • trunk/yat/classifier/Target.h

    r1487 r1500  
    2626*/
    2727
     28#include "yat/utility/deprecate.h"
    2829#include "yat/utility/Exception.h"
    2930
     
    161162    /// API. Use operator().
    162163    ///
    163     size_t operator[](size_t sample) const;
     164    size_t operator[](size_t sample) const YAT_DEPRECATE;
    164165
    165166    ///
  • trunk/yat/statistics/utility.h

    r1487 r1500  
    3131#include "yat/classifier/DataLookupWeighted1D.h"
    3232#include "yat/classifier/Target.h"
     33#include "yat/utility/deprecate.h"
    3334#include "yat/utility/VectorBase.h"
    3435#include "yat/utility/yat_assert.h"
     
    5657  */
    5758  template <class T>
    58   double percentile(T first, T last, double p, bool sorted=false);
     59  double percentile(T first, T last, double p, bool sorted=false) YAT_DEPRECATE;
    5960 
    6061  /**
  • trunk/yat/utility/Makefile.am

    r1494 r1500  
    3737  Alignment.h ColumnStream.h CommandLine.h \
    3838  Container2DIterator.h DataIterator.h DataWeight.h \
    39   Exception.h FileUtil.h Index.h \
     39  deprecate.h Exception.h FileUtil.h Index.h \
    4040  IteratorPolicy.h iterator_traits.h \
    4141  kNNI.h Matrix.h MatrixWeighted.h NNI.h \
     
    4747  WeightIterator.h WeNNI.h yat_assert.h
    4848
    49 versiondir = $(include_utilitydir)
    50 version_DATA = version.h
     49extra_headersdir = $(include_utilitydir)
     50extra_headers_DATA = config_public.h version.h
  • trunk/yat/utility/config_public.h.in

    r1496 r1500  
    1 #ifndef _theplu_yat_utility_version_
    2 #define _theplu_yat_utility_version_
     1#ifndef _theplu_yat_utility_config_public_
     2#define _theplu_yat_utility_config_public_
    33
    44// @configure_input@
     
    2626
    2727///
    28 /// \file utility/version.h
     28/// \file utility/config_public.h
    2929///
    3030
    31 /*
    32   Compile-time version constants
    33 
    34   \see http://apr.apache.org/versioning.html
    35 */
    36 
    37 /**
    38    MAJOR version
    39 
    40    No compatibility is guarenteed between MAJOR versions.
    41 
    42    \since New in yat 0.5
    43  */
    44 #define YAT_MAJOR_VERSION @YAT_MAJOR_VERSION@
    45 
    46 /**
    47    MINOR version
    48 
    49    Minor API changes that do not cause binary compatibility problems.
    50    Reset to 0 when upgrading YAT_MAJOR_VERSION
    51 
    52    \since New in yat 0.5
    53  */
    54 #define YAT_MINOR_VERSION @YAT_MINOR_VERSION@
    55 
    56 /**
    57    PATCH version
    58 
    59    The Patch level never includes API changes, simply bug fixes.
    60    Reset to 0 when upgrading YAT_MINOR_VERSION
    61 
    62    \since New in yat 0.5
    63  */
    64 #define YAT_PATCH_VERSION @YAT_PATCH_VERSION@
    65 
    66 /**
    67    VERSION
    68 
    69    The version of yat in string format
    70 
    71    \since New in yat 0.5
    72  */
    73 #define YAT_VERSION "@VERSION@"
    74 
    75 /**
    76    DEV_BUILD
    77 
    78    Is set to false in releases
    79 
    80    \since New in yat 0.5
    81  */
    82 #define YAT_DEV_BUILD @YAT_DEV_BUILD@
    83 
    84 /**
    85    Check at compile time if the version of yat is at least a certain
    86    level.
    87    @param major The major version component of the version checked
    88    for (e.g., the "0" of "0.5.1").
    89    @param minor The minor version component of the version checked
    90    for (e.g., the "5" of "0.5.1").
    91    @param patch The patch level component of the version checked
    92    for (e.g., the "1" of "0.5.1").
    93 
    94    \since New in yat 0.5
    95  */
    96 #define YAT_VERSION_AT_LEAST(major,minor,patch)                    \
    97 (((major) < YAT_MAJOR_VERSION) ||                                    \
    98  ((major) == YAT_MAJOR_VERSION && (minor) < YAT_MINOR_VERSION) || \
    99  ((major) == YAT_MAJOR_VERSION && (minor) == YAT_MINOR_VERSION &&\
    100   (patch) <= YAT_PATCH_VERSION))
    101 
    102 #include <string>
    103 
    104 namespace theplu {
    105 namespace yat {
    106 namespace utility {
    107 
    108   /**
    109      \return major version number of compiled yat library
    110 
    111    \since New in yat 0.5
    112    */
    113   unsigned int major_version(void);
    114 
    115   /**
    116      \return minor version number of compiled yat library
    117 
    118      \since New in yat 0.5
    119    */
    120   unsigned int minor_version(void);
    121 
    122   /**
    123      \return patch version number of compiled yat library
    124 
    125      \since New in yat 0.5
    126    */
    127   unsigned int patch_version(void);
    128 
    129   /**
    130      \return version number of compiled yat library
    131 
    132      \since New in yat 0.5
    133    */
    134   std::string version(void);
    135 
    136 }}} // of namespace utility, yat, and theplu
     31/// Define if compiler supports deprecated attribute, as in g++ 4.0
     32#undef YAT_HAVE_GCC_DEPRECATED
    13733
    13834#endif
  • trunk/yat/utility/utility.h

    r1487 r1500  
    3131/// @brief Some useful functions are placed here
    3232///
     33
     34#include "deprecate.h"
    3335
    3436#include <limits>
     
    6769  /// API. Use is<double>(const std::string&)
    6870  ///
    69   bool is_double(const std::string&);
     71  bool is_double(const std::string&) YAT_DEPRECATE;
    7072
    7173  /**
     
    8284  /// API. Use is<float>(const std::string&)
    8385  ///
    84   bool is_float(const std::string&);
     86  bool is_float(const std::string&) YAT_DEPRECATE;
    8587
    8688  ///
     
    9092  /// API. Use is<int>(const std::string&)
    9193  ///
    92   bool is_int(const std::string&);
     94  bool is_int(const std::string&) YAT_DEPRECATE;
    9395
    9496  ///
Note: See TracChangeset for help on using the changeset viewer.