X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/48580b7729ed54c60acc262d86e12fe547b6b2b5..48eb2f1b9262fc74f527816c348ed2aa6efa9f65:/include/xbt/config.hpp diff --git a/include/xbt/config.hpp b/include/xbt/config.hpp index 7b2d7a432b..f5b3c95222 100644 --- a/include/xbt/config.hpp +++ b/include/xbt/config.hpp @@ -1,11 +1,10 @@ -/* Copyright (c) 2016. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2016-2017. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#ifndef _XBT_CONFIG_HPP_ -#define _XBT_CONFIG_HPP_ +#ifndef XBT_CONFIG_HPP +#define XBT_CONFIG_HPP #include @@ -30,7 +29,7 @@ public: : std::runtime_error(what) {} explicit missing_key_error(const char* what) : std::runtime_error(what) {} - ~missing_key_error() noexcept; + ~missing_key_error() override; }; template inline @@ -104,7 +103,6 @@ void alias(std::initializer_list names) template void bindFlag(T& value, const char* name, const char* description) { - using namespace std; declareFlag(name, description, value, [&value](T const& val) { value = val; }); @@ -125,7 +123,7 @@ void bindFlag(T& value, std::initializer_list names, const char* de * if (x < x_min || x => x_max) * throw std::range_error("must be in [x_min, x_max)") * }); - * + * */ // F is a checker, F : T& -> () template @@ -159,7 +157,7 @@ bindFlag(T& value, const char* name, const char* description, *

  *  static int x;
  *  simgrid::config::bindFlag(a, "x", [](int x) { return return x > 0; });
- *  
+ * */ // F is a predicate, F : T const& -> bool template @@ -170,8 +168,8 @@ typename std::enable_if(T const& that) const { return value_ > that; } - bool operator<=(T const& that) const { return value_ <= that; } - bool operator>=(T const& that) const { return value_ >= that; } + template + Flag& operator=(U const& that) { value_ = that; return *this; } + template + Flag& operator=(U && that) { value_ = that; return *this; } + template + bool operator==(U const& that) const { return value_ == that; } + template + bool operator!=(U const& that) const { return value_ != that; } + template + bool operator<(U const& that) const { return value_ < that; } + template + bool operator>(U const& that) const { return value_ > that; } + template + bool operator<=(U const& that) const { return value_ <= that; } + template + bool operator>=(U const& that) const { return value_ >= that; } }; }