Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.51 KB | None | 0 0
  1. #include "tinder.h"
  2.  
  3. #define CHECK_TINDER_IF_NULL_RETURN_OUT_MEMORY if(tinder==NULL){ return TINDER_INVALID_PARAMETERS;}
  4. struct Tinder_t {
  5. Map users;
  6. Map hobbies;
  7. };
  8.  
  9. Tinder createTinder() {
  10. Tinder tinder = malloc(sizeof(*tinder));
  11. tinder->users = mapCreate(copyDataUser, copyID, freeDataUser, freeID,
  12. compareVoidID);
  13. if (!tinder->users) {
  14. free(tinder);
  15. return NULL;
  16. }
  17. tinder->hobbies = mapCreate(copyHobbyData, copyHobbyKey, freeHobbyData,
  18. freeHobbyKey, compareMapKeys);
  19. if (!tinder->hobbies) {
  20. mapDestroy(tinder->users);
  21. free(tinder);
  22. return NULL;
  23. }
  24. return tinder;
  25. }
  26.  
  27. void tinderDestroy(Tinder tinder) {
  28. if (tinder != NULL) {
  29. mapDestroy(tinder->users);
  30. mapDestroy(tinder->hobbies);
  31. free(tinder);
  32. }
  33. }
  34.  
  35. TinderResult checkUserResult(UserResult result) {
  36. TinderResult tResult = TINDER_SUCCESS;
  37. ;
  38. switch (result) {
  39. case USER_FAILED:
  40. tResult = TINDER_OUT_OF_MEMORY;
  41. break;
  42. case USER_NULL_ARGUMENT:
  43. tResult = TINDER_INVALID_PARAMETERS;
  44. break;
  45. case USER_NOT_FRIENDS:
  46. tResult = TINDER_USER_NOT_FRIEND;
  47. break;
  48. case USER_DOESNT_EXIST:
  49. tResult = TINDER_USER_DOES_NOT_EXIST;
  50. break;
  51. case USER_ALREADY_EXISTS:
  52. tResult = TINDER_USER_ALREADY_EXISTS;
  53. break;
  54. case USER_NO_USERS:
  55. tResult = TINDER_NO_USERS;
  56. break;
  57. case USER_INVALID_PARAMETERS:
  58. tResult = TINDER_INVALID_PARAMETERS;
  59. break;
  60. case USER_NO_USER_REQUEST:
  61. tResult = TINDER_NO_USER_REQUEST;
  62. break;
  63. case USER_ALREADY_FRIENDS:
  64. tResult = TINDER_USER_ALREADY_FRIEND;
  65. break;
  66. default:
  67. tResult = TINDER_SUCCESS;
  68. break;
  69. }
  70. return tResult;
  71. }
  72.  
  73. TinderResult tinderUserAdd(int id, char* name, int year, Gender gender,
  74. Gender pref, Tinder tinder) {
  75. CHECK_TINDER_IF_NULL_RETURN_OUT_MEMORY
  76. UserResult result = userAdd(id, name, year, gender, pref, tinder->users);
  77. return checkUserResult(result);
  78.  
  79. }
  80.  
  81. TinderResult tinderUserRemove(Tinder tinder, int id) {
  82. CHECK_TINDER_IF_NULL_RETURN_OUT_MEMORY
  83. UserResult result = userRemove(tinder->users, tinder->hobbies, id);
  84. return checkUserResult(result);
  85. }
  86. TinderResult tinderUserReport(Tinder tinder) {
  87. CHECK_TINDER_IF_NULL_RETURN_OUT_MEMORY
  88. UserResult result = userReport(tinder->users);
  89. return checkUserResult(result);
  90. }
  91.  
  92. TinderResult tinderUserFriendRequest(Tinder tinder, int id1, int id2) {
  93. CHECK_TINDER_IF_NULL_RETURN_OUT_MEMORY
  94. UserResult result = userFriendRequest(tinder->users, id1, id2);
  95. return checkUserResult(result);
  96. }
  97.  
  98. TinderResult tinderUserHandleRequest(Tinder tinder, int id1, int id2,
  99. char* choice) {
  100. CHECK_TINDER_IF_NULL_RETURN_OUT_MEMORY
  101. UserResult result = userHandleRequest(tinder->users, id1, id2, choice);
  102. return checkUserResult(result);
  103. }
  104.  
  105. TinderResult tinderUserUnfriend(Tinder tinder, int id1, int id2) {
  106. CHECK_TINDER_IF_NULL_RETURN_OUT_MEMORY
  107. UserResult result = userUnfriend(tinder->users, id1, id2);
  108. return checkUserResult(result);
  109. }
  110.  
  111. TinderResult tinderUserWhoCanIDate(Tinder tinder, int id1, int count) {
  112. CHECK_TINDER_IF_NULL_RETURN_OUT_MEMORY
  113. UserResult result = userWhoCanIDate(tinder->users, id1, count);
  114. return checkUserResult(result);
  115. }
  116.  
  117. char* getTinderUserName(Tinder tinder, int id){
  118. int* key = createMapKey(id);
  119. MapDataElement data = mapGet(tinder->users,key);
  120. freeID(key);
  121. return getUserName(data);
  122. }
  123.  
  124. int getTinderUserBirthYear(Tinder tinder, int id){
  125. int* key = createMapKey(id);
  126. MapDataElement data = mapGet(tinder->users,key);
  127. freeID(key);
  128. return getUserBirthYear(data);
  129. }
  130.  
  131. Gender getTinderUserGender(Tinder tinder, int id){
  132. int* key = createMapKey(id);
  133. MapDataElement data = mapGet(tinder->users,key);
  134. freeID(key);
  135. return getUserGender(data);
  136. }
  137.  
  138. Gender getTinderUserPref(Tinder tinder, int id){
  139. int* key = createMapKey(id);
  140. MapDataElement data = mapGet(tinder->users,key);
  141. freeID(key);
  142. return getUserPref(data);
  143. }
  144.  
  145. Set getTinderUserFriends(Tinder tinder, int id){
  146. int* key = createMapKey(id);
  147. MapDataElement data = mapGet(tinder->users,key);
  148. freeID(key);
  149. return getSetFirends(data);
  150. }
  151. Set getTinderUserFriendRequests(Tinder tinder, int id){
  152. int* key = createMapKey(id);
  153. MapDataElement data = mapGet(tinder->users,key);
  154. freeID(key);
  155. return getSetFirendRequests(data);
  156. }
  157.  
  158.  
  159. Set getTinderUserHobbies(Tinder tinder, int id){
  160. assert(tinder!=NULL);
  161. int* key = createMapKey(id);
  162. assert(key!=NULL);
  163. MapDataElement data = mapGet(tinder->users,key);
  164. assert(data!=NULL);
  165. freeID(key);
  166. return getSetHobbies(data);
  167. }
  168.  
  169. Map getTinderUsers(Tinder tinder){
  170. assert(tinder!=NULL);
  171. return tinder->users;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement