diff options
author | Chris Robinson <[email protected]> | 2019-07-29 17:54:07 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2019-07-29 17:54:07 -0700 |
commit | 4c9e18c5a0c29548eb38db636785aa7064713c5d (patch) | |
tree | 7b7904b9a0c33256ec7f094b31c7ed0cdafc487d /al/extension.cpp | |
parent | c2de0782cfec62d6a1c3fe2d409d0f64528ae5f7 (diff) |
Rename al/* sources to avoid camel-case
Diffstat (limited to 'al/extension.cpp')
-rw-r--r-- | al/extension.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/al/extension.cpp b/al/extension.cpp new file mode 100644 index 00000000..e38d4382 --- /dev/null +++ b/al/extension.cpp @@ -0,0 +1,80 @@ +/** + * OpenAL cross platform audio library + * Copyright (C) 1999-2007 by authors. + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * Or go to http://www.gnu.org/copyleft/lgpl.html + */ + +#include "config.h" + +#include <cctype> +#include <cstdlib> +#include <cstring> + +#include "AL/al.h" +#include "AL/alc.h" + +#include "alcontext.h" +#include "alexcpt.h" +#include "error.h" +#include "opthelpers.h" + + +AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extName) +START_API_FUNC +{ + ContextRef context{GetContextRef()}; + if(UNLIKELY(!context)) return AL_FALSE; + + if(!extName) + SETERR_RETURN(context.get(), AL_INVALID_VALUE, AL_FALSE, "NULL pointer"); + + size_t len{strlen(extName)}; + const char *ptr{context->ExtensionList}; + while(ptr && *ptr) + { + if(strncasecmp(ptr, extName, len) == 0 && + (ptr[len] == '\0' || isspace(ptr[len]))) + return AL_TRUE; + + if((ptr=strchr(ptr, ' ')) != nullptr) + { + do { + ++ptr; + } while(isspace(*ptr)); + } + } + + return AL_FALSE; +} +END_API_FUNC + + +AL_API ALvoid* AL_APIENTRY alGetProcAddress(const ALchar *funcName) +START_API_FUNC +{ + if(!funcName) return nullptr; + return alcGetProcAddress(nullptr, funcName); +} +END_API_FUNC + +AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *enumName) +START_API_FUNC +{ + if(!enumName) return static_cast<ALenum>(0); + return alcGetEnumValue(nullptr, enumName); +} +END_API_FUNC |