diff --git a/sefht.geany b/sefht.geany index f5df0230f46418b43bbb7b664df37c95d743ea94..730c3d965a2512ebb32f0977932932e3daa05278 100644 --- a/sefht.geany +++ b/sefht.geany @@ -28,7 +28,7 @@ long_line_behaviour=1 long_line_column=72 [files] -current_page=6 +current_page=10 FILE_NAME_0=923;Sh;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fconfigure.ac;0;8 FILE_NAME_1=73;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2FMakefile.am;0;8 FILE_NAME_2=1143;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fmain.c;0;8 @@ -37,27 +37,29 @@ FILE_NAME_4=1593;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fpr FILE_NAME_5=1395;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fcms.h;0;8 FILE_NAME_6=2921;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fdata.c;0;8 FILE_NAME_7=1583;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fdata.h;0;8 -FILE_NAME_8=1733;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ffragment.c;0;8 -FILE_NAME_9=2164;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ffragment.h;0;8 -FILE_NAME_10=1296;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fnode_fragment.c;0;8 -FILE_NAME_11=2259;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fnode_fragment.h;0;8 -FILE_NAME_12=1384;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ftext.c;0;8 -FILE_NAME_13=2692;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ftext.h;0;8 -FILE_NAME_14=1212;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator.c;0;8 -FILE_NAME_15=1260;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator.h;0;8 -FILE_NAME_16=1466;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator_tag.c;0;8 -FILE_NAME_17=1135;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator_tag.h;0;8 -FILE_NAME_18=4304;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fstatus.h;0;8 -FILE_NAME_19=1017;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Flog.h;0;4 -FILE_NAME_20=1077;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fmacro.h;0;8 -FILE_NAME_21=937;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fsefht.h;0;8 -FILE_NAME_22=499;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2FMakefile.am;0;8 -FILE_NAME_23=1510;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_cms.c;0;8 -FILE_NAME_24=3878;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_data.c;0;8 -FILE_NAME_25=14714;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_node_fragment.c;0;8 -FILE_NAME_26=976;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_text.c;0;8 -FILE_NAME_27=6814;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_validator.c;0;8 -FILE_NAME_28=165;None;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftodo.txt;0;8 +FILE_NAME_8=1185;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ffragment.c;0;8 +FILE_NAME_9=1835;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ffragment.h;0;8 +FILE_NAME_10=1156;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ffragment_data.c;0;8 +FILE_NAME_11=1164;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ffragment_class.c;0;8 +FILE_NAME_12=1099;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fnode_fragment.c;0;8 +FILE_NAME_13=2259;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fnode_fragment.h;0;8 +FILE_NAME_14=1384;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ftext.c;0;8 +FILE_NAME_15=2692;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Ftext.h;0;8 +FILE_NAME_16=1212;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator.c;0;8 +FILE_NAME_17=1260;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator.h;0;8 +FILE_NAME_18=1466;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator_tag.c;0;8 +FILE_NAME_19=1135;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fvalidator_tag.h;0;8 +FILE_NAME_20=4304;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fstatus.h;0;8 +FILE_NAME_21=1017;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Flog.h;0;4 +FILE_NAME_22=1077;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fmacro.h;0;8 +FILE_NAME_23=937;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flib%2Fsefht%2Fsefht.h;0;8 +FILE_NAME_24=499;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2FMakefile.am;0;8 +FILE_NAME_25=1510;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_cms.c;0;8 +FILE_NAME_26=3878;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_data.c;0;8 +FILE_NAME_27=14714;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_node_fragment.c;0;8 +FILE_NAME_28=976;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_text.c;0;8 +FILE_NAME_29=6814;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_validator.c;0;8 +FILE_NAME_30=165;None;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftodo.txt;0;8 [VTE] last_dir=/home/jonathan/Documents/projects/prgm/internet/web/SeFHT/tests diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index 7dc0a0f832f106354f5f663c0fe0ce7933cf0f9c..9ce2c178182641663c7f5c5367d60a6ae2c9282c 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -17,6 +17,8 @@ libsefht_la_SOURCES += sefht/text.c sefht/text.h libsefht_la_SOURCES += sefht/validator.c sefht/validator.h EXTRA_DIST = +EXTRA_DIST += sefht/fragment_class.c +EXTRA_DIST += sefht/fragment_data.c EXTRA_DIST += sefht/validator_tag.c nobase_include_HEADERS = diff --git a/src/lib/sefht/fragment.c b/src/lib/sefht/fragment.c index d760ba8902b54b1abe015125c9fd1cd85a39a37f..6a306bd388983053c8d14ed6a0d5fd9f9de15a57 100644 --- a/src/lib/sefht/fragment.c +++ b/src/lib/sefht/fragment.c @@ -31,26 +31,41 @@ #include "fragment.h" +#include "fragment_data.c" + +/*@null@*/ +/*@only@*/ struct SH_Fragment * -SH_Fragment_copy (struct SH_Fragment * fragment, - struct SH_Status * status) +SH_Fragment_copy (const struct SH_Fragment * fragment, + /*@out@*/ /*@null@*/ struct SH_Status * status) + /*@globals fileSystem@*/ + /*@modifies fileSystem@*/ + /*@modifies status@*/ { return fragment->methods->copy (fragment, status); } void -SH_Fragment_free (struct SH_Fragment * fragment) +SH_Fragment_free (/*@only@*/ struct SH_Fragment * fragment) + /*@modifies fragment@*/ + /*@releases fragment@*/ { - return fragment->methods->free (fragment); + fragment->methods->free (fragment); + return; } -struct SH_Text * -SH_Fragment_to_html (struct SH_Fragment * fragment, +/*@null@*/ +/*@only@*/ +SH_Text * +SH_Fragment_to_html (const struct SH_Fragment * fragment, enum HTML_MODE mode, unsigned int indent_base, unsigned int indent_step, - char * indent_char, - struct SH_Status * status) + const char * indent_char, + /*@out@*/ /*@null@*/ struct SH_Status * status) + /*@globals fileSystem@*/ + /*@modifies fileSystem@*/ + /*@modifies status@*/ { return fragment->methods->to_html (fragment, mode, indent_base, diff --git a/src/lib/sefht/fragment.h b/src/lib/sefht/fragment.h index bbc506d3d715e600fac0972eb27ed7cc2c990871..357a0972a5574d98801fd8bdbea8c153a47f05b7 100644 --- a/src/lib/sefht/fragment.h +++ b/src/lib/sefht/fragment.h @@ -41,98 +41,34 @@ enum HTML_MODE WRAP }; -#ifdef LIB_SEFHT_COMPILATION +typedef /*@abstract@*/ struct SH_Fragment SH_Fragment; -enum SH_FRAGMENT_TYPE -{ - NODE -}; - -struct fragment_methods; - -struct SH_Fragment; -struct SH_Fragment -{ - SH_Data * data; - - enum SH_FRAGMENT_TYPE type; - const struct fragment_methods * methods; -}; - -struct fragment_methods -{ - struct SH_Fragment * (*copy) (struct SH_Fragment *, - struct SH_Status *); - - void (*free) (struct SH_Fragment *); - - struct SH_Text * (*to_html) (struct SH_Fragment *, - enum HTML_MODE, - unsigned int, - unsigned int, - const char *, - struct SH_Status *); -}; - - -static inline -void -init_fragment (struct SH_Fragment * fragment, - struct SH_Data * data, - const enum SH_FRAGMENT_TYPE type, - const struct fragment_methods * const methods) -{ - fragment->data = data; - fragment->type = type; - fragment->methods = methods; - - return; -} - -static inline -void -free_fragment (struct SH_Fragment * fragment) -{ - (void) fragment; - return; -} - -static inline -void -copy_fragment (struct SH_Fragment * copy, - struct SH_Fragment * fragment) -{ - copy->data = fragment->data; - copy->type = fragment->type; - copy->methods = fragment->methods; - - return; -} - -static inline -enum SH_FRAGMENT_TYPE -get_type (struct SH_Fragment * fragment) -{ - return fragment->type; -} - -#endif /* LIB_SEFHT_COMPILATION */ - -typedef struct SH_Fragment SH_Fragment; -SH_Fragment * -SH_Fragment_copy (SH_Fragment * fragment, - struct SH_Status * status); +/*@null@*/ +/*@only@*/ +struct SH_Fragment * +SH_Fragment_copy (const SH_Fragment * fragment, + /*@out@*/ /*@null@*/ struct SH_Status * status) + /*@globals fileSystem@*/ + /*@modifies fileSystem@*/ + /*@modifies status@*/; void -SH_Fragment_free (SH_Fragment * fragment); +SH_Fragment_free (/*@only@*/ SH_Fragment * fragment) + /*@modifies fragment@*/ + /*@releases fragment@*/; +/*@null@*/ +/*@only@*/ SH_Text * -SH_Fragment_to_html (SH_Fragment * fragment, +SH_Fragment_to_html (const struct SH_Fragment * fragment, enum HTML_MODE mode, unsigned int indent_base, unsigned int indent_step, - char * indent_char, - struct SH_Status * status); + const char * indent_char, + /*@out@*/ /*@null@*/ struct SH_Status * status) + /*@globals fileSystem@*/ + /*@modifies fileSystem@*/ + /*@modifies status@*/; #endif /* __FRAGMENT_H__ */ diff --git a/src/lib/sefht/fragment_class.c b/src/lib/sefht/fragment_class.c new file mode 100644 index 0000000000000000000000000000000000000000..ea72c2be230101a0d0f9b25e2f08ef32024df1e0 --- /dev/null +++ b/src/lib/sefht/fragment_class.c @@ -0,0 +1,85 @@ +/* + * fragment_class.c + * + * Copyright 2022 Jonathan Schöbel <jonathan@Ubermos-2019> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + + +#ifndef __FRAGMENT_CLASS_C__ +#define __FRAGMENT_CLASS_C__ + +#if !defined (__SEFHT_H_INSIDE__) && !defined (LIB_SEFHT_COMPILATION) +#error "Only <sefht/sefht.h> can be included directly." +#endif + +#include "status.h" + +#include "data.h" +#include "text.h" + + +#ifdef LIB_SEFHT_COMPILATION +#include "fragment_data.c" + +static inline +void +init_fragment (struct SH_Fragment * fragment, + SH_Data * data, + const enum SH_FRAGMENT_TYPE type, + const struct fragment_methods * const methods) + /*@sets fragment->data, + fragment->type@*/ +{ + fragment->data = data; + fragment->type = type; + fragment->methods = methods; + + return; +} + +static inline +void +free_fragment (struct SH_Fragment * fragment) +{ + (void) fragment; + return; +} + +static inline +void +copy_fragment (struct SH_Fragment * copy, + struct SH_Fragment * fragment) +{ + copy->data = fragment->data; + copy->type = fragment->type; + copy->methods = fragment->methods; + + return; +} + +static inline +enum SH_FRAGMENT_TYPE +get_type (struct SH_Fragment * fragment) +{ + return fragment->type; +} + +#endif /* LIB_SEFHT_COMPILATION */ +#endif /* __FRAGMENT_CLASS_C__ */ diff --git a/src/lib/sefht/fragment_data.c b/src/lib/sefht/fragment_data.c new file mode 100644 index 0000000000000000000000000000000000000000..4bfac5aa78db0962acc2048f91653cbe8d865f40 --- /dev/null +++ b/src/lib/sefht/fragment_data.c @@ -0,0 +1,86 @@ +/* + * fragment_data.c + * + * Copyright 2022 Jonathan Schöbel <jonathan@Ubermos-2019> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + + +#ifndef __FRAGMENT_DATA_C__ +#define __FRAGMENT_DATA_C__ + +#if !defined (__SEFHT_H_INSIDE__) && !defined (LIB_SEFHT_COMPILATION) +#error "Only <sefht/sefht.h> can be included directly." +#endif + +#include "status.h" + +#include "data.h" +#include "text.h" + + +#ifdef LIB_SEFHT_COMPILATION + +enum SH_FRAGMENT_TYPE +{ + NODE +}; + +struct SH_Fragment; + +struct fragment_methods +{ + /*@null@*/ + /*@only@*/ + struct SH_Fragment * + (*copy) (const struct SH_Fragment *, + /*@out@*/ /*@null@*/ struct SH_Status *) + /*@globals fileSystem@*/ + /*@modifies fileSystem@*/ + /*@modifies status@*/; + + void + (*free) (/*@only@*/ struct SH_Fragment *) + /*@modifies fragment@*/ + /*@releases fragment@*/; + + /*@null@*/ + /*@only@*/ + struct SH_Text * + (*to_html) (const struct SH_Fragment *, + enum HTML_MODE, + unsigned int, + unsigned int, + const char *, + /*@out@*/ /*@null@*/ struct SH_Status *) + /*@globals fileSystem@*/ + /*@modifies fileSystem@*/ + /*@modifies status@*/; +}; + +struct SH_Fragment +{ + SH_Data * data; + + enum SH_FRAGMENT_TYPE type; + const struct fragment_methods * methods; +}; + +#endif /* LIB_SEFHT_COMPILATION */ +#endif /* __FRAGMENT_DATA_C__ */ diff --git a/src/lib/sefht/node_fragment.c b/src/lib/sefht/node_fragment.c index db05ad68c8e719605c71d7c11980f76aa22328c3..e470ca325a50f5be90941addbb75e02eb3228717 100644 --- a/src/lib/sefht/node_fragment.c +++ b/src/lib/sefht/node_fragment.c @@ -40,6 +40,8 @@ #include "node_fragment.h" +#include "fragment_class.c" + struct SH_NodeFragment { struct SH_Fragment base; @@ -59,7 +61,7 @@ struct SH_NodeFragment static const struct fragment_methods methods = { - (struct SH_Fragment * (*)(struct SH_Fragment *, + (struct SH_Fragment * (*)(const struct SH_Fragment *, struct SH_Status *)) SH_NodeFragment_deepcopy, diff --git a/src/lib/sefht/validator_tag.c b/src/lib/sefht/validator_tag.c index 59c485a22aa928da7c39b39251bb3e0ffac0bb92..a9f0ef2fab1d5e6d9ce64407009dcd2e11ed24bd 100644 --- a/src/lib/sefht/validator_tag.c +++ b/src/lib/sefht/validator_tag.c @@ -114,7 +114,7 @@ do \ size_t index; \ size_t free_index; \ \ - for (index = 1; index <= ITER##_n; index++) \ + for (index = (size_t) 1; index <= ITER##_n; index++) \ { \ /* if tag is not in the list of free blocks */ \ is_free = FALSE; \ @@ -189,7 +189,7 @@ copy_tags (/*@out@*/ struct SH_Validator * copy, /* copy data */ copy_index = 0; - for (index = 1; index <= validator->tag_n; index++) + for (index = (size_t) 1; index <= validator->tag_n; index++) { /* if tag is not in the list of free blocks */ is_free = FALSE;