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.
7 /****************************************/
8 /*** Print Help for Windows 32 (Code) ***/
9 /****************************************/
14 #include "Win32PrintHelp.hpp"
15 #include "Templates/Array.hpp"
19 #define vsnprintf _vsnprintf
24 const char* GetString(const char* String
, ...)
26 if (!String
) return NULL
;
29 static char FullString
[1024];
31 va_start(ArgList
, String
);
32 vsnprintf(FullString
, sizeof(FullString
), String
, ArgList
);
35 FullString
[sizeof(FullString
)-1]=0;
41 static ArrayT
< ArrayT
<char> > QueueStart
;
42 static ArrayT
< ArrayT
<char> > QueueEnd
;
45 void EnqueueString(const char* String
, ...)
50 static char FullString
[1024];
52 va_start(ArgList
, String
);
53 vsnprintf(FullString
, sizeof(FullString
), String
, 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)
70 for (Pos
=QueueEnd
.Size()-1; Pos
>0; Pos
--) QueueStart
.PushBack(QueueEnd
[Pos
]);
71 QueueStart
.PushBack(QueueEnd
[Pos
]);
76 if (QueueStart
.Size()==0) return NULL
;
78 static char StringBuffer
[1024];
80 strcpy(StringBuffer
, &QueueStart
[QueueStart
.Size()-1][0]);
81 QueueStart
.DeleteBack();