⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 benc_util.h.svn-base

📁 SumatraPDF是一款小型开源的pdf阅读工具。虽然玲珑小巧(只有800多KB)
💻 SVN-BASE
字号:
/* Written by Krzysztof Kowalczyk (http://blog.kowalczyk.info)   The author disclaims copyright to this source code. */#ifndef BENC_UTIL_H_#define BENC_UTIL_H_#ifdef __cplusplusextern "C"{#endiftypedef enum benc_type {    BOT_INT64 = 1,    BOT_STRING,    BOT_ARRAY,    BOT_DICT} benc_type;typedef struct benc_obj {    benc_type m_type;} benc_obj;typedef struct benc_int64 {    benc_type  m_type;    int64_t    m_val;} benc_int64;typedef struct benc_str {    benc_type  m_type;    size_t     m_len;    char *     m_str;} benc_str;/* Note: it's important that the layout of m_next and m_used is the same in   benc_array_data and benc_dict_data, as code relies on that */typedef struct benc_array_data {    struct benc_array_data * m_next;    size_t                   m_used;    size_t                   m_allocated;        benc_obj **              m_data;} benc_array_data;typedef struct benc_dict_data {    struct benc_dict_data * m_next;    size_t                  m_used;    size_t                  m_allocated;    char **                 m_keys;    benc_obj **             m_values;} benc_dict_data;typedef struct benc_array {    benc_type       m_type;    benc_array_data m_data;} benc_array;typedef struct benc_dict {    benc_type       m_type;    benc_dict_data  m_data;} benc_dict;BOOL        int64_to_string(int64_t val, char* data, size_t dataLen);BOOL        int64_to_string_zero_pad(int64_t val, size_t pad, char* data, size_t dataLen);benc_int64* benc_int64_new(int64_t val);benc_str *  benc_str_new(const char* data, size_t len);benc_array* benc_array_new(void);benc_dict * benc_dict_new(void);benc_obj *  benc_obj_from_data(const char *data, size_t len);char *      benc_obj_to_data(benc_obj *bobj, size_t* lenOut);void        benc_obj_delete(benc_obj *);    size_t      benc_obj_len(benc_obj* );benc_int64* benc_obj_as_int64(benc_obj *);benc_str*   benc_obj_as_str(benc_obj *);benc_array* benc_obj_as_array(benc_obj *);benc_dict * benc_obj_as_dict(benc_obj *);size_t      benc_array_len(benc_array *);BOOL        benc_array_append(benc_array* arr, benc_obj* bobj);void        benc_array_delete(benc_array *);benc_obj *  benc_array_get(benc_array *bobj, size_t idx);size_t      benc_dict_len(benc_dict *bobj);BOOL        benc_dict_insert(benc_dict* dict, const char* key, size_t keyLen, benc_obj* val);BOOL        benc_dict_insert2(benc_dict* dict, const char* key, benc_obj* val);BOOL        benc_dict_insert_str(benc_dict* dict, const char* key, const char *str);BOOL        benc_dict_insert_int64(benc_dict* dict, const char* key, int64_t val);benc_obj*   benc_dict_find(benc_dict* dict, const char* key, size_t keyLen);benc_obj*   benc_dict_find2(benc_dict* dict, const char* key);BOOL        dict_get_bool(benc_dict* dict, const char* key, BOOL* valOut);BOOL        dict_get_int(benc_dict* dict, const char* key, int* valOut);const char* dict_get_str(benc_dict* dict, const char* key);BOOL        dict_get_double_from_str(benc_dict* dict, const char* key, double* valOut);#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

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