Guest User

Using generic function pointers

a guest
Apr 7th, 2012
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. int edit_translate_concise(struct ged *gedp, const union edit_cmd * const cmd);
  2. int edit_translate_add_arg(union edit_cmd * const cmd, struct edit_arg * const arg);
  3.  
  4. struct edit_cmd_tab {
  5. char *name;
  6. char *opt_global;
  7. char *usage;
  8. char *help;
  9. int (*exec_concise)(struct ged *gedp, const union edit_cmd *const cmd);
  10. int (*add_arg)(union edit_cmd *const cmd, struct edit_arg *const arg);
  11. };
  12.  
  13. static const struct edit_cmd_tab edit_cmds[] = {
  14. ...
  15. {"translate", (char *)NULL,
  16. "[FROM] TO OBJECT ...",
  17. "[[-n] -k {FROM_OBJECT | FROM_POS}]n"
  18. "[-n] [-a | -r] {TO_OBJECT | TO_POS} OBJECT ...",
  19. &edit_translate_concise,
  20. &edit_translate_add_arg
  21. },
  22. ...
  23. };
  24.  
  25. /home/bhinesley/brlcad-trunk/src/libged/edit.c:866:55: warning: ‘union edit_cmd’ declared inside parameter list [enabled by default]
  26. /home/bhinesley/brlcad-trunk/src/libged/edit.c:866:55: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
  27. /home/bhinesley/brlcad-trunk/src/libged/edit.c:867:54: warning: ‘union edit_cmd’ declared inside parameter list [enabled by default]
  28.  
  29. /home/bhinesley/brlcad-trunk/src/libged/edit.c:1188:2: warning: initialization from incompatible pointer type [enabled by default]
  30. /home/bhinesley/brlcad-trunk/src/libged/edit.c:1188:2: warning: (near initialization for ‘edit_cmds[1].exec_concise’) [enabled by default]
  31. /home/bhinesley/brlcad-trunk/src/libged/edit.c:1190:5: warning: initialization from incompatible pointer type [enabled by default]
  32. /home/bhinesley/brlcad-trunk/src/libged/edit.c:1190:5: warning: (near initialization for ‘edit_cmds[1].add_arg’) [enabled by default]
  33.  
  34. void foo(union bar *p);
  35.  
  36. union bar {
  37. int a;
  38. };
  39.  
  40. union bar u;
  41. foo(&u);
  42.  
  43. union bar {
  44. int a;
  45. };
  46.  
  47. void foo(union bar *p);
  48.  
  49. union bar;
  50. void foo(union bar *p);
  51.  
  52. union bar {
  53. int a;
  54. };
  55.  
  56. (*edit_cmds[i].add_arg)( /* arguments go here */ );
  57.  
  58. edit_cmds[i].add_arg( /* arguments go here */ );
  59.  
  60. struct ged;
  61. union edit_cmd;
  62. struct edit_arg;
  63. int edit_translate_concise(struct ged *gedp, const union edit_cmd * const cmd);
  64. int edit_translate_add_arg(union edit_cmd * const cmd, struct edit_arg * const arg);
Advertisement
Add Comment
Please, Sign In to add comment