diff options
author | Chris Robinson <[email protected]> | 2018-11-16 06:08:25 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2018-11-16 06:08:25 -0800 |
commit | 8be45fe8a5eb3ee5659983d3607524092fc54207 (patch) | |
tree | cb2d3cef4d740fe84a4f9483c027e892b587de40 /OpenAL32/alExtension.cpp | |
parent | fedd5ebbea24883dc4767caf675778e2ca630d95 (diff) |
Convert alExtension.c to C++
Diffstat (limited to 'OpenAL32/alExtension.cpp')
-rw-r--r-- | OpenAL32/alExtension.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/OpenAL32/alExtension.cpp b/OpenAL32/alExtension.cpp new file mode 100644 index 00000000..bcc21f0f --- /dev/null +++ b/OpenAL32/alExtension.cpp @@ -0,0 +1,76 @@ +/** + * 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 <stdlib.h> +#include <string.h> +#include <ctype.h> + +#include "alError.h" +#include "alMain.h" +#include "alFilter.h" +#include "alEffect.h" +#include "alAuxEffectSlot.h" +#include "alSource.h" +#include "alBuffer.h" +#include "AL/al.h" +#include "AL/alc.h" + + +AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extName) +{ + 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, ' ')) != NULL) + { + do { + ++ptr; + } while(isspace(*ptr)); + } + } + + return AL_FALSE; +} + + +AL_API ALvoid* AL_APIENTRY alGetProcAddress(const ALchar *funcName) +{ + if(!funcName) return nullptr; + return alcGetProcAddress(nullptr, funcName); +} + +AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *enumName) +{ + if(!enumName) return (ALenum)0; + return alcGetEnumValue(nullptr, enumName); +} |