This is energize.h in view mode; [Download] [Up]
/****************************************************************************
***
*** Copyright (c) 1990 by Sun/Lucid, All Rights Reserved.
*** Copyright (c) 1991-1993 by Lucid, Inc. All Rights Reserved.
***
*****************************************************************************/
/* Synched up with: Not in FSF. */
#ifndef _XEMACS_ENERGIZE_H_
#define _XEMACS_ENERGIZE_H_
#ifndef ENERGIZE
ERROR! energize.h is an Energize-only file
#endif
#include <connection.h>
#include <editorreq.h>
#include <editorconn.h>
#include <editoption.h>
#include <request.h>
#include "hash.h"
#include "extents.h"
/* Product name... */
#ifndef NCR486
# define IDENTITY_CRISIS "Energize"
#else
# define IDENTITY_CRISIS "C++ Workbench"
#endif
/* This represents the emacs connection to the Energize server.
*/
typedef struct {
Connection* conn; /* connection to Energize */
Lisp_Object proc; /* Emacs process */
c_hashtable binfo_hash; /* hashtable for buffers */
Lisp_Object gc_save; /* Objects saved for GC */
int major; /* protocol version number */
int minor;
c_hashtable image_table; /* glyphs table */
} Editor;
typedef BITS32 EId; /* Energize id */
/* In general, we keep positions in Energize form in our data structures,
and only convert to Emacs positions as needed for Emacs operations. */
typedef BITS32 EnergizePos; /* Energize position = (Emacs position-1) */
/* Generic extent data and classes
This "seal" junk is a completely bogus data type system that should be
replaced with something implemented using Lisp_Records.
*/
#define GDATA_CLASS_SEAL 0x12345678
#define GDATA_SEAL 0x67654321
#define EXTENT_SEAL 0x45612378
#define DUP_SEAL 0x13524768
#define BUF_INFO_SEAL 0x5F7F6F5F
#define OBJECT_SEAL_MASK 0x7FFFFFFF
#define OBJECT_FREE_BIT 0x80000000
#define OBJECT_SEAL(x) (((Energize_Extent_Data *)(x))->seal & OBJECT_SEAL_MASK)
#define OBJECT_FREE(x) (((Energize_Extent_Data *)(x))->seal & OBJECT_FREE_BIT)
#define SET_OBJECT_FREE(x) \
{ \
/* if (OBJECT_FREE (x)) \
error ("Free'ing already freed object 0x%x", x); \
((Energize_Extent_Data *)(x))->seal |= OBJECT_FREE_BIT; \ */ \
xfree(x); \
}
#define CHECK_OBJECT(x, y) \
{ /* if (OBJECT_FREE (x)) error ("Using freed object 0x%x", x); */ }
#define PUT_ABLE_OBJECT(x) \
((OBJECT_SEAL(x) == BUF_INFO_SEAL) || (OBJECT_SEAL(x) == EXTENT_SEAL) || \
(OBJECT_SEAL(x) == GDATA_CLASS_SEAL) || (OBJECT_SEAL(x) == GDATA_SEAL))
enum Energize_Object_Free_Type
{ OFT_MAPHASH, OFT_STANDALONE, OFT_GC };
typedef struct
{
int seal; /* must be GDATA_CLASS_SEAL */
EId id;
short flags;
GLYPH glyph;
} GDataClass;
typedef struct
{
int seal; /* must be GDATA_SEAL */
EId id;
GDataClass *cl;
GLYPH glyph;
short flags;
short attribute; /* graphic attribute for extent chars */
short modified_state;
} GenericData;
#ifdef I18N4
typedef struct
{
Bufpos pos, endpos; /* emacs buffer start & end positions */
int eucsize; /* number of EUC bytes to encode */
} WCharMapRec;
typedef struct
{
int valid; /* flag */
int modiff_stamp; /* val of BUF_MODIFF(buffer) at last update */
int mapsize; /* number of elements in wc_map */
WCharMapRec *map; /* where's the beef? */
} WCharSizeTable;
#endif
/* Internal, Energize-specific information about each Energize-created extent.
*/
typedef struct Energize_Extent_Data
{
int seal; /* must be EXTENT_SEAL */
EId id;
int extentType; /* oneof CEAttribute, CEAbbreviation, etc. */
Lisp_Object extent; /* corresponding extent (never nil) */
struct x_pixmap *start_pixmap;
struct x_pixmap *end_pixmap;
int warn_modify;
union
{
struct
{ /* CEAttribute */
int attrValue;
} attr;
struct
{ /* CEAbbreviation */
Boolean isOpened;
} abbrev;
struct
{ /* CEGeneric */
GenericData* gData;
} generic;
} u;
} Energize_Extent_Data;
/* Internal, Energize-specific information about each Energize-created buffer.
*/
typedef struct
{
int seal; /* must be BUF_INFO_SEAL */
EId id; /* Energize id for buffer */
int flags; /* e.g. CBReadOnly or CBStandard */
Editor *editor; /* corresponding editor structure */
c_hashtable id_to_object; /* energize ids to extents, gdata & classes */
Lisp_Object emacs_buffer; /* corresponding emacs buffer */
char modified_state; /* modified state as notified to Energize */
char editable; /* Energize authorized user to edit buffer */
Lisp_Object output_mark; /* analog to process_mark (see process.c) */
char *buffer_type; /* string denoting buffer type; see below */
int* p_sheet_ids; /* psheets associated with the buffer */
int n_p_sheets; /* number of p_sheets */
int* note_ids; /* id of opened postit notes */
int n_notes; /* number of notes */
Lisp_Object frame; /* frame that was created for the buffer */
#ifdef I18N4
WCharSizeTable wcmap; /* for char_offset <-> buffer_pos xlation */
#endif
} BufferInfo;
/* "Types" of buffers, according to the Energize server.
Source files: SOURCE source_class, source_as_component_class
Projects: PROJECT project_class
Log Files: LOG_FILE log_file_class
Debugger log: DEBUGGER debugger_tool_class
Breakpoints: BREAKPOINT breaklist_class
Unix Man: UNIX_MANUAL unix_man_file_class (no longer used?)
File: FILE lazy_file_class
Energize: ENERGIZE_BUFFER energize_class
Unspecified: UNINITIALIZED_BUFFER_TYPE
Unknown: UNKNOWN_BUFFER_TYPE
There should be a BROWSER type as well, but there isn't, so we have
a kludge to fake it up in lisp.
*/
struct buffer_type_struct
{
char *kernel_name;
char *elisp_name;
};
static struct buffer_type_struct
kernel_buffer_types_to_elisp_buffer_types_vector[] =
{
{ "FILE", "energize-source-buffer" }, /* #### Is this necessary? */
{ "SOURCE", "energize-source-buffer" },
{ "PROJECT", "energize-project-buffer" },
{ "LOG_FILE", "energize-log-file-buffer" },
{ "DEBUGGER", "energize-debugger-buffer" },
{ "BREAKPOINT", "energize-breakpoint-buffer" },
{ "UNIX_MANUAL", "energize-unix-manual-buffer" },
{ "ENERGIZE_BUFFER", "energize-top-level-buffer" },
/* { "CADILLAC_BUFFER", "energize-top-level-buffer" }, /* #### rename me */
/* { "POSTIT", "energize-postit-buffer-type" }, */
/* #### There needs to be a "browser" buffer type in here too */
{ 0 , 0 }
};
#define UNINITIALIZED_BUFFER_TYPE "energize-unspecified-buffer"
#define UNKNOWN_BUFFER_TYPE "energize-unknown-buffer"
Energize_Extent_Data *energize_extent_data (EXTENT);
#endif /* _XEMACS_ENERGIZE_H_ */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.