X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/eb417d0c8064e83fc1211abc819ae93687505003..e4d3739e981eb46fbfca0ff837c681e26e8a44c6:/src/mc/AddressSpace.hpp diff --git a/src/mc/AddressSpace.hpp b/src/mc/AddressSpace.hpp index 307c81a841..b498665284 100644 --- a/src/mc/AddressSpace.hpp +++ b/src/mc/AddressSpace.hpp @@ -1,11 +1,11 @@ -/* Copyright (c) 2008-2014. The SimGrid Team. +/* Copyright (c) 2008-2015. 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 MC_ADDRESS_SPACE_H -#define MC_ADDRESS_SPACE_H +#ifndef SIMGRID_MC_ADDRESS_SPACE_H +#define SIMGRID_MC_ADDRESS_SPACE_H #include #include @@ -14,7 +14,7 @@ #include -#include "mc_forward.h" +#include "mc_forward.hpp" namespace simgrid { namespace mc { @@ -27,14 +27,18 @@ namespace mc { template class remote_ptr { std::uint64_t address_; public: - remote_ptr() : address_(nullptr) {} + remote_ptr() : address_(0) {} remote_ptr(std::uint64_t address) : address_(address) {} - remote_ptr(T* address) : address_((std::uint64_t)address) {} + remote_ptr(T* address) : address_((std::uintptr_t)address) {} std::uint64_t address() const { return address_; } operator bool() const { return address_; } + bool operator!() const + { + return !address_; + } operator remote_ptr() const { return remote_ptr(address_); @@ -59,6 +63,42 @@ public: } }; +template +bool operator<(remote_ptr const& x, remote_ptr const& y) +{ + return x.address() < y.address(); +} + +template +bool operator>(remote_ptr const& x, remote_ptr const& y) +{ + return x.address() > y.address(); +} + +template +bool operator>=(remote_ptr const& x, remote_ptr const& y) +{ + return x.address() >= y.address(); +} + +template +bool operator<=(remote_ptr const& x, remote_ptr const& y) +{ + return x.address() <= y.address(); +} + +template +bool operator==(remote_ptr const& x, remote_ptr const& y) +{ + return x.address() == y.address(); +} + +template +bool operator!=(remote_ptr const& x, remote_ptr const& y) +{ + return x.address() != y.address(); +} + template inline remote_ptr remote(T *p) {