uFormat Framework
alpha
|
00001 00008 #ifndef UFLINK_H 00009 #define UFLINK_H 00010 00011 #include <CoconutXML/CoconutXML.h> 00012 00014 typedef enum { 00016 uFUnknownLink, 00018 uFLicenseLink, 00020 uFTagLink, 00022 uFNoFollowLink 00023 } uFLinkType ; 00024 00026 struct uFLink 00027 { 00029 struct CNXMLObject superClass ; 00031 uFLinkType linkType ; 00033 struct CNString * url ; 00035 struct CNXMLObject * context ; 00036 } ; 00037 00046 struct uFLink * 00047 uFAllocateLink(uFLinkType type, struct CNString * url, struct CNResource * resource) ; 00048 00053 static inline void 00054 uFRetainLink(struct uFLink * dst) 00055 { 00056 CNRetainXMLObject(&(dst->superClass)) ; 00057 } 00058 00063 static inline void 00064 uFReleaseLink(struct uFLink * dst) 00065 { 00066 CNReleaseXMLObject(&(dst->superClass)) ; 00067 } 00068 00074 static inline struct CNXMLObject * 00075 CNCastLinkToXMLObject(struct uFLink * src) 00076 { 00077 return &(src->superClass) ; 00078 } 00079 00085 static inline xmlNodePtr 00086 uFEncodeLink(const struct uFLink * src) 00087 { 00088 return CNEncodeXMLObject(&(src->superClass)) ; 00089 } 00090 00096 static inline const struct CNString * 00097 uFURLInLink(const struct uFLink * src) 00098 { 00099 return src->url ; 00100 } 00101 00107 static inline void 00108 uFSetContextOfLink(struct uFLink * dst, struct CNXMLObject * src) 00109 { 00110 CNRetainXMLObject(src) ; 00111 if(dst->context){ 00112 CNReleaseXMLObject(dst->context) ; 00113 } 00114 dst->context = src ; 00115 } 00116 00122 static inline struct CNXMLObject * 00123 uFContextInLink(struct uFLink * src) 00124 { 00125 return src->context ; 00126 } 00127 00128 #endif /* UFLINK_H */ 00129 00130