aboutsummaryrefslogtreecommitdiffstats
path: root/al/alExtension.cpp
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2019-07-29 15:40:17 -0700
committerChris Robinson <[email protected]>2019-07-29 15:40:17 -0700
commit0a26bab14e0100b883f59958f3ce417888cebc62 (patch)
tree2ef9bb6a2f100366eed14bcbaf51edecab6211ca /al/alExtension.cpp
parent8ccb7604d30147583fda134e220807f3dc2f07e5 (diff)
Rename the OpenAL32 directory to al
Diffstat (limited to 'al/alExtension.cpp')
-rw-r--r--al/alExtension.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/al/alExtension.cpp b/al/alExtension.cpp
new file mode 100644
index 00000000..80681090
--- /dev/null
+++ b/al/alExtension.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 "alError.h"
+#include "alcontext.h"
+#include "alexcpt.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