7#ifndef TEMPLATEINCLUDE_H
8#define TEMPLATEINCLUDE_H
31#define TEMPLATE_PROTOTYPE_COMMON(CLASS) \
32 TEMPLATE_PROTOTYPE_COMMON_AUX(CLASS)
33#define TEMPLATE_PROTOTYPE_COMMON_AUX(CLASS) \
37 typedef struct s_##CLASS CLASS; \
40 EXPORT_SPEC CLASS *CLASS##_new(); \
43 EXPORT_SPEC void CLASS##_delete(CLASS *p); \
46 EXPORT_SPEC CLASS *CLASS##_dup(const CLASS *p); \
49 EXPORT_SPEC int CLASS##_assign(CLASS *p, const CLASS *q); \
53#define TEMPLATE_PROTOTYPE_INT(CLASS, MEMBER, TYPE) \
54 TEMPLATE_PROTOTYPE_INT_AUX(CLASS, MEMBER, TYPE)
55#define TEMPLATE_PROTOTYPE_INT_AUX(CLASS, MEMBER, TYPE) \
57 EXPORT_SPEC TYPE CLASS##_get_##MEMBER(const CLASS *p); \
58 EXPORT_SPEC int CLASS##_set_##MEMBER(CLASS *p, TYPE n); \
62#define TEMPLATE_PROTOTYPE_BUFFER(CLASS, MEMBER, TYPE) \
63 TEMPLATE_PROTOTYPE_BUFFER_AUX(CLASS, MEMBER, TYPE)
64#define TEMPLATE_PROTOTYPE_BUFFER_AUX(CLASS, MEMBER, TYPE) \
66 EXPORT_SPEC const TYPE *CLASS##_get_##MEMBER(const CLASS *p); \
67 EXPORT_SPEC int CLASS##_set_##MEMBER(CLASS *p, const TYPE *buf); \
68 EXPORT_SPEC void CLASS##_clear_##MEMBER(CLASS *p); \
72#define TEMPLATE_PROTOTYPE_LIST(CLASS, MEMBER) \
73 TEMPLATE_PROTOTYPE_LIST_AUX(CLASS, MEMBER)
74#define TEMPLATE_PROTOTYPE_LIST_AUX(CLASS, MEMBER) \
76 EXPORT_SPEC const struct list_head *CLASS##_get_##MEMBER(const CLASS *p); \
77 EXPORT_SPEC void CLASS##_add_to_list_##MEMBER(CLASS *p, struct list_head *head); \
78 EXPORT_SPEC void CLASS##_remove_from_list_##MEMBER(CLASS *p); \
79 EXPORT_SPEC void CLASS##_replace_in_list_##MEMBER(CLASS *p, struct list_head *new); \
83#define TEMPLATE_PROTOTYPE_OBJECT(CLASS, MEMBER, TYPE) \
84 TEMPLATE_PROTOTYPE_OBJECT_AUX(CLASS, MEMBER, TYPE)
85#define TEMPLATE_PROTOTYPE_OBJECT_AUX(CLASS, MEMBER, TYPE) \
87 EXPORT_SPEC const TYPE *CLASS##_get_##MEMBER(const CLASS *p); \
88 EXPORT_SPEC int CLASS##_set_##MEMBER(CLASS *p, const TYPE *n); \
92#define TEMPLATE_PROTOTYPE_STRING(CLASS, MEMBER) \
93 TEMPLATE_PROTOTYPE_STRING_AUX(CLASS, MEMBER)
94#define TEMPLATE_PROTOTYPE_STRING_AUX(CLASS, MEMBER) \
96 EXPORT_SPEC const UpnpString *CLASS##_get_##MEMBER(const CLASS *p); \
97 EXPORT_SPEC int CLASS##_set_##MEMBER(CLASS *p, const UpnpString *s); \
98 EXPORT_SPEC size_t CLASS##_get_##MEMBER##_Length(const CLASS *p); \
99 EXPORT_SPEC const char *CLASS##_get_##MEMBER##_cstr(const CLASS *p); \
100 EXPORT_SPEC int CLASS##_strcpy_##MEMBER(CLASS *p, const char *s); \
101 EXPORT_SPEC int CLASS##_strncpy_##MEMBER(CLASS *p, const char *s, size_t n); \
102 EXPORT_SPEC void CLASS##_clear_##MEMBER(CLASS *p); \
106#define TEMPLATE_PROTOTYPE_DOMSTRING(CLASS, MEMBER) \
107 TEMPLATE_PROTOTYPE_DOMSTRING_AUX(CLASS, MEMBER)
108#define TEMPLATE_PROTOTYPE_DOMSTRING_AUX(CLASS, MEMBER) \
110 EXPORT_SPEC const DOMString CLASS##_get_##MEMBER(const CLASS *p); \
111 EXPORT_SPEC int CLASS##_set_##MEMBER(CLASS *p, const DOMString s); \
112 EXPORT_SPEC const char *CLASS##_get_##MEMBER##_cstr(const CLASS *p); \
138TEMPLATE_PROTOTYPE_COMMON(CLASS)
140#define EXPAND_CLASS_MEMBER_INT(CLASS, MEMBER, TYPE) TEMPLATE_PROTOTYPE_INT(CLASS, MEMBER, TYPE)
141#define EXPAND_CLASS_MEMBER_BUFFER(CLASS, MEMBER, TYPE) TEMPLATE_PROTOTYPE_BUFFER(CLASS, MEMBER, TYPE)
142#define EXPAND_CLASS_MEMBER_LIST(CLASS, MEMBER) TEMPLATE_PROTOTYPE_LIST(CLASS, MEMBER)
143#define EXPAND_CLASS_MEMBER_OBJECT(CLASS, MEMBER, TYPE) TEMPLATE_PROTOTYPE_OBJECT(CLASS, MEMBER, TYPE)
144#define EXPAND_CLASS_MEMBER_STRING(CLASS, MEMBER) TEMPLATE_PROTOTYPE_STRING(CLASS, MEMBER)
145#define EXPAND_CLASS_MEMBER_DOMSTRING(CLASS, MEMBER) TEMPLATE_PROTOTYPE_DOMSTRING(CLASS, MEMBER)
147EXPAND_CLASS_MEMBERS(CLASS)
149#include "TemplateUndef.h"
157#ifdef TEMPLATE_GENERATE_SOURCE
164#undef EXPAND_CLASS_MEMBERS
Templates for source files of objects.
Defines constants that for some reason are not defined on some systems.
UpnpString object declaration.