00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef FRAMEMGR_H
00022 #define FRAMEMGR_H
00023
00024 #include <X11/Xmd.h>
00025 #include <X11/Xlib.h>
00026 #include <stdio.h>
00027
00028 #if defined(VAXC) && !defined(__DECC)
00029 #define xim_externalref globalref
00030 #define xim_externaldef globaldef
00031 #else
00032 #define xim_externalref extern
00033 #define xim_externaldef
00034 #endif
00035
00036
00037
00038 #define COUNTER_MASK 0x10
00039
00040 typedef enum {
00041 BIT8 = 0x1,
00042 BIT16 = 0x2,
00043 BIT32 = 0x3,
00044 BIT64 = 0x4,
00045 BARRAY = 0x5,
00046 ITER = 0x6,
00047 POINTER = 0x7,
00048 PTR_ITEM = 0x8,
00049
00050
00051
00052
00053
00054
00055 PADDING = 0x9,
00056
00057
00058 EOL = 0xA,
00059
00060 COUNTER_BIT8 = COUNTER_MASK | 0x1,
00061 COUNTER_BIT16 = COUNTER_MASK | 0x2,
00062 COUNTER_BIT32 = COUNTER_MASK | 0x3,
00063 COUNTER_BIT64 = COUNTER_MASK | 0x4
00064 } XimFrameType;
00065
00066
00067 #define _FRAME(a) {a, NULL}
00068 #define _PTR(p) {PTR_ITEM, (void *)p}
00069
00070
00071
00072
00073 #define _PAD2(n) {PADDING, (void*)((n)<<8|2)}
00074 #define _PAD4(n) {PADDING, (void*)((n)<<8|4)}
00075
00076 #define FmCounterByte 0
00077 #define FmCounterNumber 1
00078
00079 #define _BYTE_COUNTER(type, offset) \
00080 {(COUNTER_MASK|type), (void*)((offset)<<8|FmCounterByte)}
00081
00082 #define _NUMBER_COUNTER(type, offset) \
00083 {(COUNTER_MASK|type), (void*)((offset)<<8|FmCounterNumber)}
00084
00085 typedef struct _XimFrame {
00086 XimFrameType type;
00087 void* data;
00088 } XimFrameRec, *XimFrame;
00089
00090 typedef enum {
00091 FmSuccess,
00092 FmEOD,
00093 FmInvalidCall,
00094 FmBufExist,
00095 FmCannotCalc,
00096 FmNoMoreData
00097 } FmStatus;
00098
00099 typedef struct _FrameMgr *FrameMgr;
00100
00101 FrameMgr FrameMgrInit(XimFrame frame, char* area, Bool byte_swap);
00102 void FrameMgrInitWithData(FrameMgr fm, XimFrame frame, void* area,
00103 Bool byte_swap);
00104 void FrameMgrFree(FrameMgr fm);
00105 FmStatus FrameMgrSetBuffer(FrameMgr, void*);
00106 FmStatus _FrameMgrPutToken(FrameMgr, void*, int);
00107 FmStatus _FrameMgrGetToken(FrameMgr, void*, int);
00108 FmStatus FrameMgrSetSize(FrameMgr, int);
00109 FmStatus FrameMgrSetIterCount(FrameMgr, int);
00110 FmStatus FrameMgrSetTotalSize(FrameMgr, int);
00111 int FrameMgrGetTotalSize(FrameMgr);
00112 int FrameMgrGetSize(FrameMgr);
00113 FmStatus FrameMgrSkipToken(FrameMgr, int);
00114 void FrameMgrReset(FrameMgr);
00115 Bool FrameMgrIsIterLoopEnd(FrameMgr, FmStatus*);
00116
00117 #define FrameMgrPutToken(fm, obj) _FrameMgrPutToken((fm), &(obj), sizeof(obj))
00118 #define FrameMgrGetToken(fm, obj) _FrameMgrGetToken((fm), &(obj), sizeof(obj))
00119
00120 #endif