Annotation of libwww/Library/src/HTLink.html, revision 2.3
2.1 frystyk 1: <HTML>
2: <HEAD>
3: <!-- Changed by: Henrik Frystyk Nielsen, 30-Jun-1996 -->
2.2 frystyk 4: <TITLE>W3C Sample Code Library libwww Link Class</TITLE>
2.1 frystyk 5: </HEAD>
6: <BODY>
7: <H1>
8: The Link Class
9: </H1>
10: <PRE>
11: /*
12: ** (c) COPYRIGHT MIT 1995.
13: ** Please first read the full copyright statement in the file COPYRIGH.
14: */
15: </PRE>
16: <P>
17: A <A HREF="HTLink.html">Link</A> represents the link between anchor objects.
18: By keeping the link as a object and not as part of the anchor we are capable
19: of handling link semantics in a much more organized way. For example, we
20: can then search for link types among all the link objects that we have created.
21: <A HREF="HTAnchor.html">Anchor objects</A> are bound together using Link
22: objects. Each anchor can be the source or destination of zero, one, or more
23: links from and to other anchors.
24: <P>
25: This module is implemented by <A HREF="HTLink.c">HTLink.c</A>, and it is
2.3 ! frystyk 26: a part of the <A HREF="http://www.w3.org/Library/"> W3C Sample Code
2.1 frystyk 27: Library</A>.
28: <PRE>
29: #ifndef HTLINK_H
30: #define HTLINK_H
31:
32: typedef struct _HTLink HTLink;
33:
34: #include "WWWUtil.h"
35: #include "HTMethod.h"
36: #include "HTAnchor.h"
37: </PRE>
38: <H2>
39: Creation and Deletion Methods
40: </H2>
41: <P>
42: These are the methods for crating and deleting new link objects
43: <H3>
44: Create a new Link Object
45: </H3>
46: <PRE>typedef HTAtom * HTLinkType;
47:
48: typedef enum _HTLinkResult {
49: HT_LINK_INVALID = -1,
50: HT_LINK_NONE = 0,
51: HT_LINK_ERROR,
52: HT_LINK_OK
53: } HTLinkResult;
54:
55: struct _HTLink {
56: HTAnchor * dest; /* The anchor to which this leads */
57: HTLinkType type; /* Semantics of this link */
58: HTMethod method; /* Method for this link, e.g. PUT */
59: HTLinkResult result; /* Result of any attempt to get this link */
60: };
61:
62: HTLink * HTLink_new (void);
63: </PRE>
64: <H3>
65: Delete a Link Object
66: </H3>
67: <P>
68: A link can be removed as any other object
69: <PRE>BOOL HTLink_delete (HTLink * link);
70: </PRE>
71: <H3>
72: Remove All Link Information from an Anchor
73: </H3>
74: <P>
75: This is normally a part of deleting anchor objects.
76: <PRE>extern BOOL HTLink_removeAll (HTAnchor * me);
77: </PRE>
78: <H2>
79: Handle Link Between Anchors
80: </H2>
81: <P>
82: As mentioned, link objects are the ones that bind anchor objects together
83: in a Web like structure
84: <H3>
85: Add a Link between two Anchors
86: </H3>
87: <P>
88: This method creates a new link between two <A HREF="HTAnchor.html">anchor
89: objects</A>.
90: <PRE>extern BOOL HTLink_add (HTAnchor * source,
91: HTAnchor * destination,
92: HTLinkType type,
93: HTMethod method);
94: </PRE>
95: <H3>
96: Remove All Links Between two Anchors
97: </H3>
98: <P>
99: Removes link information from one anchor to another.
100: <PRE>extern BOOL HTLink_remove (HTAnchor * source, HTAnchor * destination);
101: </PRE>
102: <H3>
103: Find a Link
104: </H3>
105: <P>
106: Find the anchor object between a destination and a source ancher. Return
107: link object if any, else NULL
108: <PRE>extern HTLink * HTLink_find (HTAnchor * source, HTAnchor * destination);
109: </PRE>
110: <H2>
111: Link Information
112: </H2>
113: <P>
114: This is the set of methods for accessing the information carried by a link
115: object
116: <H3>
117: Link Destination
118: </H3>
119: <P>
120: The link destination is the destination anchor pointed to by the link.
121: <PRE>extern BOOL HTLink_setDestination (HTLink * link, HTAnchor * dest);
122: extern HTAnchor * HTLink_destination (HTLink * link);
123: </PRE>
124: <H3>
125: Link Types and Semantic Links
126: </H3>
127: <P>
128: Each link has a sematic representation associated with it. This means that
129: the application can distinguish between pages based on the semantics of the
130: link. This is very similar to the <CODE>LINK</CODE> tag in HTML pages which
131: indicates the meaning if this pages to other pages.
132: <PRE>extern BOOL HTLink_setType (HTLink * link, HTLinkType type);
133: extern HTLinkType HTLink_type (HTLink * link);
134: </PRE>
135: <H3>
136: Link Method
137: </H3>
138: <P>
139: The link method is the HTTP method we have performed between the two links.
140: For example, it can be a POST operation, or a PUT operation where the operation
141: on the first anchor created a new anchor.
142: <PRE>extern BOOL HTLink_setMethod (HTLink * link, HTMethod method);
143: extern HTMethod HTLink_method (HTLink * link);
144: </PRE>
145: <H3>
146: Link Result
147: </H3>
148: <P>
149: When a link has been used for posting an object from a source to a destination
150: link, the result of the operation is stored as part of the link information.
151: This means that we can keep track of which operations we have performed on
152: a link and hence the application can ask the user whether he or she wants
153: to do a re-post, for example.
154: <PRE>
155: extern BOOL HTLink_setResult (HTLink * link, HTLinkResult result);
156: extern HTLinkResult HTLink_result (HTLink * link);
157: </PRE>
158: <PRE>
159: #endif /* HTLINK_H */
160: </PRE>
161: <P>
162: <HR>
163: <ADDRESS>
2.3 ! frystyk 164: @(#) $Id: HTLink.html,v 2.2 1997/02/16 18:42:29 frystyk Exp $
2.1 frystyk 165: </ADDRESS>
166: </BODY></HTML>
Webmaster