Fix issue in Rocket.lua script.
[Cafu-Engine.git] / Libs / Win32 / Win32PrintHelp.cpp
blob031a4c36c76305985632d6d9728ff66969eb95f4
1 /*
2 Cafu Engine, http://www.cafu.de/
3 Copyright (c) Carsten Fuchs and other contributors.
4 This project is licensed under the terms of the MIT license.
5 */
7 /****************************************/
8 /*** Print Help for Windows 32 (Code) ***/
9 /****************************************/
11 #include <stdio.h>
12 #include <string.h>
13 #include <stdarg.h>
14 #include "Win32PrintHelp.hpp"
15 #include "Templates/Array.hpp"
17 #if defined(_WIN32)
18 #if defined(_MSC_VER)
19 #define vsnprintf _vsnprintf
20 #endif
21 #endif
24 const char* GetString(const char* String, ...)
26 if (!String) return NULL;
28 va_list ArgList;
29 static char FullString[1024];
31 va_start(ArgList, String);
32 vsnprintf(FullString, sizeof(FullString), String, ArgList);
33 va_end(ArgList);
35 FullString[sizeof(FullString)-1]=0;
37 return FullString;
41 static ArrayT< ArrayT<char> > QueueStart;
42 static ArrayT< ArrayT<char> > QueueEnd;
45 void EnqueueString(const char* String, ...)
47 if (!String) return;
49 va_list ArgList;
50 static char FullString[1024];
52 va_start(ArgList, String);
53 vsnprintf(FullString, sizeof(FullString), String, ArgList);
54 va_end(ArgList);
56 FullString[sizeof(FullString)-1]=0;
58 QueueEnd.PushBackEmpty();
59 QueueEnd[QueueEnd.Size()-1].PushBackEmpty((unsigned long)(strlen(FullString)+1));
60 strcpy(&QueueEnd[QueueEnd.Size()-1][0], FullString);
64 const char* DequeueString()
66 if (QueueStart.Size()==0 && QueueEnd.Size()>0)
68 unsigned long Pos;
70 for (Pos=QueueEnd.Size()-1; Pos>0; Pos--) QueueStart.PushBack(QueueEnd[Pos]);
71 QueueStart.PushBack(QueueEnd[Pos]);
73 QueueEnd.Clear();
76 if (QueueStart.Size()==0) return NULL;
78 static char StringBuffer[1024];
80 strcpy(StringBuffer, &QueueStart[QueueStart.Size()-1][0]);
81 QueueStart.DeleteBack();
83 return StringBuffer;