fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. typedef struct mySingletonFunction
  6. {
  7. int first_time;
  8. } mySingletonFunction;
  9.  
  10. void abc(mySingletonFunction *obj)
  11. {
  12. if(!obj->first_time)
  13. {
  14. printf("Skipping..");
  15. return;
  16. }
  17. else
  18. obj->first_time = 0;
  19.  
  20. printf("This is abc");
  21. }
  22.  
  23. mySingletonFunction *initializeObject()
  24. {
  25. mySingletonFunction *obj = (struct mySingletonFunction*)malloc(sizeof(struct mySingletonFunction));
  26.  
  27. obj->first_time = 1;
  28.  
  29. return obj;
  30. }
  31.  
  32. void callAbc(mySingletonFunction *obj)
  33. {
  34. obj->first_time = 1;
  35. }
  36.  
  37. void resetObject(mySingletonFunction *obj)
  38. {
  39. obj->first_time = 1;
  40. }
  41.  
  42. void deleteObject(mySingletonFunction *obj)
  43. {
  44. free(obj);
  45. }
  46.  
  47.  
  48. int main()
  49. {
  50. mySingletonFunction *myObject = initializeObject();
  51.  
  52. abc(myObject);
  53. abc(myObject);
  54. abc(myObject);
  55. abc(myObject);
  56. abc(myObject);
  57.  
  58. resetObject(myObject);
  59.  
  60. abc(myObject);
  61. abc(myObject);
  62. abc(myObject);
  63. abc(myObject);
  64. abc(myObject);
  65.  
  66. deleteObject(myObject);
  67.  
  68. return 0;
  69. }
  70.  
  71.  
Success #stdin #stdout 0s 2424KB
stdin
Standard input is empty
stdout
This is abcSkipping..Skipping..Skipping..Skipping..This is abcSkipping..Skipping..Skipping..Skipping..