gwenhywfar  5.10.1
tm2c_macros.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_macros.h"
16 #include "tm2c_misc.h"
17 
18 #include <gwenhywfar/debug.h>
19 
20 #include <ctype.h>
21 
22 
23 
25 {
26  GWEN_BUFFER *tbuf;
27  uint32_t flags;
28  const char *sTypeId;
29  const char *sTypePrefix;
30 
32  sTypePrefix=Typemaker2_Type_GetPrefix(ty);
33 
34  tbuf=GWEN_Buffer_new(0, 256, 0, 1);
35 
36  GWEN_Buffer_AppendString(tbuf, "/* macro functions */\n");
37 
38  flags=Typemaker2_Type_GetFlags(ty);
40  GWEN_Buffer_AppendArgs(tbuf, "GWEN_LIST_FUNCTIONS(%s, %s)\n", sTypeId, sTypePrefix);
41 
43  GWEN_Buffer_AppendArgs(tbuf, "GWEN_LIST2_FUNCTIONS(%s, %s)\n", sTypeId, sTypePrefix);
44 
46  GWEN_Buffer_AppendArgs(tbuf, "GWEN_CONSTLIST2_FUNCTIONS(%s, %s)\n", sTypeId, sTypePrefix);
47 
49  GWEN_Buffer_AppendArgs(tbuf, "GWEN_TREE_FUNCTIONS(%s, %s)\n", sTypeId, sTypePrefix);
50 
52  GWEN_Buffer_AppendArgs(tbuf, "GWEN_TREE2_FUNCTIONS(%s, %s)\n", sTypeId, sTypePrefix);
53 
55  GWEN_Buffer_AppendArgs(tbuf, "GWEN_INHERIT_FUNCTIONS(%s)\n", sTypeId);
56 
58  GWEN_Buffer_AppendArgs(tbuf, "GWEN_IDMAP_FUNCTIONS(%s, %s)\n", sTypeId, sTypePrefix);
59 
60  GWEN_Buffer_AppendString(tbuf, "\n");
61 
63  GWEN_Buffer_free(tbuf);
64 
65  return 0;
66 }
67 
68 
69 
#define TYPEMAKER2_TYPEFLAGS_WITH_CONSTLIST2
Definition: tm_type.h:70
#define TYPEMAKER2_TYPEFLAGS_WITH_TREE2
Definition: tm_type.h:71
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
Definition: buffer.c:235
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
Definition: buffer.c:42
int TM2C_BuildMacroFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm2c_macros.c:24
const char * Typemaker2_Type_GetIdentifier(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:543
int GWEN_Buffer_AppendArgs(GWEN_BUFFER *bf, const char *fmt,...)
Definition: buffer.c:1084
#define TYPEMAKER2_TYPEFLAGS_WITH_TREE
Definition: tm_type.h:60
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
void Typemaker2_Builder_AddCode(TYPEMAKER2_BUILDER *tb, const char *s)
Definition: tm_builder.c:204
struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE
Definition: tm_type.h:21
#define TYPEMAKER2_TYPEFLAGS_WITH_IDMAP
Definition: tm_type.h:59
const char * Typemaker2_Type_GetPrefix(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:565
#define TYPEMAKER2_TYPEFLAGS_WITH_INHERIT
Definition: tm_type.h:58
uint32_t Typemaker2_Type_GetFlags(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:341
#define TYPEMAKER2_TYPEFLAGS_WITH_LIST2
Definition: tm_type.h:57
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
Definition: buffer.c:989
#define TYPEMAKER2_TYPEFLAGS_WITH_LIST1
Definition: tm_type.h:56