gwenhywfar 5.12.0
tm2c_misc.c
Go to the documentation of this file.
1/***************************************************************************
2 begin : Thu Jul 02 2009
3 copyright : (C) 2018 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 "tm2c_setter.h"
16
17#include <gwenhywfar/debug.h>
18
19#include <ctype.h>
20
21
22
24{
25 TYPEMAKER2_TYPE *mty;
26 GWEN_BUFFER *srcbuf;
27 int rv;
28
30 assert(mty);
31
33 GWEN_Buffer_AppendArgs(tbuf, " if (p_struct->%s) {\n", Typemaker2_Member_GetName(tm));
34
35 /* invoke free */
36 srcbuf=GWEN_Buffer_new(0, 256, 0, 1);
37 GWEN_Buffer_AppendArgs(srcbuf, "p_struct->%s", Typemaker2_Member_GetName(tm));
38
39 GWEN_Buffer_AppendString(tbuf, " ");
42 NULL, /* no dest */
43 tbuf);
44 if (rv<0) {
45 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
46 GWEN_Buffer_free(srcbuf);
47 return rv;
48 }
49 GWEN_Buffer_AppendString(tbuf, "\n");
50 GWEN_Buffer_free(srcbuf);
51
52
54 GWEN_Buffer_AppendArgs(tbuf, " p_struct->%s=NULL;\n", Typemaker2_Member_GetName(tm));
55 GWEN_Buffer_AppendString(tbuf, " }\n");
56 }
57
58 return 0;
59}
60
61
#define NULL
Definition binreloc.c:300
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
Definition buffer.c:42
int GWEN_Buffer_AppendArgs(GWEN_BUFFER *bf, const char *fmt,...)
Definition buffer.c:1087
void GWEN_Buffer_free(GWEN_BUFFER *bf)
Definition buffer.c:89
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
Definition buffer.c:992
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
Definition buffer.c:235
#define DBG_INFO(dbg_logger, format,...)
Definition debug.h:181
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition buffer.h:38
#define GWEN_LOGDOMAIN
Definition logger.h:35
int TM2C_AddReleaseOldValueCode(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm, GWEN_BUFFER *tbuf)
Definition tm2c_misc.c:23
int Typemaker2_Builder_Invoke_DestructFn(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm, const char *src, const char *dst, GWEN_BUFFER *dbuf)
struct TYPEMAKER2_BUILDER TYPEMAKER2_BUILDER
Definition tm_builder.h:26
TYPEMAKER2_TYPE * Typemaker2_Member_GetTypePtr(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:467
const char * Typemaker2_Member_GetName(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:83
struct TYPEMAKER2_MEMBER TYPEMAKER2_MEMBER
Definition tm_member.h:21
int Typemaker2_Type_GetType(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:171
struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE
Definition tm_type.h:21
@ TypeMaker2_Type_Pointer
Definition tm_type.h:78