gwenhywfar
4.3.1
|
00001 /*************************************************************************** 00002 begin : Sat Feb 20 2010 00003 copyright : (C) 2010 by Martin Preuss 00004 email : martin@libchipcard.de 00005 00006 *************************************************************************** 00007 * Please see toplevel file COPYING for license details * 00008 ***************************************************************************/ 00009 00010 #ifdef HAVE_CONFIG_H 00011 # include <config.h> 00012 #endif 00013 00014 #define DISABLE_DEBUGLOG 00015 00016 00017 #include "htmlgroup_p.h" 00018 00019 #include <gwenhywfar/misc.h> 00020 #include <gwenhywfar/debug.h> 00021 00022 00023 00024 GWEN_INHERIT_FUNCTIONS(HTML_GROUP) 00025 00026 00027 00028 00029 00030 HTML_GROUP *HtmlGroup_new(const char *groupName, 00031 HTML_GROUP *parent, 00032 GWEN_XML_CONTEXT *ctx) { 00033 HTML_GROUP *g; 00034 00035 GWEN_NEW_OBJECT(HTML_GROUP, g); 00036 GWEN_INHERIT_INIT(HTML_GROUP, g); 00037 g->parent=parent; 00038 g->xmlContext=ctx; 00039 if (groupName) 00040 g->groupName=strdup(groupName); 00041 if (g->xmlContext==NULL && g->parent) 00042 g->xmlContext=parent->xmlContext; 00043 00044 return g; 00045 } 00046 00047 00048 00049 void HtmlGroup_free(HTML_GROUP *g) { 00050 if (g) { 00051 GWEN_INHERIT_FINI(HTML_GROUP, g); 00052 00053 HtmlProps_free(g->properties); 00054 free(g->groupName); 00055 00056 GWEN_FREE_OBJECT(g); 00057 } 00058 } 00059 00060 00061 00062 HTML_GROUP *HtmlGroup_GetParent(const HTML_GROUP *g) { 00063 assert(g); 00064 return g->parent; 00065 } 00066 00067 00068 00069 GWEN_XML_CONTEXT *HtmlGroup_GetXmlContext(const HTML_GROUP *g) { 00070 assert(g); 00071 return g->xmlContext; 00072 } 00073 00074 00075 00076 const char *HtmlGroup_GetGroupName(const HTML_GROUP *g) { 00077 assert(g); 00078 return g->groupName; 00079 } 00080 00081 00082 00083 HTML_OBJECT *HtmlGroup_GetObject(const HTML_GROUP *g) { 00084 assert(g); 00085 return g->object; 00086 } 00087 00088 00089 00090 void HtmlGroup_SetObject(HTML_GROUP *g, HTML_OBJECT *o) { 00091 assert(g); 00092 g->object=o; 00093 } 00094 00095 00096 00097 HTML_PROPS *HtmlGroup_GetProperties(const HTML_GROUP *g) { 00098 assert(g); 00099 return g->properties; 00100 } 00101 00102 00103 00104 void HtmlGroup_SetProperties(HTML_GROUP *g, HTML_PROPS *pr){ 00105 assert(g); 00106 00107 HtmlProps_Attach(pr); 00108 HtmlProps_free(g->properties); 00109 g->properties=pr; 00110 } 00111 00112 00113 00114 00115 00116 00117 00118 00119 HTML_GROUP_STARTTAG_FN 00120 HtmlGroup_SetStartTagFn(HTML_GROUP *g, 00121 HTML_GROUP_STARTTAG_FN f) { 00122 HTML_GROUP_STARTTAG_FN oldFn; 00123 00124 assert(g); 00125 oldFn=g->startTagFn; 00126 g->startTagFn=f; 00127 return oldFn; 00128 } 00129 00130 00131 00132 HTML_GROUP_ENDTAG_FN 00133 HtmlGroup_SetEndTagFn(HTML_GROUP *g, 00134 HTML_GROUP_ENDTAG_FN f) { 00135 HTML_GROUP_ENDTAG_FN oldFn; 00136 00137 assert(g); 00138 oldFn=g->endTagFn; 00139 g->endTagFn=f; 00140 return oldFn; 00141 } 00142 00143 00144 00145 HTML_GROUP_ADDDATA_FN 00146 HtmlGroup_SetAddDataFn(HTML_GROUP *g, 00147 HTML_GROUP_ADDDATA_FN f) { 00148 HTML_GROUP_ADDDATA_FN oldFn; 00149 00150 assert(g); 00151 oldFn=g->addDataFn; 00152 g->addDataFn=f; 00153 return oldFn; 00154 } 00155 00156 00157 00158 HTML_GROUP_ENDSUBGROUP_FN 00159 HtmlGroup_SetEndSubGroupFn(HTML_GROUP *g, 00160 HTML_GROUP_ENDSUBGROUP_FN f) { 00161 HTML_GROUP_ENDSUBGROUP_FN oldFn; 00162 00163 assert(g); 00164 oldFn=g->endSubGroupFn; 00165 g->endSubGroupFn=f; 00166 return oldFn; 00167 } 00168 00169 00170 00171 00172 00173 int HtmlGroup_StartTag(HTML_GROUP *g, 00174 const char *tagName) { 00175 assert(g); 00176 if (g->startTagFn) 00177 return g->startTagFn(g, tagName); 00178 else 00179 return GWEN_ERROR_NOT_IMPLEMENTED; 00180 } 00181 00182 00183 00184 int HtmlGroup_EndTag(HTML_GROUP *g, 00185 const char *tagName) { 00186 assert(g); 00187 if (g->endTagFn) 00188 return g->endTagFn(g, tagName); 00189 else 00190 return GWEN_ERROR_NOT_IMPLEMENTED; 00191 } 00192 00193 00194 00195 int HtmlGroup_AddData(HTML_GROUP *g, 00196 const char *data) { 00197 assert(g); 00198 if (g->addDataFn) 00199 return g->addDataFn(g, data); 00200 else 00201 return GWEN_ERROR_NOT_IMPLEMENTED; 00202 } 00203 00204 00205 00206 int HtmlGroup_EndSubGroup(HTML_GROUP *g, HTML_GROUP *sg) { 00207 assert(g); 00208 if (g->endSubGroupFn) 00209 return g->endSubGroupFn(g, sg); 00210 else 00211 return GWEN_ERROR_NOT_IMPLEMENTED; 00212 } 00213 00214 00215 00216 00217