gwenhywfar  5.10.1
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, " ");
41  GWEN_Buffer_GetStart(srcbuf),
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 
TYPEMAKER2_TYPE * Typemaker2_Member_GetTypePtr(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:467
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
Definition: buffer.c:235
#define NULL
Definition: binreloc.c:300
#define GWEN_LOGDOMAIN
Definition: logger.h:35
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
Definition: buffer.c:42
int Typemaker2_Builder_Invoke_DestructFn(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm, const char *src, const char *dst, GWEN_BUFFER *dbuf)
int GWEN_Buffer_AppendArgs(GWEN_BUFFER *bf, const char *fmt,...)
Definition: buffer.c:1084
struct TYPEMAKER2_BUILDER TYPEMAKER2_BUILDER
Definition: tm_builder.h:26
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
struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE
Definition: tm_type.h:21
#define DBG_INFO(dbg_logger, format, args...)
Definition: debug.h:181
int Typemaker2_Type_GetType(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:171
struct TYPEMAKER2_MEMBER TYPEMAKER2_MEMBER
Definition: tm_member.h:21
int TM2C_AddReleaseOldValueCode(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm, GWEN_BUFFER *tbuf)
Definition: tm2c_misc.c:23
const char * Typemaker2_Member_GetName(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:83
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
Definition: buffer.c:989