drd64_libedittext_cursorapi_edit.o \
drd64_libedittext_cursorapi_move.o \
drd64_libedittext_undoinfo.o \
+ drd64_libedittext_undoedit.o \
drd64_libedittext_system.o
HEADER = \
drd64_libedittext.h \
drd64_libedittext_cursorctrl.h \
drd64_libedittext_cursormove.h \
drd64_libedittext_undoinfo.h \
+ drd64_libedittext_undoedit.h \
drd64_libedittext_system.h \
drd64_libedittext_types.h \
drd64_libedittext_config.h \
drd64_libedittext_undoinfo.o: drd64_libedittext_undoinfo.c $(HEADER)
$(CC) -c -o drd64_libedittext_undoinfo.o $(FLAGS_DEBUG) $(FLAGS_COMPILE) \
drd64_libedittext_undoinfo.c
+drd64_libedittext_undoedit.o: drd64_libedittext_undoedit.c $(HEADER)
+ $(CC) -c -o drd64_libedittext_undoedit.o $(FLAGS_DEBUG) $(FLAGS_COMPILE) \
+ drd64_libedittext_undoedit.c
drd64_libedittext_debug.o: drd64_libedittext_debug.c $(HEADER)
$(CC) -c -o drd64_libedittext_debug.o $(FLAGS_DEBUG) $(FLAGS_COMPILE) \
drd64_libedittext_debug.c
--- /dev/null
+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
+
+ D r . D e a m o n 6 4
+ for INTEL64(R), AMD64(R)
+
+ Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
+
+/* File Info -----------------------------------------------------------
+File: drd64_.c
+Function:
+Comment:
+----------------------------------------------------------------------*/
+
+#define DRD64_SRC_LIBEDITTEXT_UNDOEDIT
+#include"drd64_libedittext.h"
+
+#define LOCATION(n) DRD64_ERR_LOCATION( \
+ DRD64_ERROR_MODULE_LIBEDITTEXT, DRD64_ERROR_ARCH_NODEPEND, \
+ DRD64_SRC_LIBEDITTEXT_UNDOEDIT_SRCID, (n))
+
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBEDITTEXT_UNDOEDIT_EXTERN
+int
+ LibEditText_UndoEdit_ExecReDoInfo(
+ LibEditText_TextInfo *p_tinfo,
+ LibEditText_UndoInfo *p_udinfo )
+{
+ int i_result = 0x00;
+ LibEditText_LineInfo *p_line;
+
+
+ if( LIBEDITTEXT_UNDOCMD_INSERTLINE == p_udinfo->b_cmd ) {
+
+ }
+ else if( LIBEDITTEXT_UNDOCMD_DELETELINE == p_udinfo->b_cmd ) {
+
+ }
+ else if( LIBEDITTEXT_UNDOCMD_INSERTSTRING == p_udinfo->b_cmd ) {
+
+ }
+ else if( LIBEDITTEXT_UNDOCMD_DELETESTRING == p_udinfo->b_cmd ) {
+
+ }
+ else if( LIBEDITTEXT_UNDOCMD_INSERTCHAR == p_udinfo->b_cmd ) {
+
+ }
+ else if( LIBEDITTEXT_UNDOCMD_DELETECHAR == p_udinfo->b_cmd ) {
+
+ }
+ else {
+
+ }
+
+ return i_result;
+}
+
+/*----------------------------------------------------------------------
+typedef struct {
+ unsigned bf_redone: 1;
+ unsigned bf_chain: 1;
+ unsigned bf_linksz: 2;
+ unsigned bf_pos: 2;
+ unsigned bf_line: 2;
+} LibEditText_UndoFlag;
+
+
+typedef struct {
+ Byte b_cmd;
+ LibEditText_UndoFlag t_udflag;
+ DWord dw_prevlength;
+ DWord dw_line;
+ DWord dw_pos;
+ DWord dw_data;
+ Byte b_data;
+ Byte *pb_str;
+
+ DWord dw_plusline;
+ DWord dw_pluspos;
+----------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBEDITTEXT_UNDOEDIT_EXTERN
+int
+ LibEditText_UndoEdit_ExecUnDoInfo(
+ LibEditText_TextInfo *p_tinfo,
+ LibEditText_UndoInfo *p_udinfo,
+ DWord dw_line,
+ DWord dw_pos )
+{
+ int i_result = 0x00;
+ LibEditText_LineInfo *p_line;
+
+
+ if( LIBEDITTEXT_UNDOCMD_INSERTLINE == p_udinfo->b_cmd ) {
+
+ }
+ else if( LIBEDITTEXT_UNDOCMD_DELETELINE == p_udinfo->b_cmd ) {
+
+ }
+ else if( LIBEDITTEXT_UNDOCMD_INSERTSTRING == p_udinfo->b_cmd ) {
+
+ }
+ else if( LIBEDITTEXT_UNDOCMD_DELETESTRING == p_udinfo->b_cmd ) {
+
+ }
+ else if( LIBEDITTEXT_UNDOCMD_INSERTCHAR == p_udinfo->b_cmd ) {
+
+ }
+ else if( LIBEDITTEXT_UNDOCMD_DELETECHAR == p_udinfo->b_cmd ) {
+
+ }
+ else {
+ // INVALID UndoCommand ---
+ i_result = -0x01;
+ }
+
+ return i_result;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBEDITTEXT_UNDOEDIT_EXTERN
+int
+ LibEditText_UndoEdit_ExecUnDo(
+ LibEditText_TextInfo *p_tinfo )
+{
+ int i_result;
+ Byte *pb_undo;
+ Byte *pb_last;
+ DWord dw_line;
+ DWord dw_pos;
+ LibEditText_UndoInfo t_udinfo;
+
+ assert( NULL != p_tinfo );
+
+ if( 0 == p_tinfo->dw_undo_last ) {
+ return 0x01;
+ }
+
+ pb_undo = p_tinfo->pb_undo + p_tinfo->dw_undo_end;
+ pb_last = p_tinfo->pb_undo + p_tinfo->dw_undo_last;
+ dw_line = p_tinfo->dw_undo_line;
+ dw_pos = p_tinfo->dw_undo_pos;
+
+ do{
+
+ i_result = LibEditText_UndoInfo_ReadUndoInfo( p_tinfo, &t_udinfo, pb_undo );
+
+ dw_line -= t_udinfo.dw_plusline;
+ dw_pos -= t_udinfo.dw_pluspos;
+
+ // Exec Undo ---
+ i_result = LibEditText_UndoEdit_ExecUnDoInfo( p_tinfo, &t_udinfo, dw_line, dw_pos );
+
+ if( 0x00 != t_udinfo.t_udflag.bf_line )
+ { dw_line = t_udinfo.dw_line; }
+ if( 0x00 != t_udinfo.t_udflag.bf_pos )
+ { dw_pos = t_udinfo.dw_pos; }
+
+ LibEditText_UndoInfo_SetRedoFlag( pb_undo );
+
+ pb_last = pb_undo;
+ pb_undo -= t_udinfo.dw_prevlength;
+
+ }while(( 0x00 == t_udinfo.t_udflag.bf_chain) && ( 0x00 != t_udinfo.t_udflag.bf_linksz )
+ && ( pb_last > p_tinfo->pb_undo ));
+
+ return i_result;
+}
+
+
+/* EOF of drd64_.c ----------------------------------- */
--- /dev/null
+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
+
+ D r . D e a m o n 6 4
+ for INTEL64(R), AMD64(R)
+
+ Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
+
+/* File Info -----------------------------------------------------------
+File: drd64_.h
+Function: Header
+Comment:
+----------------------------------------------------------------------*/
+
+#ifndef DRD64_HEADER_LIBEDITTEXT_UNDOEDIT
+#define DRD64_HEADER_LIBEDITTEXT_UNDOEDIT
+
+#ifdef DRD64_SRC_LIBEDITTEXT_UNDOEDIT
+ #define LIBEDITTEXT_UNDOEDIT_EXTERN
+#else
+ #define LIBEDITTEXT_UNDOEDIT_EXTERN extern
+#endif
+
+#if defined DRD64_SRC_LIBEDITTEXT_UNDOEDIT
+ #define LIBEDITTEXT_UNDOEDIT_INTERNALFUNC
+#elif defined DRD64_SRC_TEST_LIBEDITTEXT_UNDOEDIT
+ #define LIBEDITTEXT_UNDOEDIT_INTERNALFUNC
+#endif
+
+
+
+#ifdef LIBEDITTEXT_UNDOEDIT_INTERNALFUNC
+#endif
+
+#endif /* DRD64_HEADER_XXX */
+
+/* EOF of drd64_.h ----------------------------------- */