Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

102 lines
3.5 KiB

// #define IN [in]
// #define OUT [out]
// #define CALLBACK
#define SIZE_IS(size)
#define LENGTH_IS(length)
#define UNIQUE
#define INTERFACE
#define SPLAY_TREE
#define STRING
#define CONTEXT_HANDLE
/*************************************************************************/
/*** Strongly typed tree nodes and dictionaries ***/
/*************************************************************************/
/*
************************************************************************
* Record type - previously imported from util1.idl
* This is the type of items stored in the remote dictionary.
************************************************************************
*/
typedef struct _Record {
short key; // RPC "generation"
STRING char* name; // contributor
} Record;
/*
************************************************************************
* The following definitions (RDict, RecordTreeNode) are required
* for marshalling a complete dictionary, binary tree, respectively.
* All pointers are based on RPC-able types, replacing "void*"
* pointers in the local dictionary (dict0) which are non-transmissible.
************************************************************************
*/
typedef struct _RecordTreeNode {
struct _RecordTreeNode *left; // left child pointer
struct _RecordTreeNode *right; // right child pointer
Record *item; // pointer to a Record structure
} RecordTreeNode;
typedef struct _DictState {
short ref_count; // for shared dictionaries
Record * curr_record; // for global iterators
} DictState;
typedef struct _RDict {
RecordTreeNode *root; // pointer to the root of a SAT
long size; // number of records in dictionary
DictState * state; // pointer to state info
} RDict;
/*
* VDict is a "virtual dictionary" object. It is used in the client
* application as a handle on a dictionary maintained by a server
*/
typedef CONTEXT_HANDLE void * VDict;
/*
typedef enum {
DICT_SUCCESS,
DICT_ITEM_ALREADY_PRESENT,
DICT_ITEM_NOT_FOUND,
DICT_FIRST_ITEM,
DICT_LAST_ITEM,
DICT_EMPTY_DICTIONARY,
DICT_NULL_ITEM
}
VDict_Status;
*
* VDict_Status and the #defines following replaces the above enum
* definition for now.
*/
typedef short VDict_Status;
#define DICT_SUCCESS 0
#define DICT_ITEM_ALREADY_PRESENT 1
#define DICT_ITEM_NOT_FOUND 2
#define DICT_FIRST_ITEM 3
#define DICT_LAST_ITEM 4
#define DICT_EMPTY_DICTIONARY 5
#define DICT_NULL_ITEM 6
/*************************************************************************/
/*** Generic Dictionary Operations: (From dict0.h) ***/
/*** ***/
/*** Dictionary *Dict_New(Cmp_rec*, Splay*, print_rec*) ***/
/*** ***/
/*** Dict_Status Dict_Find(Dictionary*, Item*) ***/
/*** Dict_Status Dict_Next(Dictionary*, Item*) ***/
/*** Dict_Status Dict_Prev(Dictionary*, Item*) ***/
/*** Dict_Status Dict_Insert(Dictionary*, Item*) ***/
/*** Dict_Status Dict_Delete(Dictionary*, Item**) ***/
/*** ***/
/*** Item* DICT_CURR_ITEM(Dict*) ***/
/*************************************************************************/