+struct template_parser * template_string(const char *str, uint32_t len)
+{
+ struct template_parser *parser;
+
+ if (!str) {
+ errno = EINVAL;
+ goto err;
+ }
+
+ if (!(parser = malloc(sizeof(*parser))))
+ goto err;
+
+ memset(parser, 0, sizeof(*parser));
+ parser->fd = -1;
+
+ parser->size = len;
+ parser->data = (char*)str;
+
+ parser->off = parser->data;
+ parser->cur_chunk.type = T_TYPE_INIT;
+ parser->cur_chunk.s = parser->data;
+ parser->cur_chunk.e = parser->data;
+
+ return parser;
+
+err:
+ template_close(parser);
+ return NULL;
+}
+