Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / mojo / public / cpp / bindings / tests / container_test_util.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_TESTS_CONTAINER_TEST_UTIL_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_TESTS_CONTAINER_TEST_UTIL_H_
7
8 #include "mojo/public/cpp/system/macros.h"
9
10 namespace mojo {
11
12 class CopyableType {
13  public:
14   CopyableType();
15   CopyableType(const CopyableType& other);
16   CopyableType& operator=(const CopyableType& other);
17   ~CopyableType();
18
19   bool copied() const { return copied_; }
20   static size_t num_instances() { return num_instances_; }
21   CopyableType* ptr() const { return ptr_; }
22   void ResetCopied() { copied_ = false; }
23
24  private:
25   bool copied_;
26   static size_t num_instances_;
27   CopyableType* ptr_;
28 };
29
30 class MoveOnlyType {
31   MOJO_MOVE_ONLY_TYPE_FOR_CPP_03(MoveOnlyType, RValue)
32  public:
33   typedef MoveOnlyType Data_;
34   MoveOnlyType();
35   MoveOnlyType(RValue other);
36   MoveOnlyType& operator=(RValue other);
37   ~MoveOnlyType();
38
39   bool moved() const { return moved_; }
40   static size_t num_instances() { return num_instances_; }
41   MoveOnlyType* ptr() const { return ptr_; }
42   void ResetMoved() { moved_ = false; }
43
44  private:
45   bool moved_;
46   static size_t num_instances_;
47   MoveOnlyType* ptr_;
48 };
49
50 }  // namespace mojo
51
52 #endif  // MOJO_PUBLIC_CPP_BINDINGS_TESTS_CONTAINER_TEST_UTIL_H_