Add utility function for processing a string buffer by line
This commit is contained in:
@@ -43,6 +43,7 @@
|
|||||||
#include "airport.h"
|
#include "airport.h"
|
||||||
#include "station_base.h"
|
#include "station_base.h"
|
||||||
#include "economy_func.h"
|
#include "economy_func.h"
|
||||||
|
#include "string_func_extra.h"
|
||||||
|
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
@@ -1063,15 +1064,9 @@ DEF_CONSOLE_CMD(ConRestart)
|
|||||||
*/
|
*/
|
||||||
static void PrintLineByLine(char *buf)
|
static void PrintLineByLine(char *buf)
|
||||||
{
|
{
|
||||||
char *p = buf;
|
ProcessLineByLine(buf, [&](const char *line) {
|
||||||
/* Print output line by line */
|
IConsolePrintF(CC_DEFAULT, "%s", line);
|
||||||
for (char *p2 = buf; *p2 != '\0'; p2++) {
|
});
|
||||||
if (*p2 == '\n') {
|
|
||||||
*p2 = '\0';
|
|
||||||
IConsolePrintF(CC_DEFAULT, "%s", p);
|
|
||||||
p = p2 + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DEF_CONSOLE_CMD(ConListAILibs)
|
DEF_CONSOLE_CMD(ConListAILibs)
|
||||||
|
@@ -20,4 +20,21 @@ static inline void str_validate(std::string &str, StringValidationSettings setti
|
|||||||
str.resize(str_validate_intl(buf, buf + str.size(), settings) - buf);
|
str.resize(str_validate_intl(buf, buf + str.size(), settings) - buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename F>
|
||||||
|
inline void ProcessLineByLine(char *buf, F line_functor)
|
||||||
|
{
|
||||||
|
char *p = buf;
|
||||||
|
char *p2 = buf;
|
||||||
|
/* Print output line by line */
|
||||||
|
for (; *p2 != '\0'; p2++) {
|
||||||
|
if (*p2 == '\n') {
|
||||||
|
*p2 = '\0';
|
||||||
|
line_functor(p);
|
||||||
|
p = p2 + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (p < p2) line_functor(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* STRING_FUNC_EXTRA_H */
|
#endif /* STRING_FUNC_EXTRA_H */
|
||||||
|
Reference in New Issue
Block a user