1e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent/* 2e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * 4e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Use of this source code is governed by a BSD-style license 5e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * that can be found in the LICENSE file in the root of the source 6e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * tree. An additional intellectual property rights grant can be found 7e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * in the file PATENTS. All contributing project authors may 8e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * be found in the AUTHORS file in the root of the source tree. 9e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent */ 10e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 11e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent/* 12e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * WebRtc 13e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Copy from third_party/libjingle/source/talk/base/constructormagic.h 14e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent */ 15e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 16e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#ifndef WEBRTC_SYSTEM_WRAPPERS_INTERFACE_CONSTRUCTOR_MAGIC_H_ 17e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_CONSTRUCTOR_MAGIC_H_ 18e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 19e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#ifndef DISALLOW_ASSIGN 20e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#define DISALLOW_ASSIGN(TypeName) \ 21e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent void operator=(const TypeName&) 22e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#endif 23e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 24e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#ifndef DISALLOW_COPY_AND_ASSIGN 25e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// A macro to disallow the evil copy constructor and operator= functions 26e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// This should be used in the private: declarations for a class 27e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ 28e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent TypeName(const TypeName&); \ 29e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent DISALLOW_ASSIGN(TypeName) 30e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#endif 31e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 32e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#ifndef DISALLOW_EVIL_CONSTRUCTORS 33e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// Alternative, less-accurate legacy name. 34e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#define DISALLOW_EVIL_CONSTRUCTORS(TypeName) \ 35e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent DISALLOW_COPY_AND_ASSIGN(TypeName) 36e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#endif 37e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 38e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#ifndef DISALLOW_IMPLICIT_CONSTRUCTORS 39e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// A macro to disallow all the implicit constructors, namely the 40e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// default constructor, copy constructor and operator= functions. 41e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// 42e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// This should be used in the private: declarations for a class 43e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// that wants to prevent anyone from instantiating it. This is 44e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// especially useful for classes containing only static methods. 45e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \ 46e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent TypeName(); \ 47e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent DISALLOW_EVIL_CONSTRUCTORS(TypeName) 48e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#endif 49e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 50e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#endif // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_CONSTRUCTOR_MAGIC_H_ 51