about summary refs log blame commit diff stats
path: root/gemtext.h
blob: 809e7c6600c1fd12b3b4818af81832312c8208e4 (plain) (tree)













































                      
                   






                   





                                             
              


                                                  


                                                        

              
                                                        

                                                        
                                                              

                                                              
 




                                                                      









                                                             
                                             








                                                  

                                                  
                                                   





                                            
 


                                                                          
            
                                    
                                          
#define GEMTEXT_TEXT 1
#define GEMTEXT_LINK 2
#define GEMTEXT_PRE 3
#define GEMTEXT_H1 4
#define GEMTEXT_H2 5
#define GEMTEXT_H3 6
#define GEMTEXT_UL 7
#define GEMTEXT_QT 8

struct gemtext {
	int type;
};

struct gemtext_text {
	int type;
	char *text;
};

struct gemtext_link {
	int type;
	char *name;
	char *link;
};

struct gemtext_pre {
	int type;
	char *text;
};

struct gemtext_h1 {
	int type;
	char *text;
};

struct gemtext_h2 {
	int type;
	char *text;
};

struct gemtext_h3 {
	int type;
	char *text;
};

struct gemtext_ul {
	int type;
	char *text;
};

struct gemtext_qt {
	int type;
	char *text;
};

/* strlcpy.c/strlcat.c */
#undef strlcpy
#undef strlcat
size_t strlcpy(char *, const char *, size_t);
size_t strlcat(char *, const char *, size_t);

/* decode.c */
struct gemtext *gemtext_decode(char *);
struct gemtext *gemtext_decode_fd(int);
struct gemtext *gemtext_decode_file(const char *);
struct gemtext **gemtext_list_decode(char *);
struct gemtext **gemtext_list_decode_fd(int);
struct gemtext **gemtext_list_decode_file(const char *);

/* encode.c */
int gemtext_encode(struct gemtext *, char **, size_t *);
int gemtext_encode_fd(struct gemtext *, int);
int gemtext_encode_file(struct gemtext *, const char *);
int gemtext_list_encode(struct gemtext **, char **, size_t *);
int gemtext_list_encode_fd(struct gemtext **, int);
int gemtext_list_encode_file(struct gemtext **, const char *);

/* html.c */
int gemtext_list_encode_to_html(struct gemtext **, char **, size_t *);
int gemtext_list_encode_to_html_fd(struct gemtext **, int);
int gemtext_list_encode_to_html_file(struct gemtext **, const char *);

/* gemtext.c */
struct gemtext *gemtext_text_new(const char *);
struct gemtext *gemtext_link_new(const char *, const char *);
struct gemtext *gemtext_pre_new(const char *);
struct gemtext *gemtext_h1_new(const char *);
struct gemtext *gemtext_h2_new(const char *);
struct gemtext *gemtext_h3_new(const char *);
struct gemtext *gemtext_ul_new(const char *);
struct gemtext *gemtext_qt_new(const char *);
int gemtext_type(struct gemtext *);
int gemtext_link_has_label(struct gemtext *);
char *gemtext_text_string(struct gemtext *);
char *gemtext_link_link_string(struct gemtext *);
char *gemtext_link_label_string(struct gemtext *);
char *gemtext_pre_string(struct gemtext *);
char *gemtext_h1_string(struct gemtext *);
char *gemtext_h2_string(struct gemtext *);
char *gemtext_h3_string(struct gemtext *);
char *gemtext_ul_string(struct gemtext *);
char *gemtext_qt_string(struct gemtext *);
size_t gemtext_text_strlen(struct gemtext *);
size_t gemtext_link_link_strlen(struct gemtext *);
size_t gemtext_link_label_strlen(struct gemtext *);
size_t gemtext_pre_strlen(struct gemtext *);
size_t gemtext_h1_strlen(struct gemtext *);
size_t gemtext_h2_strlen(struct gemtext *);
size_t gemtext_h3_strlen(struct gemtext *);
size_t gemtext_ul_strlen(struct gemtext *);
size_t gemtext_qt_strlen(struct gemtext *);

/* gemtext_list.c */
struct gemtext **gemtext_list_append(struct gemtext **, struct gemtext *);

/* free.c */
void gemtext_free(struct gemtext *);
void gemtext_list_free(struct gemtext **);