Advertisement
Guest User

Untitled

a guest
Nov 29th, 2017
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. /*
  2. OBJ example
  3. */
  4. // "interface"
  5. struct interface
  6. {
  7. struct interface_tab * iface;
  8. };
  9.  
  10. union interface_obj {
  11. struct interface iface;
  12. // all calssese with this interface
  13. struct class1 class1;
  14. };
  15.  
  16. struct interface_tab
  17. {
  18. int (*metod1)(union interface_obj * ,int,int);
  19. int (*metod2)(union interface_obj * ,int);
  20. };
  21.  
  22. // class implemeted "interface"
  23. struct class1
  24. {
  25. struct interface_tab * iface;
  26. int field1;
  27. int field2;
  28. };
  29.  
  30. int class1_metod1(union interface_obj * self ,int a,int b)
  31. {
  32. self->class1.field1=a;
  33. self->class1.field2=b;
  34. return(1);
  35. }
  36. int class1_metod2(union interface_obj * self ,int a)
  37. {
  38. return(self->class1.field1*a + self->class1.field2);
  39. }
  40.  
  41. static struct interface_tab class1_iface =
  42. {
  43. class1_metod1,
  44. class1_metod2,
  45. };
  46.  
  47. // instance "class1" named "obj"
  48. struct class1 class1_obj={&class1_iface,0,0};
  49.  
  50. // go on:
  51. int main ()
  52. {
  53. union interface_obj * obj = (union interface_obj *)&class1_obj;
  54.  
  55. obj->iface.iface=&class1_iface;
  56.  
  57. obj->iface.iface->metod1(obj,3,6);
  58.  
  59. printf("result:%i\n",
  60. obj->iface.iface->metod2(obj,10)
  61. );
  62.  
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement