Annotation of mstools/samples/rpc/dict/play.h, revision 1.1.1.2

1.1       root        1: /*************************************************************/
                      2: /**                                                         **/
                      3: /**                 Microsoft RPC Examples                  **/
                      4: /**                 Dictionary Application                  **/
1.1.1.2 ! root        5: /**             Copyright(c) Microsoft Corp. 1992           **/
1.1       root        6: /**                                                         **/
                      7: /*************************************************************/
                      8: 
                      9: // #define IN [in]
                     10: // #define OUT [out]
                     11: // #define CALLBACK
                     12: 
                     13: #define IN
                     14: #define OUT
                     15: #define OPTIONAL
                     16: 
                     17: #define SIZE_IS(size)
                     18: #define LENGTH_IS(length)
                     19: #define UNIQUE
                     20: #define INTERFACE
                     21: #define SPLAY_TREE
                     22: #define STRING
                     23: #define CONTEXT_HANDLE
                     24: 
                     25: /*************************************************************************/
                     26: /***            Strongly typed tree nodes and dictionaries             ***/
                     27: /*************************************************************************/
                     28: 
                     29: /*
                     30:  ************************************************************************
                     31:  * Record type - previously imported from util1.idl
                     32:  * This is the type of items stored in the remote dictionary.
                     33:  ************************************************************************
                     34: */
                     35: 
                     36: typedef struct _Record {
                     37:     short key;                      // RPC "generation"
                     38:     STRING char* name;              // contributor
                     39: } Record;
                     40: 
                     41: /*
                     42:  ************************************************************************
                     43:  * The following definitions (RDict, RecordTreeNode) are required
                     44:  * for marshalling a complete dictionary, binary tree, respectively.
                     45:  * All pointers are based on RPC-able types, replacing "void*"
                     46:  * pointers in the local dictionary (dict0) which are non-transmissible.
                     47:  ************************************************************************
                     48: */
                     49: 
                     50: typedef struct _RecordTreeNode {
                     51:     struct _RecordTreeNode *left;   // left child pointer
                     52:     struct _RecordTreeNode *right;  // right child pointer
                     53:     Record *item;                   // pointer to a Record structure
                     54: } RecordTreeNode;
                     55: 
                     56: typedef struct _DictState {
                     57:     short ref_count;                // for shared dictionaries
                     58:     Record * curr_record;           // for global iterators
                     59: } DictState;
                     60: 
                     61: typedef struct _RDict {
                     62:     RecordTreeNode *root;           // pointer to the root of a SAT
                     63:     long size;                      // number of records in dictionary
                     64:     DictState * state;              // pointer to state info
                     65: } RDict;
                     66: 
                     67: /*
                     68:  * VDict is a "virtual dictionary" object.  It is used in the client
                     69:  * application as a handle on a dictionary maintained by a server
                     70: */
                     71: typedef CONTEXT_HANDLE void * VDict;
                     72: 
                     73: /*
                     74: typedef enum {
                     75:     DICT_SUCCESS,
                     76:     DICT_ITEM_ALREADY_PRESENT,
                     77:     DICT_ITEM_NOT_FOUND,
                     78:     DICT_FIRST_ITEM,
                     79:     DICT_LAST_ITEM,
                     80:     DICT_EMPTY_DICTIONARY,
                     81:     DICT_NULL_ITEM
                     82: }
                     83: VDict_Status;
                     84: 
                     85:  *
                     86:  * VDict_Status and the #defines following replaces the above enum
                     87:  * definition for now.
                     88: */
                     89: 
                     90: typedef short VDict_Status;
                     91: 
                     92: 
                     93: #define DICT_SUCCESS 0
                     94: #define DICT_ITEM_ALREADY_PRESENT 1
                     95: #define DICT_ITEM_NOT_FOUND 2
                     96: #define DICT_FIRST_ITEM 3
                     97: #define DICT_LAST_ITEM 4
                     98: #define DICT_EMPTY_DICTIONARY 5
                     99: #define DICT_NULL_ITEM 6
                    100: 
                    101: 
                    102: /*************************************************************************/
                    103: /***    Generic Dictionary Operations: (From dict0.h)                  ***/
                    104: /***                                                                   ***/
                    105: /***    Dictionary *Dict_New(Cmp_rec*, Splay*, print_rec*)             ***/
                    106: /***                                                                   ***/
                    107: /***    Dict_Status Dict_Find(Dictionary*, Item*)                      ***/
                    108: /***    Dict_Status Dict_Next(Dictionary*, Item*)                      ***/
                    109: /***    Dict_Status Dict_Prev(Dictionary*, Item*)                      ***/
                    110: /***    Dict_Status Dict_Insert(Dictionary*, Item*)                    ***/
                    111: /***    Dict_Status Dict_Delete(Dictionary*, Item**)                   ***/
                    112: /***                                                                   ***/
                    113: /***    Item* DICT_CURR_ITEM(Dict*)                                    ***/
                    114: /*************************************************************************/

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.