github.com/cellofellow/gopkg@v0.0.0-20140722061823-eec0544a62ad/database/leveldb.chai2010/capi_helper.c (about)

     1  // Copyright 2013 <chaishushan{AT}gmail.com>. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  #include "capi_helper.h"
     6  
     7  #ifdef __cplusplus
     8  extern "C" {
     9  #	include "_cgo_export.h"
    10  }
    11  #else
    12  #	include "_cgo_export.h"
    13  #endif
    14  
    15  // ----------------------------------------------------------------------------
    16  // WriteBatch
    17  // ----------------------------------------------------------------------------
    18  
    19  static void _leveldb_writebatch_iterate_put(
    20  	void* state,
    21  	const leveldb_slice_t* key,
    22  	const leveldb_slice_t* val
    23  ) {
    24  	go_leveldb_writebatch_iterater_put(state,
    25  		(leveldb_slice_t*)(key),
    26  		(leveldb_slice_t*)(val)
    27  	);
    28  }
    29  
    30  static void _leveldb_writebatch_iterate_delete(
    31  	void* state,
    32  	const leveldb_slice_t* key
    33  ) {
    34  	go_leveldb_writebatch_iterater_delete(state,
    35  		(leveldb_slice_t*)(key)
    36  	);
    37  }
    38  
    39  void leveldb_writebatch_iterate_helper(leveldb_writebatch_t* batch, void* state) {
    40  	leveldb_writebatch_iterate(batch, state,
    41  		_leveldb_writebatch_iterate_put,
    42  		_leveldb_writebatch_iterate_delete
    43  	);
    44  }
    45  
    46  // ----------------------------------------------------------------------------
    47  // Comparator
    48  // ----------------------------------------------------------------------------
    49  
    50  static void _leveldb_comparator_destructor(void* state) {
    51  	// Empty
    52  }
    53  
    54  static int32_t _leveldb_comparator_compare(void* state,
    55  	const leveldb_slice_t* a,
    56  	const leveldb_slice_t* b
    57  ) {
    58  	return go_leveldb_comparator_compare(state,
    59  		(leveldb_slice_t*)(a),
    60  		(leveldb_slice_t*)(b)
    61  	);
    62  }
    63  
    64  static const char* _leveldb_comparator_name(void* state) {
    65  	return go_leveldb_comparator_name(state);
    66  }
    67  
    68  leveldb_comparator_t* leveldb_comparator_create_helper(void* state) {
    69  	return leveldb_comparator_create(
    70  		state,
    71  		_leveldb_comparator_destructor,
    72  		_leveldb_comparator_compare,
    73  		_leveldb_comparator_name
    74  	);
    75  }
    76  
    77  // ----------------------------------------------------------------------------
    78  // FilterPolicy
    79  // ----------------------------------------------------------------------------
    80  
    81  static void _leveldb_filterpolicy_destructor(void* state) {
    82  	// Empty
    83  }
    84  
    85  static leveldb_value_t* _leveldb_filterpolicy_create_filter(void* state,
    86  	const leveldb_slice_t** keys,
    87  	int32_t num_keys
    88  ) {
    89  	return (leveldb_value_t*)go_leveldb_filterpolicy_create_filter(state,
    90  		(leveldb_slice_t**)keys, num_keys
    91  	);
    92  }
    93  
    94  static leveldb_bool_t _leveldb_filterpolicy_key_may_match(void* state,
    95  	const leveldb_slice_t* key,
    96  	const leveldb_slice_t* filter
    97  ) {
    98  	return go_leveldb_filterpolicy_key_may_match(state,
    99  		(leveldb_slice_t*)(key),
   100  		(leveldb_slice_t*)(filter)
   101  	);
   102  }
   103  
   104  static const char* _leveldb_filterpolicy_name(void* state) {
   105  	return go_leveldb_filterpolicy_name(state);
   106  }
   107  
   108  leveldb_filterpolicy_t* leveldb_filterpolicy_create_helper(void* state) {
   109  	return leveldb_filterpolicy_create(
   110  		state,
   111  		_leveldb_filterpolicy_destructor,
   112  		_leveldb_filterpolicy_create_filter,
   113  		_leveldb_filterpolicy_key_may_match,
   114  		_leveldb_filterpolicy_name
   115  	);
   116  }
   117  
   118  // ----------------------------------------------------------------------------
   119  // END
   120  // ----------------------------------------------------------------------------
   121