1 /*************************************************************************** 2 begin : Wed Jul 01 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 11 #ifndef TYPEMAKER2_TYPE_H 12 #define TYPEMAKER2_TYPE_H 13 14 #include <gwenhywfar/stringlist.h> 15 #include <gwenhywfar/list1.h> 16 #include <gwenhywfar/list2.h> 17 18 #include <stdio.h> 19 20 21 typedef struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE; 22 23 GWEN_LIST_FUNCTION_DEFS(TYPEMAKER2_TYPE, Typemaker2_Type) 24 GWEN_LIST2_FUNCTION_DEFS(TYPEMAKER2_TYPE, Typemaker2_Type) 25 26 27 /* don't forget to add new flags to tm_util.c ! */ 28 29 /** special value which is used to overwrite flags from extended types */ 30 #define TYPEMAKER2_FLAGS_NONE 0x00000001 31 #define TYPEMAKER2_FLAGS_OWN 0x00000002 32 #define TYPEMAKER2_FLAGS_VOLATILE 0x00000004 33 #define TYPEMAKER2_FLAGS_CONST 0x00000008 34 #define TYPEMAKER2_FLAGS_STATIC 0x00000010 35 #define TYPEMAKER2_FLAGS_DUP 0x00000020 36 #define TYPEMAKER2_FLAGS_NODUP 0x00000040 37 #define TYPEMAKER2_FLAGS_ATTRIBUTE 0x00000080 38 #define TYPEMAKER2_FLAGS_ENUM 0x00000100 39 #define TYPEMAKER2_FLAGS_DEFINE 0x00000200 40 #define TYPEMAKER2_FLAGS_ASSIGN 0x00000400 41 #define TYPEMAKER2_FLAGS_OMIT 0x00000800 42 #define TYPEMAKER2_FLAGS_COPY 0x00001000 43 #define TYPEMAKER2_FLAGS_NOCOPY 0x00002000 44 #define TYPEMAKER2_FLAGS_SORTBYMEMBER 0x00004000 45 #define TYPEMAKER2_FLAGS_NOCONSTOBJECT 0x00008000 46 #define TYPEMAKER2_FLAGS_WITH_GETBYMEMBER 0x00010000 47 #define TYPEMAKER2_FLAGS_WITH_HASH 0x00020000 48 #define TYPEMAKER2_FLAGS_WITH_HASHNUM 0x00040000 49 #define TYPEMAKER2_FLAGS_WITH_FLAGS 0x00080000 50 #define TYPEMAKER2_FLAGS_GWEN_CB 0x00100000 51 52 53 #define TYPEMAKER2_TYPEFLAGS_WITH_DB 0x00000001 54 #define TYPEMAKER2_TYPEFLAGS_WITH_XML 0x00000002 55 #define TYPEMAKER2_TYPEFLAGS_WITH_OBJECT 0x00000004 56 #define TYPEMAKER2_TYPEFLAGS_WITH_LIST1 0x00000008 57 #define TYPEMAKER2_TYPEFLAGS_WITH_LIST2 0x00000010 58 #define TYPEMAKER2_TYPEFLAGS_WITH_INHERIT 0x00000020 59 #define TYPEMAKER2_TYPEFLAGS_WITH_IDMAP 0x00000040 60 #define TYPEMAKER2_TYPEFLAGS_WITH_TREE 0x00000080 61 #define TYPEMAKER2_TYPEFLAGS_WITH_REFCOUNT 0x00000100 62 #define TYPEMAKER2_TYPEFLAGS_WITH_SIGNALS 0x00000800 63 #define TYPEMAKER2_TYPEFLAGS_WITH_SLOTS 0x00001000 64 #define TYPEMAKER2_TYPEFLAGS_WITH_CACHEFNS 0x00002000 65 #define TYPEMAKER2_TYPEFLAGS_DUP 0x00004000 66 #define TYPEMAKER2_TYPEFLAGS_NODUP 0x00008000 67 #define TYPEMAKER2_TYPEFLAGS_COPY 0x00010000 68 #define TYPEMAKER2_TYPEFLAGS_NOCOPY 0x00020000 69 #define TYPEMAKER2_TYPEFLAGS_WITH_HASH 0x00040000 70 #define TYPEMAKER2_TYPEFLAGS_WITH_CONSTLIST2 0x00080000 71 #define TYPEMAKER2_TYPEFLAGS_WITH_TREE2 0x00100000 72 73 74 75 enum { 76 TypeMaker2_Type_Unknown=0, 77 TypeMaker2_Type_Opaque, 78 TypeMaker2_Type_Pointer, 79 TypeMaker2_Type_Array 80 }; 81 82 83 84 enum { 85 TypeMaker2_Access_Unknown=0, 86 TypeMaker2_Access_Public, 87 TypeMaker2_Access_Protected, 88 TypeMaker2_Access_Library, 89 TypeMaker2_Access_Private 90 }; 91 92 93 #include "tm_member.h" 94 #include "tm_header.h" 95 #include "tm_enum.h" 96 #include "tm_define.h" 97 #include "tm_code.h" 98 #include "tm_inline.h" 99 #include "tm_virtualfn.h" 100 #include "tm_signal.h" 101 #include "tm_slot.h" 102 #include "tm_group.h" 103 104 105 106 107 TYPEMAKER2_TYPE *Typemaker2_Type_new(); 108 void Typemaker2_Type_free(TYPEMAKER2_TYPE *ty); 109 void Typemaker2_Type_Attach(TYPEMAKER2_TYPE *ty); 110 111 112 const char *Typemaker2_Type_GetName(const TYPEMAKER2_TYPE *ty); 113 void Typemaker2_Type_SetName(TYPEMAKER2_TYPE *ty, const char *s); 114 115 const char *Typemaker2_Type_GetExtends(const TYPEMAKER2_TYPE *ty); 116 void Typemaker2_Type_SetExtends(TYPEMAKER2_TYPE *ty, const char *s); 117 118 const char *Typemaker2_Type_GetBaseType(const TYPEMAKER2_TYPE *ty); 119 void Typemaker2_Type_SetBaseType(TYPEMAKER2_TYPE *ty, const char *s); 120 121 int Typemaker2_Type_GetType(const TYPEMAKER2_TYPE *ty); 122 void Typemaker2_Type_SetType(TYPEMAKER2_TYPE *ty, int i); 123 124 const char *Typemaker2_Type_GetAqDbType(const TYPEMAKER2_TYPE *ty); 125 void Typemaker2_Type_SetAqDbType(TYPEMAKER2_TYPE *ty, const char *s); 126 127 const char *Typemaker2_Type_GetBaseFileName(const TYPEMAKER2_TYPE *ty); 128 void Typemaker2_Type_SetBaseFileName(TYPEMAKER2_TYPE *ty, const char *s); 129 130 const char *Typemaker2_Type_GetFreeHook(const TYPEMAKER2_TYPE *ty); 131 void Typemaker2_Type_SetFreeHook(TYPEMAKER2_TYPE *ty, const char *s); 132 133 uint32_t Typemaker2_Type_GetFlags(const TYPEMAKER2_TYPE *ty); 134 void Typemaker2_Type_SetFlags(TYPEMAKER2_TYPE *ty, uint32_t i); 135 136 uint32_t Typemaker2_Type_GetSetFlags(const TYPEMAKER2_TYPE *ty); 137 void Typemaker2_Type_SetSetFlags(TYPEMAKER2_TYPE *ty, uint32_t i); 138 139 uint32_t Typemaker2_Type_GetGetFlags(const TYPEMAKER2_TYPE *ty); 140 void Typemaker2_Type_SetGetFlags(TYPEMAKER2_TYPE *ty, uint32_t i); 141 142 uint32_t Typemaker2_Type_GetDupFlags(const TYPEMAKER2_TYPE *ty); 143 void Typemaker2_Type_SetDupFlags(TYPEMAKER2_TYPE *ty, uint32_t i); 144 145 uint32_t Typemaker2_Type_GetCopyFlags(const TYPEMAKER2_TYPE *ty); 146 void Typemaker2_Type_SetCopyFlags(TYPEMAKER2_TYPE *ty, uint32_t i); 147 148 int Typemaker2_Type_GetAccess(const TYPEMAKER2_TYPE *ty); 149 void Typemaker2_Type_SetAccess(TYPEMAKER2_TYPE *ty, int i); 150 151 int Typemaker2_Type_GetUsePrivateConstructor(const TYPEMAKER2_TYPE *ty); 152 void Typemaker2_Type_SetUsePrivateConstructor(TYPEMAKER2_TYPE *ty, int i); 153 154 const char *Typemaker2_Type_GetDescription(const TYPEMAKER2_TYPE *ty); 155 void Typemaker2_Type_SetDescription(TYPEMAKER2_TYPE *ty, const char *s); 156 157 const char *Typemaker2_Type_GetDefaultValue(const TYPEMAKER2_TYPE *ty); 158 void Typemaker2_Type_SetDefaultValue(TYPEMAKER2_TYPE *ty, const char *s); 159 160 const char *Typemaker2_Type_GetPresetValue(const TYPEMAKER2_TYPE *ty); 161 void Typemaker2_Type_SetPresetValue(TYPEMAKER2_TYPE *ty, const char *s); 162 163 const char *Typemaker2_Type_GetIdentifier(const TYPEMAKER2_TYPE *ty); 164 void Typemaker2_Type_SetIdentifier(TYPEMAKER2_TYPE *ty, const char *s); 165 166 const char *Typemaker2_Type_GetPrefix(const TYPEMAKER2_TYPE *ty); 167 void Typemaker2_Type_SetPrefix(TYPEMAKER2_TYPE *ty, const char *s); 168 169 const char *Typemaker2_Type_GetInherits(const TYPEMAKER2_TYPE *ty); 170 void Typemaker2_Type_SetInherits(TYPEMAKER2_TYPE *ty, const char *s); 171 172 const char *Typemaker2_Type_GetBaseType(const TYPEMAKER2_TYPE *ty); 173 void Typemaker2_Type_SetBaseType(TYPEMAKER2_TYPE *ty, const char *s); 174 175 const char *Typemaker2_Type_GetExtends(const TYPEMAKER2_TYPE *ty); 176 void Typemaker2_Type_SetExtends(TYPEMAKER2_TYPE *ty, const char *s); 177 178 179 TYPEMAKER2_MEMBER_LIST *Typemaker2_Type_GetMembers(const TYPEMAKER2_TYPE *ty); 180 TYPEMAKER2_HEADER_LIST *Typemaker2_Type_GetHeaders(const TYPEMAKER2_TYPE *ty); 181 TYPEMAKER2_ENUM_LIST *Typemaker2_Type_GetEnums(const TYPEMAKER2_TYPE *ty); 182 TYPEMAKER2_DEFINE_LIST *Typemaker2_Type_GetDefines(const TYPEMAKER2_TYPE *ty); 183 TYPEMAKER2_CODE_LIST *Typemaker2_Type_GetCodeDefs(const TYPEMAKER2_TYPE *ty); 184 TYPEMAKER2_INLINE_LIST *Typemaker2_Type_GetInlines(const TYPEMAKER2_TYPE *ty); 185 TYPEMAKER2_VIRTUALFN_LIST *Typemaker2_Type_GetVirtualFns(const TYPEMAKER2_TYPE *ty); 186 TYPEMAKER2_SIGNAL_LIST *Typemaker2_Type_GetSignals(const TYPEMAKER2_TYPE *ty); 187 TYPEMAKER2_SLOT_LIST *Typemaker2_Type_GetSlots(const TYPEMAKER2_TYPE *ty); 188 TYPEMAKER2_GROUP_TREE *Typemaker2_Type_GetGroupTree(const TYPEMAKER2_TYPE *ty); 189 190 int Typemaker2_Type_GetNonVolatileMemberCount(const TYPEMAKER2_TYPE *ty); 191 void Typemaker2_Type_SetNonVolatileMemberCount(TYPEMAKER2_TYPE *ty, int i); 192 193 194 TYPEMAKER2_TYPE *Typemaker2_Type_GetExtendsPtr(const TYPEMAKER2_TYPE *ty); 195 void Typemaker2_Type_SetExtendsPtr(TYPEMAKER2_TYPE *ty, TYPEMAKER2_TYPE *p); 196 197 TYPEMAKER2_TYPE *Typemaker2_Type_GetBaseTypePtr(const TYPEMAKER2_TYPE *ty); 198 void Typemaker2_Type_SetBaseTypePtr(TYPEMAKER2_TYPE *ty, TYPEMAKER2_TYPE *p); 199 200 TYPEMAKER2_TYPE *Typemaker2_Type_GetInheritsPtr(const TYPEMAKER2_TYPE *ty); 201 void Typemaker2_Type_SetInheritsPtr(TYPEMAKER2_TYPE *ty, TYPEMAKER2_TYPE *p); 202 203 const char *Typemaker2_Type_GetFieldCountId(const TYPEMAKER2_TYPE *ty); 204 void Typemaker2_Type_SetFieldCountId(TYPEMAKER2_TYPE *ty, const char *s); 205 206 207 TYPEMAKER2_ENUM *Typemaker2_Type_FindEnum(TYPEMAKER2_TYPE *ty, const char *s); 208 TYPEMAKER2_CODE *Typemaker2_Type_FindCodeForMember(const TYPEMAKER2_TYPE *ty, 209 const TYPEMAKER2_MEMBER *tm, 210 const char *id); 211 212 213 int Typemaker2_Type_readXml(TYPEMAKER2_TYPE *ty, GWEN_XMLNODE *node, const char *wantedLang); 214 215 void Typemaker2_Type_Dump(TYPEMAKER2_TYPE *ty, FILE *f, int indent); 216 217 218 219 #endif 220 221 222 223