Advertisement
Guest User

Untitled

a guest
Aug 27th, 2015
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. /* Handle, used for all APIs */
  2. typedef size_t enh;
  3.  
  4.  
  5. /* Create new engine instance; result returned in handle */
  6. int en_open(int mode, enh *handle);
  7.  
  8. /* Start an engine */
  9. int en_start(enh handle);
  10.  
  11. /* Add a new hook to the engine; hook handle returned in h2 */
  12. int en_add_hook(enh handle, int hooknum, enh *h2);
  13.  
  14. struct engine
  15. {
  16. // ... implementation details ...
  17. };
  18.  
  19. int en_open(int mode, *enh handle)
  20. {
  21. struct engine *en;
  22.  
  23. en = malloc(sizeof(*en));
  24. if (!en)
  25. return -1;
  26.  
  27. // ...initialization...
  28.  
  29. *handle = (enh)en;
  30. return 0;
  31. }
  32.  
  33. int en_start(enh handle)
  34. {
  35. struct engine *en = (struct engine*)handle;
  36.  
  37. return en->start(en);
  38. }
  39.  
  40. struct engine; /* Forward declaration */
  41. typedef size_t hook_h; /* Still a handle, for other reasons */
  42.  
  43.  
  44. /* Create new engine instance, result returned in en */
  45. int en_open(int mode, struct engine **en);
  46.  
  47. /* Start an engine */
  48. int en_start(struct engine *en);
  49.  
  50. /* Add a new hook to the engine; hook handle returned in hh */
  51. int en_add_hook(struct engine *en, int hooknum, hook_h *hh);
  52.  
  53. struct engine
  54. {
  55. // ... implementation details ...
  56. };
  57.  
  58. int en_open(int mode, struct engine **en)
  59. {
  60. struct engine *_e;
  61.  
  62. _e = malloc(sizeof(*_e));
  63. if (!_e)
  64. return -1;
  65.  
  66. // ...initialization...
  67.  
  68. *en = _e;
  69. return 0;
  70. }
  71.  
  72. int en_start(struct engine *en)
  73. {
  74. return en->start(en);
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement