gwenhywfar  4.99.8beta
tm_group.c
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Thu Jul 02 2009
3  copyright : (C) 2009 by Martin Preuss
4  email : martin@libchipcard.de
5 
6  ***************************************************************************
7  * Please see toplevel file COPYING for license details *
8  ***************************************************************************/
9 
10 #ifdef HAVE_CONFIG_H
11 # include <config.h>
12 #endif
13 
14 
15 #include "tm_group_p.h"
16 
17 
18 #include <gwenhywfar/debug.h>
19 #include <gwenhywfar/misc.h>
20 
21 #include <assert.h>
22 
23 
24 
25 GWEN_TREE_FUNCTIONS(TYPEMAKER2_GROUP, Typemaker2_Group)
26 
27 
28 
30  TYPEMAKER2_GROUP *gr;
31 
33  gr->refCount=1;
35 
36  return gr;
37 }
38 
39 
40 
42  if (gr) {
43  assert(gr->refCount);
44  if (gr->refCount==1) {
46  free(gr->title);
47  free(gr->description);
48  gr->refCount=0;
49  GWEN_FREE_OBJECT(gr);
50  }
51  else
52  gr->refCount++;
53  }
54 }
55 
56 
57 
59  assert(gr);
60  assert(gr->refCount);
61  gr->refCount++;
62 }
63 
64 
65 
67  assert(gr);
68  assert(gr->refCount);
69 
70  return gr->title;
71 }
72 
73 
74 
75 void Typemaker2_Group_SetTitle(TYPEMAKER2_GROUP *gr, const char *s) {
76  assert(gr);
77  assert(gr->refCount);
78 
79  free(gr->title);
80  if (s && *s) gr->title=strdup(s);
81  else gr->title=NULL;
82 }
83 
84 
85 
87  assert(gr);
88  assert(gr->refCount);
89 
90  return gr->description;
91 }
92 
93 
94 
96  assert(gr);
97  assert(gr->refCount);
98 
99  free(gr->description);
100  if (s && *s) gr->description=strdup(s);
101  else gr->description=NULL;
102 }
103 
104 
105 
106 int Typemaker2_Group_readXml(TYPEMAKER2_GROUP *gr, GWEN_XMLNODE *node, const char *wantedLang) {
107  const char *s;
108  GWEN_XMLNODE *n;
109 
110  assert(gr);
111  assert(gr->refCount);
112 
113  /* read title */
114  s=GWEN_XMLNode_GetProperty(node, "title", NULL);
115  if (s && *s)
117 
118  /* read descr */
119  n=GWEN_XMLNode_FindFirstTag(node, "descr", NULL, NULL);
120  if (n) {
121  GWEN_BUFFER *tbuf;
122  int rv;
123 
124  tbuf=GWEN_Buffer_new(0, 256, 0, 1);
126  if (rv<0) {
127  DBG_ERROR(0, "here (%d)", rv);
128  }
129  else {
131  }
132  GWEN_Buffer_free(tbuf);
133  }
134 
135  return 0;
136 }
137 
138 
139 
140 
141 
142 
143 
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
Definition: buffer.c:223
GWENHYWFAR_API int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags)
Definition: xmlrw.c:351
#define GWEN_XML_FLAGS_SIMPLE
Definition: xml.h:89
const char * GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n, const char *name, const char *defaultValue)
Definition: xml.c:228
#define GWEN_FREE_OBJECT(varname)
Definition: memory.h:92
#define NULL
Definition: binreloc.c:290
const char * Typemaker2_Group_GetTitle(TYPEMAKER2_GROUP *gr)
Definition: tm_group.c:66
struct TYPEMAKER2_GROUP TYPEMAKER2_GROUP
Definition: tm_group.h:19
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
Definition: buffer.c:38
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
Definition: xml.c:695
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:86
const char * Typemaker2_Group_GetDescription(TYPEMAKER2_GROUP *gr)
Definition: tm_group.c:86
void Typemaker2_Group_Attach(TYPEMAKER2_GROUP *gr)
Definition: tm_group.c:58
#define GWEN_TREE_FINI(t, element)
Definition: tree.h:554
TYPEMAKER2_GROUP * Typemaker2_Group_new()
Definition: tm_group.c:29
void GWEN_Buffer_free(GWEN_BUFFER *bf)
Definition: buffer.c:83
int Typemaker2_Group_readXml(TYPEMAKER2_GROUP *gr, GWEN_XMLNODE *node, const char *wantedLang)
Definition: tm_group.c:106
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:41
#define GWEN_XML_FLAGS_HANDLE_COMMENTS
Definition: xml.h:60
#define DBG_ERROR(dbg_logger, format, args...)
Definition: debug.h:97
void Typemaker2_Group_SetDescription(TYPEMAKER2_GROUP *gr, const char *s)
Definition: tm_group.c:95
void Typemaker2_Group_free(TYPEMAKER2_GROUP *gr)
Definition: tm_group.c:41
#define GWEN_TREE_INIT(t, element)
Definition: tree.h:545
void Typemaker2_Group_SetTitle(TYPEMAKER2_GROUP *gr, const char *s)
Definition: tm_group.c:75
struct GWEN__XMLNODE GWEN_XMLNODE
Definition: xml.h:148
#define GWEN_TREE_FUNCTIONS(t, pr)
Definition: tree.h:393