aboutsummaryrefslogtreecommitdiffstats
path: root/al/extension.cpp
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2019-07-29 17:54:07 -0700
committerChris Robinson <[email protected]>2019-07-29 17:54:07 -0700
commit4c9e18c5a0c29548eb38db636785aa7064713c5d (patch)
tree7b7904b9a0c33256ec7f094b31c7ed0cdafc487d /al/extension.cpp
parentc2de0782cfec62d6a1c3fe2d409d0f64528ae5f7 (diff)
Rename al/* sources to avoid camel-case
Diffstat (limited to 'al/extension.cpp')
-rw-r--r--al/extension.cpp80
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