1 //
2 // Copyright (c) ZeroC, Inc. All rights reserved.
3 //
4 
5 #ifndef ICE_INTERFACE_BY_VALUE_H
6 #define ICE_INTERFACE_BY_VALUE_H
7 
8 #include <Ice/Value.h>
9 #include <Ice/OutputStream.h>
10 #include <Ice/InputStream.h>
11 
12 #ifdef ICE_CPP11_MAPPING
13 
14 namespace Ice
15 {
16 
17 /**
18  * Represents an instance of a Slice interface that was marshaled by value.
19  * \headerfile Ice/Ice.h
20  */
21 template<typename T>
22 class InterfaceByValue : public ValueHelper<InterfaceByValue<T>, Value>
23 {
24 public:
25     /**
26      * Obtains the Slice type ID of this exception.
27      * @return The fully-scoped type ID.
28      */
ice_id()29     virtual std::string ice_id() const
30     {
31         return T::ice_staticId();
32     }
33 
34     /**
35      * Obtains the Slice type ID of this exception.
36      * @return The fully-scoped type ID.
37      */
ice_staticId()38     static const std::string& ice_staticId()
39     {
40         return T::ice_staticId();
41     }
42 
43     /**
44      * Returns an empty tuple.
45      * @return The empty tuple.
46      */
ice_tuple()47     std::tuple<> ice_tuple() const
48     {
49         return std::tie();
50     }
51 };
52 
53 }
54 
55 #endif
56 
57 #endif
58