/* * recenteditor_data.c * * A programmers editor * * Structures to hold the current file contents. * * HEADER FILE * * Author: Dario Rodriguez dario@softhome.net * This program is licensed under the terms of GNU GPL v2.1+ */ typedef struct whatin_t { int nlcount; } whatin_t; typedef struct rechunk_t { whatin_t whatin; int useddata; unsigned char data[1]; } rechunk_t; typedef struct undo_t { } undo_t; typedef struct redata_t { /* data */ int chunkdatasize; int sizechunks; rechunk_t **chunks; int available; /* undo */ int sizeundo; int usedundo; int curundo; undo_t *undo; char *undobuf; /* unsaved (for recovery when the program closes unexpectedly) */ char *unsavedfilename; int unsavedfd; int flag_unsaveddata; } redata_t; #warning TODO: undo operations log/buffer, add/remove/move text funtions redata_t *redata_init(void); void redata_free(redata_t *redata); int redata_getsize(redata_t *redata); int redata_getused(redata_t *redata); int redata_getavailable(redata_t *redata); int redata_wipe(redata_t *redata); int redata_preallocate(redata_t *redata, int size); int redata_fill_whatin(redata_t *redata, int chunkno); int redata_unsaved_exists(redata_t *redata, char *filename); int redata_unsaved_check(redata_t *redata, char *filename); int redata_unsaved_loadappend(redata_t *redata, char *filename); int redata_unsaved_trunc(redata_t *redata, char *filename); int redata_unsaved_add(redata_t *redata, undo_t *undo); int redata_unsaved_unadd(redata_t *redata, undo_t *undo); int redata_load(redata_t *redata, char *filename, int use_unsaved); int redata_save(redata_t *redata, char *filename); int redata_op_add(redata_t *redata, char *buf, int sizebuf, int pos); int redata_op_del(redata_t *redata, int pos, int size); int redata_op_move(redata_t *redata, int posorig, int size, int posdest); int redata_op_undo(redata_t *redata); int redata_op_redor(redata_t *redata); int redata_hash(redata_t *redata, char *resbuf129bytes); int redata_filehash(redata_t *redata, char *filename, char *resbuf129bytes);