Gsoap compatibility macros.
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Wed, 28 Feb 2007 14:33:23 +0000 (14:33 +0000)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Wed, 28 Feb 2007 14:33:23 +0000 (14:33 +0000)
org.glite.security.gsoap-plugin/Makefile
org.glite.security.gsoap-plugin/interface/glite_gscompat.h [new file with mode: 0644]

index 6f1c673..236f836 100644 (file)
@@ -95,7 +95,7 @@ ARES_LIBS:=-L${cares_prefix}/lib -lcares
 EX_LIBS:= ${GLOBUS_LIBS} ${ARES_LIBS}
 EX_THRLIBS := ${GLOBUS_THR_LIBS} ${ARES_LIBS}
 
-HDRS:=glite_gss.h glite_gsplugin.h
+HDRS:=glite_gss.h glite_gsplugin.h glite_gscompat.h
 
 GSS_OBJS:=glite_gss.o
 GSS_LOBJS:=${GSS_OBJS:.o=.lo}
diff --git a/org.glite.security.gsoap-plugin/interface/glite_gscompat.h b/org.glite.security.gsoap-plugin/interface/glite_gscompat.h
new file mode 100644 (file)
index 0000000..0bdf5f8
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef GLIE_SECURITY_GSCOMPAT_H
+#define GLIE_SECURITY_GSCOMPAT_H
+
+#ident "$Header: "
+
+#ifndef GSOAP_VERSION
+  #error GSOAP_VERSION required
+#endif
+
+#if GSOAP_VERSION >= 20709
+  #define GLITE_SECURITY_GSOAP_CHOICE_GET(CHOICE, ITEM, TYPENAME, TYPENO) ((CHOICE)->union_##TYPENAME.ITEM)
+#elif GSOAP_VERSION >= 20706
+  #define GLITE_SECURITY_GSOAP_CHOICE_GET(CHOICE, ITEM, TYPENAME, TYPENO) ((CHOICE)->union_##TYPENO.ITEM)
+#else
+  #define GLITE_SECURITY_GSOAP_CHOICE_GET(CHOICE, ITEM, TYPENAME, TYPENO) ((CHOICE)->ITEM)
+#endif
+
+#if GSOAP_VERSION >= 20706
+  #define GLITE_SECURITY_GSOAP_REASON2(SOAP) ((SOAP)->fault->SOAP_ENV__Reason ? (SOAP)->fault->SOAP_ENV__Reason->SOAP_ENV__Text : "(no reason)")
+  #define GLITE_SECURITY_GSOAP_TRUE xsd__boolean__true_
+  #define GLITE_SECURITY_GSOAP_FALSE xsd__boolean__false_
+#else
+  #define GLITE_SECURITY_GSOAP_REASON2(SOAP) ((SOAP)->fault->SOAP_ENV__Reason)
+  #define GLITE_SECURITY_GSOAP_TRUE true_
+  #define GLITE_SECURITY_GSOAP_FALSE false_
+#endif
+
+#define GLITE_SECURITY_GSOAP_DETAIL(SOAP) ((SOAP)->version == 2 ? (SOAP)->fault->SOAP_ENV__Detail : (SOAP)->fault->detail)
+#define GLITE_SECURITY_GSOAP_REASON(SOAP) ((SOAP)->version == 2 ? GLITE_SECURITY_GSOAP_REASON2((SOAP)) : (SOAP)->fault->faultstring)
+
+#if GSOAP_VERSION >= 20709
+  #define GLITE_SECURITY_GSOAP_LIST_CREATE(SOAP, CONTAINER, LIST, TYPE, N) do { \
+       (CONTAINER)->LIST = soap_malloc((SOAP), (N) * sizeof(TYPE)); \
+       (CONTAINER)->__size##LIST = (N); \
+} while (0);
+  #define GLITE_SECURITY_GSOAP_LIST_GET(LIST, INDEX) (&(LIST)[INDEX])
+#else
+  #define GLITE_SECURITY_GSOAP_LIST_CREATE(SOAP, CONTAINER, LIST, TYPE, N) do { \
+       int i##LIST; \
+       \
+       (CONTAINER)->LIST = soap_malloc((SOAP), (N) * sizeof(void *));\
+       (CONTAINER)->__size##LIST = (N); \
+       for (i##LIST = 0; i##LIST < (N); i##LIST++) { \
+               (CONTAINER)->LIST[i##LIST] = soap_malloc((SOAP), sizeof(TYPE)); \
+       } \
+} while (0)
+  #define GLITE_SECURITY_GSOAP_LIST_GET(LIST, INDEX) ((LIST)[INDEX])
+#endif
+
+
+#endif