gwenhywfar  5.10.1
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 {
31  TYPEMAKER2_GROUP *gr;
32 
34  gr->refCount=1;
36 
37  return gr;
38 }
39 
40 
41 
43 {
44  if (gr) {
45  assert(gr->refCount);
46  if (gr->refCount==1) {
48  free(gr->title);
49  free(gr->description);
50  gr->refCount=0;
51  GWEN_FREE_OBJECT(gr);
52  }
53  else
54  gr->refCount++;
55  }
56 }
57 
58 
59 
61 {
62  assert(gr);
63  assert(gr->refCount);
64  gr->refCount++;
65 }
66 
67 
68 
70 {
71  assert(gr);
72  assert(gr->refCount);
73 
74  return gr->title;
75 }
76 
77 
78 
80 {
81  assert(gr);
82  assert(gr->refCount);
83 
84  free(gr->title);
85  if (s && *s)
86  gr->title=strdup(s);
87  else
88  gr->title=NULL;
89 }
90 
91 
92 
94 {
95  assert(gr);
96  assert(gr->refCount);
97 
98  return gr->description;
99 }
100 
101 
102 
104 {
105  assert(gr);
106  assert(gr->refCount);
107 
108  free(gr->description);
109  if (s && *s)
110  gr->description=strdup(s);
111  else
112  gr->description=NULL;
113 }
114 
115 
116 
117 int Typemaker2_Group_readXml(TYPEMAKER2_GROUP *gr, GWEN_XMLNODE *node, GWEN_UNUSED const char *wantedLang)
118 {
119  const char *s;
120  GWEN_XMLNODE *n;
121 
122  assert(gr);
123  assert(gr->refCount);
124 
125  /* read title */
126  s=GWEN_XMLNode_GetProperty(node, "title", NULL);
127  if (s && *s)
129 
130  /* read descr */
131  n=GWEN_XMLNode_FindFirstTag(node, "descr", NULL, NULL);
132  if (n) {
133  GWEN_BUFFER *tbuf;
134  int rv;
135 
136  tbuf=GWEN_Buffer_new(0, 256, 0, 1);
138  if (rv<0) {
139  DBG_ERROR(0, "here (%d)", rv);
140  }
141  else {
143  }
144  GWEN_Buffer_free(tbuf);
145  }
146 
147  return 0;
148 }
149 
150 
151 
152 
153 
154 
155 
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
Definition: buffer.c:235
GWENHYWFAR_API int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags)
Definition: xmlrw.c:626
#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:239
#define GWEN_FREE_OBJECT(varname)
Definition: memory.h:61
#define NULL
Definition: binreloc.c:300
const char * Typemaker2_Group_GetTitle(TYPEMAKER2_GROUP *gr)
Definition: tm_group.c:69
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:42
int Typemaker2_Group_readXml(TYPEMAKER2_GROUP *gr, GWEN_XMLNODE *node, GWEN_UNUSED const char *wantedLang)
Definition: tm_group.c:117
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
Definition: xml.c:776
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:55
const char * Typemaker2_Group_GetDescription(TYPEMAKER2_GROUP *gr)
Definition: tm_group.c:93
void Typemaker2_Group_Attach(TYPEMAKER2_GROUP *gr)
Definition: tm_group.c:60
#define GWEN_TREE_FINI(t, element)
Definition: tree.h:571
TYPEMAKER2_GROUP * Typemaker2_Group_new()
Definition: tm_group.c:29
void GWEN_Buffer_free(GWEN_BUFFER *bf)
Definition: buffer.c:89
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:38
#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:103
void Typemaker2_Group_free(TYPEMAKER2_GROUP *gr)
Definition: tm_group.c:42
#define GWEN_TREE_INIT(t, element)
Definition: tree.h:562
void Typemaker2_Group_SetTitle(TYPEMAKER2_GROUP *gr, const char *s)
Definition: tm_group.c:79
struct GWEN__XMLNODE GWEN_XMLNODE
Definition: xml.h:156
#define GWEN_UNUSED
#define GWEN_TREE_FUNCTIONS(t, pr)
Definition: tree.h:402