From 82fca47fc7b00d8755c4333e0016bf555e46d0f8 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 11 Jan 2016 00:42:56 +0300 Subject: Add script command for convert craft string into craft object. New script command: initcraft var$ Return value: craft object id. --- src/ecommon/struct/strutildata.h | 16 ++++++++++++ src/ecommon/utils/strutil.c | 53 ++++++++++++++++++++++++++++++++++++++++ src/ecommon/utils/strutil.h | 12 +++++++++ 3 files changed, 81 insertions(+) create mode 100644 src/ecommon/struct/strutildata.h create mode 100644 src/ecommon/utils/strutil.c create mode 100644 src/ecommon/utils/strutil.h (limited to 'src/ecommon') diff --git a/src/ecommon/struct/strutildata.h b/src/ecommon/struct/strutildata.h new file mode 100644 index 0000000..fa9c11d --- /dev/null +++ b/src/ecommon/struct/strutildata.h @@ -0,0 +1,16 @@ +// Copyright (c) Copyright (c) Hercules Dev Team, licensed under GNU GPL. +// Copyright (c) 2014 - 2015 Evol developers + +#ifndef EVOL_MAP_STRUTILDATA +#define EVOL_MAP_STRUTILDATA + +#include "common/db.h" + +struct strutil_data +{ + char *str; + VECTOR_DECL(char*) parts; + int len; +}; + +#endif // EVOL_MAP_STRUTILDATA diff --git a/src/ecommon/utils/strutil.c b/src/ecommon/utils/strutil.c new file mode 100644 index 0000000..d782b0a --- /dev/null +++ b/src/ecommon/utils/strutil.c @@ -0,0 +1,53 @@ +// Copyright (c) Copyright (c) Hercules Dev Team, licensed under GNU GPL. +// Copyright (c) 2014 - 2015 Evol developers + +#include "common/hercules.h" + +#include +#include +#include + +#include "common/memmgr.h" +#include "common/strlib.h" + +#include "ecommon/utils/strutil.h" + +#include "ecommon/struct/strutildata.h" + +struct strutil_data *strutil_split(const char *str, + const char separator, + const int len) +{ + if (!str || len < 1) + return NULL; + struct strutil_data *data = aCalloc(1, sizeof(struct strutil_data)); + if (!data) + return NULL; + data->str = aStrdup(str); + VECTOR_INIT(data->parts); + VECTOR_ENSURE(data->parts, len + 1, 1); + + data->len = sv->split(data->str, + strlen(data->str), + 0, + separator, + VECTOR_DATA(data->parts), + len + 1, + 0); + if (data->len < 1) + { + strutil_free(data); + return NULL; + } + + return data; +} + +void strutil_free(struct strutil_data *data) +{ + if (!data) + return NULL; + VECTOR_CLEAR(data->parts); + aFree(data->str); + aFree(data); +} diff --git a/src/ecommon/utils/strutil.h b/src/ecommon/utils/strutil.h new file mode 100644 index 0000000..75d9f20 --- /dev/null +++ b/src/ecommon/utils/strutil.h @@ -0,0 +1,12 @@ +// Copyright (c) Copyright (c) Hercules Dev Team, licensed under GNU GPL. +// Copyright (c) 2014 - 2015 Evol developers + +#ifndef EVOL_COMMON_UTILS_STRUTIL +#define EVOL_COMMON_UTILS_STRUTIL + +struct strutil_data *strutil_split(const char *str, + const char separator, + const int len); +void strutil_free(struct strutil_data *data); + +#endif // EVOL_COMMON_UTILS_STRUTIL -- cgit v1.2.3-70-g09d2