uFormat Framework  alpha
uFLink.h
Go to the documentation of this file.
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