/usr/include/tcl8.6/tk-private/generic/tkUndo.h is in tk8.6-dev 8.6.1-3ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | /*
* tkUndo.h --
*
* Declarations shared among the files that implement an undo stack.
*
* Copyright (c) 2002 Ludwig Callewaert.
*
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#ifndef _TKUNDO
#define _TKUNDO
#ifndef _TKINT
#include "tkInt.h"
#endif
/*
* Enum defining the types used in an undo stack.
*/
typedef enum {
TK_UNDO_SEPARATOR, /* Marker */
TK_UNDO_ACTION /* Command */
} TkUndoAtomType;
/*
* Callback proc type to carry out an undo or redo action via C code. (Actions
* can also be defined by Tcl scripts).
*/
typedef int (TkUndoProc)(Tcl_Interp *interp, ClientData clientData,
Tcl_Obj *objPtr);
/*
* Struct defining a single action, one or more of which may be defined (and
* stored in a linked list) separately for each undo and redo action of an
* undo atom.
*/
typedef struct TkUndoSubAtom {
Tcl_Command command; /* Tcl token used to get the current Tcl
* command name which will be used to execute
* apply/revert scripts. If NULL then it is
* assumed the apply/revert scripts already
* contain everything. */
TkUndoProc *funcPtr; /* Function pointer for callback to perform
* undo/redo actions. */
ClientData clientData; /* Data for 'funcPtr'. */
Tcl_Obj *action; /* Command to apply the action that was
* taken. */
struct TkUndoSubAtom *next; /* Pointer to the next element in the linked
* list. */
} TkUndoSubAtom;
/*
* Struct representing a single undo+redo atom to be placed in the stack.
*/
typedef struct TkUndoAtom {
TkUndoAtomType type; /* The type that will trigger the required
* action. */
TkUndoSubAtom *apply; /* Linked list of 'apply' actions to perform
* for this operation. */
TkUndoSubAtom *revert; /* Linked list of 'revert' actions to perform
* for this operation. */
struct TkUndoAtom *next; /* Pointer to the next element in the
* stack. */
} TkUndoAtom;
/*
* Struct defining a single undo+redo stack.
*/
typedef struct TkUndoRedoStack {
TkUndoAtom *undoStack; /* The undo stack. */
TkUndoAtom *redoStack; /* The redo stack. */
Tcl_Interp *interp; /* The interpreter in which to execute the
* revert and apply scripts. */
int maxdepth;
int depth;
} TkUndoRedoStack;
/*
* Basic functions.
*/
MODULE_SCOPE void TkUndoPushStack(TkUndoAtom **stack, TkUndoAtom *elem);
MODULE_SCOPE TkUndoAtom *TkUndoPopStack(TkUndoAtom **stack);
MODULE_SCOPE int TkUndoInsertSeparator(TkUndoAtom **stack);
MODULE_SCOPE void TkUndoClearStack(TkUndoAtom **stack);
/*
* Functions for working on an undo/redo stack.
*/
MODULE_SCOPE TkUndoRedoStack *TkUndoInitStack(Tcl_Interp *interp, int maxdepth);
MODULE_SCOPE void TkUndoSetDepth(TkUndoRedoStack *stack, int maxdepth);
MODULE_SCOPE void TkUndoClearStacks(TkUndoRedoStack *stack);
MODULE_SCOPE void TkUndoFreeStack(TkUndoRedoStack *stack);
MODULE_SCOPE void TkUndoInsertUndoSeparator(TkUndoRedoStack *stack);
MODULE_SCOPE TkUndoSubAtom *TkUndoMakeCmdSubAtom(Tcl_Command command,
Tcl_Obj *actionScript, TkUndoSubAtom *subAtomList);
MODULE_SCOPE TkUndoSubAtom *TkUndoMakeSubAtom(TkUndoProc *funcPtr,
ClientData clientData, Tcl_Obj *actionScript,
TkUndoSubAtom *subAtomList);
MODULE_SCOPE void TkUndoPushAction(TkUndoRedoStack *stack,
TkUndoSubAtom *apply, TkUndoSubAtom *revert);
MODULE_SCOPE int TkUndoRevert(TkUndoRedoStack *stack);
MODULE_SCOPE int TkUndoApply(TkUndoRedoStack *stack);
#endif /* _TKUNDO */
|