aboutsummaryrefslogtreecommitdiffstats
path: root/LibOVRKernel/Src/Kernel/OVR_String_FormatUtil.cpp
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2015-03-28 01:43:35 +0100
committerSven Gothel <[email protected]>2015-03-28 01:43:35 +0100
commit4207f9c279e832e3afcb3f5fc6cd8d84cb4cfe4c (patch)
treecf3671058d55b47ab6cb6f36f369928606137628 /LibOVRKernel/Src/Kernel/OVR_String_FormatUtil.cpp
parentc29cd1a2fbff6282bab956ad61661ac9d48c4e6e (diff)
Bump OculusVR RIFT SDK to 0.5.0.1vanilla_0.5.0.1
Diffstat (limited to 'LibOVRKernel/Src/Kernel/OVR_String_FormatUtil.cpp')
-rw-r--r--LibOVRKernel/Src/Kernel/OVR_String_FormatUtil.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/LibOVRKernel/Src/Kernel/OVR_String_FormatUtil.cpp b/LibOVRKernel/Src/Kernel/OVR_String_FormatUtil.cpp
new file mode 100644
index 0000000..d52b6bb
--- /dev/null
+++ b/LibOVRKernel/Src/Kernel/OVR_String_FormatUtil.cpp
@@ -0,0 +1,76 @@
+/************************************************************************************
+
+Filename : OVR_String_FormatUtil.cpp
+Content : String format functions.
+Created : February 27, 2013
+Notes :
+
+Copyright : Copyright 2014 Oculus VR, LLC All Rights reserved.
+
+Licensed under the Oculus VR Rift SDK License Version 3.2 (the "License");
+you may not use the Oculus VR Rift SDK except in compliance with the License,
+which is provided at the time of installation or download, or which
+otherwise accompanies this software in either electronic or hard copy form.
+
+You may obtain a copy of the License at
+
+http://www.oculusvr.com/licenses/LICENSE-3.2
+
+Unless required by applicable law or agreed to in writing, the Oculus VR SDK
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+************************************************************************************/
+
+#include "OVR_String.h"
+#include "OVR_Log.h"
+
+namespace OVR {
+
+void StringBuffer::AppendFormat(const char* format, ...)
+{
+ va_list argList;
+ char buffer[512];
+ char* bufferUsed = buffer;
+ char* bufferAllocated = NULL;
+
+ va_start(argList, format);
+
+ #if !defined(OVR_CC_MSVC) // Non-Microsoft compilers require you to save a copy of the va_list.
+ va_list argListSaved;
+ va_copy(argListSaved, argList);
+ #endif
+
+ int requiredStrlen = OVR_vsnprintf(bufferUsed, OVR_ARRAY_COUNT(buffer), format, argList); // The large majority of the time this will succeed.
+
+ if(requiredStrlen >= (int)sizeof(buffer)) // If the initial capacity wasn't enough...
+ {
+ bufferAllocated = (char*)OVR_ALLOC(sizeof(char) * (requiredStrlen + 1));
+ bufferUsed = bufferAllocated;
+ if(bufferAllocated)
+ {
+ #if !defined(OVR_CC_MSVC)
+ va_end(argList);
+ va_copy(argList, argListSaved);
+ #endif
+ requiredStrlen = OVR_vsnprintf(bufferAllocated, (requiredStrlen + 1), format, argList);
+ }
+ }
+
+ if(requiredStrlen < 0) // If there was a printf format error...
+ {
+ bufferUsed = NULL;
+ }
+
+ va_end(argList);
+
+ if(bufferUsed)
+ AppendString(bufferUsed);
+
+ if(bufferAllocated)
+ OVR_FREE(bufferAllocated);
+}
+
+} // OVR