/* PCSX2 - PS2 Emulator for PCs * Copyright (C) 2002-2009 PCSX2 Dev Team * * PCSX2 is free software: you can redistribute it and/or modify it under the terms * of the GNU Lesser General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. * * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with PCSX2. * If not, see . */ #pragma once // Dependencies.h : Contains classes required by all Utilities headers. ////////////////////////////////////////////////////////////////////////////////////////// // DeclareNoncopyableObject // This macro provides an easy and clean method for ensuring objects are not copyable. // Simply add the macro to the head or tail of your class declaration, and attempts to // copy the class will give you a moderately obtuse compiler error that will have you // scratching your head for 20 mintes. // // (... but that's probably better than having a weird invalid object copy having you // scratch your head for a day). // // Programmer's notes: // * We intentionally do NOT provide implementations for these methods, which should // never be referenced anyway. // * I've opted for macro form over multi-inherited class form (Boost style), because // the errors generated by the macro are considerably less voodoo. The Boost-style // The macro reports the exact class that causes the copy failure, while Boost's class // approach just reports an error in whatever "NoncopyableObject" is inherited. // // * This macro is the same as wxWidgets' DECLARE_NO_COPY_CLASS macro. This one is free // of wx dependencies though, and has a nicer typeset. :) // #ifndef DeclareNoncopyableObject # define DeclareNoncopyableObject(classname) \ private: \ explicit classname(const classname&); \ classname& operator=(const classname&) #endif ////////////////////////////////////////////////////////////////////////////////////////// // macro provided for tagging translation strings, without actually running them through the // translator (which the _() does automatically, and sometimes we don't want that). This is // a shorthand replacement for wxTRANSLATE. // #define wxLt(a) (a) #include #include // for wxPoint/wxRect stuff #include #include #include "Pcsx2Defs.h" #include #include #include #include // string.h under c++ #include // stdio.h under c++ #include #include #include #include "Utilities/Assertions.h"