gkvlist.h

来自「利用AVAYA AES的TASPI开发的一套软电话系统,仅供参考,ACTIVEX」· C头文件 代码 · 共 185 行

H
185
字号
/*
 * $Id: kvlist.h,v 1.20 1999/08/20 19:14:24 epi Exp $
 */

#ifndef _KVLIST_H
#define _KVLIST_H

typedef enum {
  KVTypeString,
  KVTypeInt,
  KVTypeBinary,
  KVTypeList,
  KVTypeIncorrect = -1 /* used for error indication only */
} TKVType;

struct _kv_pair {
  TKVType type;
  char *key;
  int length;
  union {
    char *_string_value;
    int  _int_value;
    unsigned char *_binary_value;
    struct kv_list *_list_value;
  } _value;
#define string_value	_value._string_value
#define int_value	_value._int_value
#define binary_value	_value._binary_value
#define list_value	_value._list_value
  struct _kv_pair *kv_next;
  struct _kv_pair *kv_prev;
};

typedef struct _kv_pair TKVPair;

struct kv_list {
  struct _kv_pair *list;
  struct _kv_pair *current;
  struct _kv_pair *tail;
};

typedef struct kv_list TKVList;

typedef enum {
  KVResultError = -1,
  KVResultNotFound,
  KVResultSuccessful
} TKVResult;


#ifdef __cplusplus
extern "C" {
#endif

TKVList *TKVListCreate(void);

TKVResult TKVListFree(
	TKVList *list
);

TKVList *TKVListDup(
	TKVList *list
);

TKVResult TKVListAddString(
	TKVList *list,
	char *key,
	char *value
);

TKVResult TKVListAddInt(
	TKVList *list,
	char *key,
	int value
);

TKVResult TKVListAddBinary(
	TKVList *list,
	char *key,
	unsigned char *val,
	int length
);

TKVResult TKVListAddList(
	TKVList *list,
        char *key,
	TKVList *data
);


TKVResult TKVListInsertList(
        TKVList *udata,
	char *key,
	TKVList *data
);
    
TKVResult TKVListDeletePair(
	TKVList *list,
	char *key
);

TKVResult TKVListDeleteAll(
	TKVList *list
);

TKVResult TKVListInitScanLoop(
	TKVList *list
);

TKVPair *TKVListNextPair(
	TKVList *list
);

TKVType TKVListType(
	TKVPair *pair
);

char *TKVListKey(
	TKVPair *pair
);

int TKVListIntValue(
	TKVPair *pair
);

char *TKVListStringValue(
	TKVPair *pair
);

TKVList *TKVListListValue(
	TKVPair *pair
);

unsigned char *TKVListBinaryValue(
	TKVPair *pair
);

int TKVListGetIntValue(
	TKVList *list,
	char *key,
	TKVResult *result
);

char *TKVListGetStringValue(
	TKVList *list,
	char *key,
	TKVResult *result
);

unsigned char *TKVListGetBinaryValue(
	TKVList *list,
	char *key,
	TKVResult *result
);

TKVList *TKVListGetListValue(
	TKVList *list,
	char *key,
	TKVResult *result
);

void TKVListPrint(
	void *f,
	TKVList *list,
	char *header
);

int TKVListBinaryLength(
	TKVPair *pair
);


TKVPair *TKVListGetPair(
	TKVList *kvl,
	char *key,
	TKVResult *result
);


#ifdef __cplusplus
}
#endif

#endif /* _KVLIST_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?