⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tclio.h

📁 tcl是工具命令语言
💻 H
📖 第 1 页 / 共 2 页
字号:
				 * value is the POSIX error code. */    int refCount;		/* How many interpreters hold references to				 * this IO channel? */    CloseCallback *closeCbPtr;	/* Callbacks registered to be called when the				 * channel is closed. */    char *outputStage;		/* Temporary staging buffer used when				 * translating EOL before converting from				 * UTF-8 to external form. */    ChannelBuffer *curOutPtr;	/* Current output buffer being filled. */    ChannelBuffer *outQueueHead;/* Points at first buffer in output queue. */    ChannelBuffer *outQueueTail;/* Points at last buffer in output queue. */    ChannelBuffer *saveInBufPtr;/* Buffer saved for input queue - eliminates				 * need to allocate a new buffer for "gets"				 * that crosses buffer boundaries. */    ChannelBuffer *inQueueHead;	/* Points at first buffer in input queue. */    ChannelBuffer *inQueueTail;	/* Points at last buffer in input queue. */    struct ChannelHandler *chPtr;/* List of channel handlers registered				  * for this channel. */    int interestMask;		/* Mask of all events this channel has				 * handlers for. */    EventScriptRecord *scriptRecordPtr;				/* Chain of all scripts registered for				 * event handlers ("fileevent") on this				 * channel. */    int bufSize;		/* What size buffers to allocate? */    Tcl_TimerToken timer;	/* Handle to wakeup timer for this channel. */    CopyState *csPtr;		/* State of background copy, or NULL. */    Channel *topChanPtr;	/* Refers to topmost channel in a stack.				 * Never NULL. */    Channel *bottomChanPtr;	/* Refers to bottommost channel in a stack.				 * This channel can be relied on to live as				 * long as the channel state. Never NULL. */    struct ChannelState *nextCSPtr;				/* Next in list of channels currently open. */    Tcl_ThreadId managingThread; /* TIP #10: Id of the thread managing				  * this stack of channels. */} ChannelState;    /* * Values for the flags field in Channel. Any ORed combination of the * following flags can be stored in the field. These flags record various * options and state bits about the channel. In addition to the flags below, * the channel can also have TCL_READABLE (1<<1) and TCL_WRITABLE (1<<2) set. */#define CHANNEL_NONBLOCKING	(1<<3)	/* Channel is currently in					 * nonblocking mode. */#define CHANNEL_LINEBUFFERED	(1<<4)	/* Output to the channel must be					 * flushed after every newline. */#define CHANNEL_UNBUFFERED	(1<<5)	/* Output to the channel must always					 * be flushed immediately. */#define BUFFER_READY		(1<<6)	/* Current output buffer (the					 * curOutPtr field in the                                         * channel structure) should be                                         * output as soon as possible even                                         * though it may not be full. */#define BG_FLUSH_SCHEDULED	(1<<7)	/* A background flush of the					 * queued output buffers has been                                         * scheduled. */#define CHANNEL_CLOSED		(1<<8)	/* Channel has been closed. No					 * further Tcl-level IO on the                                         * channel is allowed. */#define CHANNEL_EOF		(1<<9)	/* EOF occurred on this channel.					 * This bit is cleared before every                                         * input operation. */#define CHANNEL_STICKY_EOF	(1<<10)	/* EOF occurred on this channel because					 * we saw the input eofChar. This bit                                         * prevents clearing of the EOF bit                                         * before every input operation. */#define CHANNEL_BLOCKED		(1<<11)	/* EWOULDBLOCK or EAGAIN occurred					 * on this channel. This bit is					 * cleared before every input or					 * output operation. */#define INPUT_SAW_CR		(1<<12)	/* Channel is in CRLF eol input					 * translation mode and the last                                         * byte seen was a "\r". */#define INPUT_NEED_NL		(1<<15)	/* Saw a '\r' at end of last buffer,					 * and there should be a '\n' at					 * beginning of next buffer. */#define CHANNEL_DEAD		(1<<13)	/* The channel has been closed by					 * the exit handler (on exit) but                                         * not deallocated. When any IO                                         * operation sees this flag on a                                         * channel, it does not call driver                                         * level functions to avoid referring                                         * to deallocated data. */#define CHANNEL_NEED_MORE_DATA	(1<<14)	/* The last input operation failed					 * because there was not enough data					 * to complete the operation.  This					 * flag is set when gets fails to					 * get a complete line or when read					 * fails to get a complete character.					 * When set, file events will not be					 * delivered for buffered data until					 * the state of the channel changes. */#define CHANNEL_RAW_MODE	(1<<16)	/* When set, notes that the Raw API is					 * being used. */#define CHANNEL_TIMER_FEV       (1<<17) /* When set the event we are					 * notified by is a fileevent					 * generated by a timer. We					 * don't know if the driver					 * has more data and should					 * not try to read from it. If					 * the system needs more than					 * is in the buffers out read					 * routines will simulate a					 * short read (0 characters					 * read) *//* * For each channel handler registered in a call to Tcl_CreateChannelHandler, * there is one record of the following type. All of records for a specific * channel are chained together in a singly linked list which is stored in * the channel structure. */typedef struct ChannelHandler {    Channel *chanPtr;		/* The channel structure for this channel. */    int mask;			/* Mask of desired events. */    Tcl_ChannelProc *proc;	/* Procedure to call in the type of                                 * Tcl_CreateChannelHandler. */    ClientData clientData;	/* Argument to pass to procedure. */    struct ChannelHandler *nextPtr;    				/* Next one in list of registered handlers. */} ChannelHandler;/* * This structure keeps track of the current ChannelHandler being invoked in * the current invocation of ChannelHandlerEventProc. There is a potential * problem if a ChannelHandler is deleted while it is the current one, since * ChannelHandlerEventProc needs to look at the nextPtr field. To handle this * problem, structures of the type below indicate the next handler to be * processed for any (recursively nested) dispatches in progress. The * nextHandlerPtr field is updated if the handler being pointed to is deleted. * The nextPtr field is used to chain together all recursive invocations, so * that Tcl_DeleteChannelHandler can find all the recursively nested * invocations of ChannelHandlerEventProc and compare the handler being * deleted against the NEXT handler to be invoked in that invocation; when it * finds such a situation, Tcl_DeleteChannelHandler updates the nextHandlerPtr * field of the structure to the next handler. */typedef struct NextChannelHandler {    ChannelHandler *nextHandlerPtr;	/* The next handler to be invoked in                                         * this invocation. */    struct NextChannelHandler *nestedHandlerPtr;    /* Next nested invocation of     * ChannelHandlerEventProc. */} NextChannelHandler;/* * The following structure describes the event that is added to the Tcl * event queue by the channel handler check procedure. */typedef struct ChannelHandlerEvent {    Tcl_Event header;		/* Standard header for all events. */    Channel *chanPtr;		/* The channel that is ready. */    int readyMask;		/* Events that have occurred. */} ChannelHandlerEvent;/* * The following structure is used by Tcl_GetsObj() to encapsulates the * state for a "gets" operation. */ typedef struct GetsState {    Tcl_Obj *objPtr;		/* The object to which UTF-8 characters				 * will be appended. */    char **dstPtr;		/* Pointer into objPtr's string rep where				 * next character should be stored. */    Tcl_Encoding encoding;	/* The encoding to use to convert raw bytes				 * to UTF-8.  */    ChannelBuffer *bufPtr;	/* The current buffer of raw bytes being				 * emptied. */    Tcl_EncodingState state;	/* The encoding state just before the last				 * external to UTF-8 conversion in				 * FilterInputBytes(). */    int rawRead;		/* The number of bytes removed from bufPtr				 * in the last call to FilterInputBytes(). */    int bytesWrote;		/* The number of bytes of UTF-8 data				 * appended to objPtr during the last call to				 * FilterInputBytes(). */    int charsWrote;		/* The corresponding number of UTF-8				 * characters appended to objPtr during the				 * last call to FilterInputBytes(). */    int totalChars;		/* The total number of UTF-8 characters				 * appended to objPtr so far, just before the				 * last call to FilterInputBytes(). */} GetsState;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -