4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
7 * Jaeho Lee <jaeho81.lee@samsung.com>
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
36 typedef struct keyval_t keyval_t;
39 typedef struct keyval_method_collection_t keyval_method_collection_t;
41 typedef void (*keyval_method_free_t)(keyval_t *kv, int do_free_object);
42 typedef int (*keyval_method_compare_t) (keyval_t *kv1, keyval_t *kv2);
43 typedef size_t (*keyval_method_get_encoded_size_t)(keyval_t *kv);
44 typedef size_t (*keyval_method_encode_t)(keyval_t *, unsigned char **byte, size_t *byte_len);
45 typedef size_t (*keyval_method_decode_t)(unsigned char *byte, keyval_t **kv);
48 struct keyval_method_collection_t
50 keyval_method_free_t free;
51 keyval_method_compare_t compare;
52 keyval_method_get_encoded_size_t get_encoded_size;
53 keyval_method_encode_t encode;
54 keyval_method_decode_t decode;
60 char *key; // To be freed.
61 void *val; // To be freed.
62 size_t size; // Size of a single value.
63 struct keyval_t *next;
65 keyval_method_collection_t *method;
70 keyval_t * keyval_new(keyval_t *kv, const char *key, const int type, const void *val, const size_t size);
71 void keyval_free(keyval_t *kv, int do_free_object);
72 int keyval_compare(keyval_t *kv1, keyval_t *kv2);
73 size_t keyval_get_encoded_size(keyval_t *kv);
74 size_t keyval_encode(keyval_t *kv, unsigned char **byte, size_t *byte_len);
75 size_t keyval_decode(unsigned char *byte, keyval_t **kv);
76 int keyval_get_data(keyval_t *kv, int *type, void **val, size_t *size);
77 int keyval_get_type_from_encoded_byte(unsigned char *byte);
79 #endif /* __KEYVAL_H__ */