aboutsummaryrefslogtreecommitdiff
path: root/src/lexer/tok_lst.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lexer/tok_lst.c')
-rw-r--r--src/lexer/tok_lst.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/lexer/tok_lst.c b/src/lexer/tok_lst.c
new file mode 100644
index 0000000..125e19c
--- /dev/null
+++ b/src/lexer/tok_lst.c
@@ -0,0 +1,35 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* tok_lst.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <me@cacharle.xyz> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/08/27 09:32:58 by charles #+# #+# */
+/* Updated: 2020/08/27 09:37:57 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "lexer.h"
+
+t_tok_lst *tok_lst_new(enum e_tok tag, char *content)
+{
+ return (tok_lst_new_until(tag, content, content == NULL ? 0 : ft_strlen(content)));
+}
+
+t_tok_lst *tok_lst_new_until(enum e_tok tag, char *content, size_t n)
+{
+ t_tok_lst *ret;
+
+ if ((ret = malloc(sizeof(t_tok_lst))) == NULL)
+ return (NULL);
+ if (content == NULL)
+ ret->content = NULL;
+ else if ((ret->content = ft_strndup(content, n)) == NULL)
+ {
+ free(ret);
+ return (NULL);
+ }
+ ret->tag = tag;
+ return (ret);
+}