X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ffilexml.h;fp=cinelerra-5.1%2Fcinelerra%2Ffilexml.h;h=70950384a5bda391a42dc20f0ad1c25c64d3c4b3;hp=af45e3088bd8adde783af10b37ed613fae204d14;hb=b2eb290b3f6e5c233393017aa152e67c76243130;hpb=c0fe374d9f9ab1653e9cc2edb41afb076eeae69f diff --git a/cinelerra-5.1/cinelerra/filexml.h b/cinelerra-5.1/cinelerra/filexml.h index af45e308..70950384 100644 --- a/cinelerra-5.1/cinelerra/filexml.h +++ b/cinelerra-5.1/cinelerra/filexml.h @@ -27,6 +27,7 @@ #include #include "arraylist.h" +#include "keyframe.inc" #include "filexml.inc" #include "sizes.h" @@ -39,6 +40,7 @@ class XMLBuffer int destroy; int demand(long len); + friend class KeyFrame; public: XMLBuffer(long buf_size=0x1000, long max_size=LONG_MAX, int del=1); XMLBuffer(long buf_size, char *buf, int del=0); // writing @@ -49,10 +51,11 @@ public: long itell() { return outp - bfr; } void oseek(long pos) { inp = bfr + pos; } void iseek(long pos) { outp = bfr + pos; } - unsigned char *pos(long ofs=0) { return bfr+ofs; } - unsigned char *str() { if( inp < lmt ) *inp = 0; return bfr; } + unsigned char *pos(long ofs=0) { return bfr+ofs; } + char *cstr() { if( demand(otell()+1) ) *inp = 0; return (char*)bfr; } int read(char *bp, int n); int write(const char *bp, int n); + void copy_from(XMLBuffer *xbfr); int cur() { return outp>=inp ? -1 : *outp; } int next() { return outp>=inp ? -1 : *outp++; } @@ -129,9 +132,9 @@ public: int append_data(const char *text); int append_data(const char *text, long len); - char* read_text(); - int read_data_until(const char *tag_end, char *out, int len, int skip=0); - int read_text_until(const char *tag_end, char *out, int len, int skip=0); + char *read_text(); + int read_data_until(const char *tag_end, XMLBuffer *xbfr, int skip=0); + int read_text_until(const char *tag_end, XMLBuffer *xbfr, int skip=0); int read_tag(); int skip_tag(); int write_to_file(const char *filename); @@ -142,17 +145,18 @@ public: char *(*encode)(char *bp, const char *sp, int n); long (*coded_length)(const char *sp, int n); - int set_shared_input(char *shared_string, long avail, int coded=1); - int set_shared_output(char *shared_string, long avail, int coded=1); void set_coding(int coding); int get_coding(); + int set_shared_input(XMLBuffer *xbfr); + int set_shared_output(XMLBuffer *xbfr); + int rewind(); char *get_data(); char *string(); long length(); XMLBuffer *buffer; - int coded; + int coded, shared; XMLTag tag; long output_length;