00001 /*******************************************************/ 00002 /* "C" Language Integrated Production System */ 00003 /* */ 00004 /* CLIPS Version 6.20 01/31/02 */ 00005 /* */ 00006 /* USER DATA HEADER FILE */ 00007 /*******************************************************/ 00008 00009 /*************************************************************/ 00010 /* Purpose: Routines for attaching user data to constructs, */ 00011 /* facts, instances, user functions, etc. */ 00012 /* */ 00013 /* Principal Programmer(s): */ 00014 /* Gary D. Riley */ 00015 /* */ 00016 /* Revision History: */ 00017 /* */ 00018 /*************************************************************/ 00019 00020 #ifndef _H_userdata 00021 #define _H_userdata 00022 00023 #ifdef LOCALE 00024 #undef LOCALE 00025 #endif 00026 00027 #ifdef _USERDATA_SOURCE_ 00028 #define LOCALE 00029 #else 00030 #define LOCALE extern 00031 #endif 00032 00033 struct userData 00034 { 00035 unsigned char dataID; 00036 struct userData *next; 00037 }; 00038 00039 typedef struct userData USER_DATA; 00040 typedef struct userData * USER_DATA_PTR; 00041 00042 struct userDataRecord 00043 { 00044 unsigned char dataID; 00045 void *(*createUserData)(void *); 00046 void (*deleteUserData)(void *,void *); 00047 }; 00048 00049 typedef struct userDataRecord USER_DATA_RECORD; 00050 typedef struct userDataRecord * USER_DATA_RECORD_PTR; 00051 00052 #define MAXIMUM_USER_DATA_RECORDS 100 00053 00054 #define USER_DATA_DATA 56 00055 00056 struct userDataData 00057 { 00058 struct userDataRecord *UserDataRecordArray[MAXIMUM_USER_DATA_RECORDS]; 00059 unsigned char UserDataRecordCount; 00060 }; 00061 00062 #define UserDataData(theEnv) ((struct userDataData *) GetEnvironmentData(theEnv,USER_DATA_DATA)) 00063 00064 LOCALE void InitializeUserDataData(void *); 00065 LOCALE unsigned char InstallUserDataRecord(void *,struct userDataRecord *); 00066 LOCALE struct userData *FetchUserData(void *,unsigned char,struct userData **); 00067 LOCALE struct userData *TestUserData(unsigned char,struct userData *); 00068 LOCALE void ClearUserDataList(void *,struct userData *); 00069 LOCALE struct userData *DeleteUserData(void *,unsigned char,struct userData *); 00070 00071 #endif 00072
1.5.6