|  |  | 
|  | General Guide to Textdeltas.... basic use of interfaces. | 
|  |  | 
|  | (Yes, the interfaces are a bit simplified.  :)  ) | 
|  |  | 
|  |  | 
|  | To SEND textdeltas | 
|  | ------------------ | 
|  |  | 
|  | 1. txdelta_stream = svn_txdelta (source_stream, target_stream); | 
|  |  | 
|  | 2. Get window handler to do something with delta.  If using an | 
|  | "editor" to transmit information: | 
|  |  | 
|  | window_consumer_func = editor->apply_textdelta (file_baton); | 
|  |  | 
|  | If you want raw vcdiff data for embedding in XML or HTTP | 
|  | transactions: | 
|  |  | 
|  | window_consumer_func = svn_txdelta_to_vcdiff (txdelta_stream); | 
|  |  | 
|  | 3. Loop until there are no more windows: | 
|  |  | 
|  | txdelta_window = svn_txdelta_next_window (txdelta_stream); | 
|  | window_consumer_func (txdelta_window); | 
|  | svn_txdelta_free_window (txdelta_window); | 
|  |  | 
|  | Be sure to call window_consumer_func with a NULL window when there | 
|  | are no more windows to consume. | 
|  |  | 
|  | 4. svn_txdelta_free (txdelta_stream); | 
|  |  | 
|  |  | 
|  |  | 
|  | To RECEIVE textdeltas | 
|  | --------------------- | 
|  | If implementing "apply_textdelta" within an editor: | 
|  |  | 
|  | 1. Get window handler to apply the text delta: | 
|  |  | 
|  | apply_handler = svn_txdelta_apply (read_func, write_func) | 
|  |  | 
|  | where read_func reads from the delta source and write_func writes | 
|  | to the target. | 
|  |  | 
|  | 2. If you don't need to do any special cleanup, you can return | 
|  | apply_handler to the caller directly.  If you do need to do | 
|  | cleanup, write your own window_consumer_func which invokes | 
|  | apply_handler.  In this case, your window handler will receive a | 
|  | NULL window argument when there are no more windows to consume, | 
|  | and you can do cleanup then.  Be sure to pass a NULL window to | 
|  | apply_handler when that happens so that it can clean up its own | 
|  | stuff. | 
|  |  | 
|  | If you want to receive raw vcdiff data from XML or HTTP transactions, | 
|  | get or write a window consumer function and call: | 
|  |  | 
|  | vcdiff_parser = svn_make_vcdiff_parser (window_consumer_func); | 
|  |  | 
|  | Loop over vcdiff data: | 
|  | svn_vcdiff_parse (vcdiff_parser, data); |