1// 2// Copyright 2014 The ANGLE Project Authors. All rights reserved. 3// Use of this source code is governed by a BSD-style license that can be 4// found in the LICENSE file. 5 6// Error.inc: Inline definitions of egl::Error and gl::Error classes which encapsulate API errors 7// and optional error messages. 8 9#include "common/angleutils.h" 10 11#include <cstdarg> 12 13namespace egl 14{ 15 16Error::Error(EGLint errorCode) 17 : mCode(errorCode), 18 mID(0) 19{ 20} 21 22Error::Error(const Error &other) 23 : mCode(other.mCode), 24 mID(other.mID) 25{ 26 if (other.mMessage) 27 { 28 createMessageString(); 29 *mMessage = *(other.mMessage); 30 } 31} 32 33Error::Error(Error &&other) 34 : mCode(other.mCode), 35 mID(other.mID), 36 mMessage(std::move(other.mMessage)) 37{ 38} 39 40Error &Error::operator=(const Error &other) 41{ 42 mCode = other.mCode; 43 mID = other.mID; 44 45 if (other.mMessage) 46 { 47 createMessageString(); 48 *mMessage = *(other.mMessage); 49 } 50 else 51 { 52 mMessage.reset(); 53 } 54 55 return *this; 56} 57 58Error &Error::operator=(Error &&other) 59{ 60 if (this != &other) 61 { 62 mCode = other.mCode; 63 mID = other.mID; 64 mMessage = std::move(other.mMessage); 65 } 66 67 return *this; 68} 69 70EGLint Error::getCode() const 71{ 72 return mCode; 73} 74 75EGLint Error::getID() const 76{ 77 return mID; 78} 79 80bool Error::isError() const 81{ 82 return (mCode != EGL_SUCCESS); 83} 84 85void Error::setCode(EGLint code) 86{ 87 mCode = code; 88} 89 90// Static 91Error Error::NoError() 92{ 93 return Error(EGL_SUCCESS); 94} 95 96} 97