blob: 40d8bac77a5b0438cc708d2ac5e7fabc976ecdb7 (
plain) (
tree)
|
|
#include <stdlib.h>
#include <string.h>
#include "gemtext.h"
struct gemtext *
gemtext_text_new(const char *text)
{
struct gemtext_text *ret;
ret = malloc(sizeof(*ret));
if (ret == NULL)
return NULL;
memset(ret, 0, sizeof(*ret));
ret->type = GEMTEXT_TEXT;
ret->text = strdup(text);
if (ret->text == NULL) {
free(ret);
return NULL;
}
return (struct gemtext *)ret;
}
struct gemtext *
gemtext_link_new(const char *link, const char *label)
{
struct gemtext_link *ret;
ret = malloc(sizeof(*ret));
if (ret == NULL)
return NULL;
memset(ret, 0, sizeof(*ret));
ret->type = GEMTEXT_LINK;
ret->link = strdup(link);
if (ret->link == NULL) {
free(ret);
return NULL;
}
if (label) {
ret->name = strdup(label);
if (ret->name == NULL) {
free(ret->link);
free(ret);
return NULL;
}
}
return (struct gemtext *)ret;
}
struct gemtext *
gemtext_pre_new(const char *pre)
{
struct gemtext_pre *ret;
ret = malloc(sizeof(*ret));
if (ret == NULL)
return NULL;
memset(ret, 0, sizeof(*ret));
ret->type = GEMTEXT_PRE;
ret->text = strdup(pre);
if (ret->text == NULL) {
free(ret);
return NULL;
}
return (struct gemtext *)ret;
}
struct gemtext *
gemtext_h1_new(const char *h1)
{
struct gemtext_h1 *ret;
ret = malloc(sizeof(*ret));
if (ret == NULL)
return NULL;
memset(ret, 0, sizeof(*ret));
ret->type = GEMTEXT_H1;
ret->text = strdup(h1);
if (ret->text == NULL) {
free(ret);
return NULL;
}
return (struct gemtext *)ret;
}
struct gemtext *
gemtext_h2_new(const char *h2)
{
struct gemtext_h2 *ret;
ret = malloc(sizeof(*ret));
if (ret == NULL)
return NULL;
memset(ret, 0, sizeof(*ret));
ret->type = GEMTEXT_H2;
ret->text = strdup(h2);
if (ret->text == NULL) {
free(ret);
return NULL;
}
return (struct gemtext *)ret;
}
struct gemtext *
gemtext_h3_new(const char *h3)
{
struct gemtext_h3 *ret;
ret = malloc(sizeof(*ret));
if (ret == NULL)
return NULL;
memset(ret, 0, sizeof(*ret));
ret->type = GEMTEXT_H3;
ret->text = strdup(h3);
if (ret->text == NULL) {
free(ret);
return NULL;
}
return (struct gemtext *)ret;
}
struct gemtext *
gemtext_ul_new(const char *ul)
{
struct gemtext_ul *ret;
ret = malloc(sizeof(*ret));
if (ret == NULL)
return NULL;
memset(ret, 0, sizeof(*ret));
ret->type = GEMTEXT_UL;
ret->text = strdup(ul);
if (ret->text == NULL) {
free(ret);
return NULL;
}
return (struct gemtext *)ret;
}
struct gemtext *
gemtext_qt_new(const char *qt)
{
struct gemtext_qt *ret;
ret = malloc(sizeof(*ret));
if (ret == NULL)
return NULL;
memset(ret, 0, sizeof(*ret));
ret->type = GEMTEXT_QT;
ret->text = strdup(qt);
if (ret->text == NULL) {
free(ret);
return NULL;
}
return (struct gemtext *)ret;
}
int
gemtext_type(struct gemtext *t)
{
return t->type;
}
int
gemtext_link_has_label(struct gemtext *t)
{
if (((struct gemtext_link *)t)->name)
return 1;
return 0;
}
char *
gemtext_text_string(struct gemtext *t)
{
return ((struct gemtext_text *)t)->text;
}
char *
gemtext_link_link_string(struct gemtext *t)
{
return ((struct gemtext_link *)t)->link;
}
char *
gemtext_link_label_string(struct gemtext *t)
{
return ((struct gemtext_link *)t)->name;
}
char *
gemtext_pre_string(struct gemtext *t)
{
return ((struct gemtext_pre *)t)->text;
}
char *
gemtext_h1_string(struct gemtext *t)
{
return ((struct gemtext_h1 *)t)->text;
}
char *
gemtext_h2_string(struct gemtext *t)
{
return ((struct gemtext_h2 *)t)->text;
}
char *
gemtext_h3_string(struct gemtext *t)
{
return ((struct gemtext_h3 *)t)->text;
}
char *
gemtext_ul_string(struct gemtext *t)
{
return ((struct gemtext_ul *)t)->text;
}
char *
gemtext_qt_string(struct gemtext *t)
{
return ((struct gemtext_qt *)t)->text;
}
size_t
gemtext_text_strlen(struct gemtext *t)
{
return strlen(((struct gemtext_text *)t)->text);
}
size_t
gemtext_link_link_strlen(struct gemtext *t)
{
return strlen(((struct gemtext_link *)t)->link);
}
size_t
gemtext_link_label_strlen(struct gemtext *t)
{
if (gemtext_link_has_label(t))
return strlen(((struct gemtext_link *)t)->name);
return 0;
}
size_t
gemtext_pre_strlen(struct gemtext *t)
{
return strlen(((struct gemtext_pre *)t)->text);
}
size_t
gemtext_h1_strlen(struct gemtext *t)
{
return strlen(((struct gemtext_h1 *)t)->text);
}
size_t
gemtext_h2_strlen(struct gemtext *t)
{
return strlen(((struct gemtext_h2 *)t)->text);
}
size_t
gemtext_h3_strlen(struct gemtext *t)
{
return strlen(((struct gemtext_h3 *)t)->text);
}
size_t
gemtext_ul_strlen(struct gemtext *t)
{
return strlen(((struct gemtext_ul *)t)->text);
}
size_t
gemtext_qt_strlen(struct gemtext *t)
{
return strlen(((struct gemtext_qt *)t)->text);
}
|