//===--- RemoteAddress.h - Address of remote memory -------------*- C++ -*-===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// // // This file defines the RemoteAddress type, which abstracts over an // address in a remote process. // //===----------------------------------------------------------------------===// #ifndef SWIFT_REMOTE_REMOTEADDRESS_H #define SWIFT_REMOTE_REMOTEADDRESS_H #include namespace swift { namespace remote { /// An abstract address in the remote process's address space. class RemoteAddress { uint64_t Data; public: explicit RemoteAddress(const void *localPtr) : Data(reinterpret_cast(localPtr)) {} explicit RemoteAddress(uint64_t addressData) : Data(addressData) {} explicit operator bool() const { return Data != 0; } template const T *getLocalPointer() const { return reinterpret_cast(static_cast(Data)); } uint64_t getAddressData() const { return Data; } }; } // end namespace remote } // end namespace swift #endif // SWIFT_REMOTE_REMOTEADDRESS_H