1. Куча / Говнокод #18383

    +141

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    package eapi
    
    // #include <eggdrop/mod/module.h>
    // #include <eggdrop/main.h>
    // #include <eggdrop/proto.h>
    import (
    	"C"
    	"errors"
    )
    
    const (
    	DP_STDOUT 		= 0x7FF1
    	DP_LOG			= 0x7FF2
    	DP_SERVER  		= 0x7FF3
    	DP_HELP			= 0x7FF4
    	DP_STDERR		= 0x7FF5
    	DP_MODE			= 0x7FF6
    	DP_MODE_NEXT	= 0x7FF7
    	DP_SERVER_NEXT	= 0x7FF8
    	DP_HELP_NEXT	= 0x7FF9
    )
    
    var (
    	binds []struct{
    		flags,match string
    		list *C.tcl_bind_list_t
    	}
    	bind_num int = 0
    )
    
    //...
    
    func Bind(event,flags,match string, proc func(cd *C.ClientData, irp *C.Tcl_Interp, argc C.int, argv *[]C.char)) int,error{
    	tl := C.find_bind_table(C.CString(event))
    	if tl == nil{
    		return -1,errors.New("No such event table : "+ event)
    	}
    	func_name := bname(bind_num)
    	bind_num++
    	var cmd []C.tcl_cmds = {
    		{func_name,proc},
    		{nil,nil}
    	}
    	C.tcl_add_commands(cmd)
    	C.bind_bind_entry(tl, C.CString(flags), C.CString(match), C.CString(func_name))
    	append(binds,{flags,match,tl})
    	return bind_num-1,nil
    }
    
    func Unbind(int num){
    	if binds[num] == nil{
    		return
    	}
    	C.unbind_bind_entry(binds[num].list, C.CString(binds[num].flags), C.CString(binds[num].match), C.CString(bname(num)))
    }

    обертка на Go для Eggdrop API

    Запостил: unn4m3d, 23 Июня 2015

    Комментарии (1) RSS

    • ах да, bname генерирует строку вида "eapi:bind_xxx", где xxx - 1й аргумент
      Ответить

    Добавить комментарий