/Frameworks/Foundation/objj.platform/CPKeyedUnarchiver.j

http://github.com/jfahrenkrug/MapKit-HelloWorld · Unknown · 243 lines · 243 code · 0 blank · 0 comment · 0 complexity · 16f22dff9256927f4b4590afddbebd9e MD5 · raw file

  1. i;8;CPNull.ji;9;CPCoder.jc;8106;
  2. var _1=1,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4;
  3. var _6="$null";
  4. _CPKeyedArchiverUIDKey="CP$UID",_CPKeyedArchiverTopKey="$top",_CPKeyedArchiverObjectsKey="$objects",_CPKeyedArchiverArchiverKey="$archiver",_CPKeyedArchiverVersionKey="$version",_CPKeyedArchiverClassNameKey="$classname",_CPKeyedArchiverClassesKey="$classes",_CPKeyedArchiverClassKey="$class";
  5. var _7=Nil,_8=Nil,_9=Nil,_a=Nil,_b=Nil,_c=Nil;
  6. var _d=objj_allocateClassPair(CPCoder,"CPKeyedUnarchiver"),_e=_d.isa;
  7. class_addIvars(_d,[new objj_ivar("_delegate"),new objj_ivar("_delegateSelectors"),new objj_ivar("_data"),new objj_ivar("_replacementClasses"),new objj_ivar("_objects"),new objj_ivar("_archive"),new objj_ivar("_plistObject"),new objj_ivar("_plistObjects")]);
  8. objj_registerClassPair(_d);
  9. objj_addClassForBundle(_d,objj_getBundleWithPath(OBJJ_CURRENT_BUNDLE.path));
  10. class_addMethods(_d,[new objj_method(sel_getUid("initForReadingWithData:"),function(_f,_10,_11){
  11. with(_f){
  12. _f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPCoder")},"init");
  13. if(_f){
  14. _archive=objj_msgSend(_11,"plistObject");
  15. _objects=objj_msgSend(CPArray,"arrayWithObject:",objj_msgSend(CPNull,"null"));
  16. _plistObject=objj_msgSend(_archive,"objectForKey:",_CPKeyedArchiverTopKey);
  17. _plistObjects=objj_msgSend(_archive,"objectForKey:",_CPKeyedArchiverObjectsKey);
  18. _replacementClasses=objj_msgSend(CPDictionary,"dictionary");
  19. }
  20. return _f;
  21. }
  22. }),new objj_method(sel_getUid("containsValueForKey:"),function(_12,_13,_14){
  23. with(_12){
  24. return objj_msgSend(_plistObject,"objectForKey:",_14)!=nil;
  25. }
  26. }),new objj_method(sel_getUid("_decodeDictionaryOfObjectsForKey:"),function(_15,_16,_17){
  27. with(_15){
  28. var _18=objj_msgSend(_plistObject,"objectForKey:",_17);
  29. if(objj_msgSend(_18,"isKindOfClass:",_9)){
  30. var key,_1a=objj_msgSend(_18,"keyEnumerator"),_1b=objj_msgSend(CPDictionary,"dictionary");
  31. while(key=objj_msgSend(_1a,"nextObject")){
  32. objj_msgSend(_1b,"setObject:forKey:",_1c(_15,objj_msgSend(objj_msgSend(_18,"objectForKey:",key),"objectForKey:",_CPKeyedArchiverUIDKey)),key);
  33. }
  34. return _1b;
  35. }
  36. return nil;
  37. }
  38. }),new objj_method(sel_getUid("decodeBoolForKey:"),function(_1d,_1e,_1f){
  39. with(_1d){
  40. return objj_msgSend(_1d,"decodeObjectForKey:",_1f);
  41. }
  42. }),new objj_method(sel_getUid("decodeFloatForKey:"),function(_20,_21,_22){
  43. with(_20){
  44. return objj_msgSend(_20,"decodeObjectForKey:",_22);
  45. }
  46. }),new objj_method(sel_getUid("decodeDoubleForKey:"),function(_23,_24,_25){
  47. with(_23){
  48. return objj_msgSend(_23,"decodeObjectForKey:",_25);
  49. }
  50. }),new objj_method(sel_getUid("decodeIntForKey:"),function(_26,_27,_28){
  51. with(_26){
  52. return objj_msgSend(_26,"decodeObjectForKey:",_28);
  53. }
  54. }),new objj_method(sel_getUid("decodePointForKey:"),function(_29,_2a,_2b){
  55. with(_29){
  56. var _2c=objj_msgSend(_29,"decodeObjectForKey:",_2b);
  57. if(_2c){
  58. return CPPointFromString(_2c);
  59. }else{
  60. return CPPointMake(0,0);
  61. }
  62. }
  63. }),new objj_method(sel_getUid("decodeRectForKey:"),function(_2d,_2e,_2f){
  64. with(_2d){
  65. var _30=objj_msgSend(_2d,"decodeObjectForKey:",_2f);
  66. if(_30){
  67. return CPRectFromString(_30);
  68. }else{
  69. return CPRectMakeZero();
  70. }
  71. }
  72. }),new objj_method(sel_getUid("decodeSizeForKey:"),function(_31,_32,_33){
  73. with(_31){
  74. var _34=objj_msgSend(_31,"decodeObjectForKey:",_33);
  75. if(_34){
  76. return CPSizeFromString(_34);
  77. }else{
  78. return CPSizeMake(0,0);
  79. }
  80. }
  81. }),new objj_method(sel_getUid("decodeObjectForKey:"),function(_35,_36,_37){
  82. with(_35){
  83. var _38=objj_msgSend(_plistObject,"objectForKey:",_37);
  84. if(objj_msgSend(_38,"isKindOfClass:",_9)){
  85. return _1c(_35,objj_msgSend(_38,"objectForKey:",_CPKeyedArchiverUIDKey));
  86. }else{
  87. if(objj_msgSend(_38,"isKindOfClass:",_a)||objj_msgSend(_38,"isKindOfClass:",_b)){
  88. return _38;
  89. }else{
  90. if(objj_msgSend(_38,"isKindOfClass:",_7)){
  91. var _39=0,_3a=_38.length,_3b=[];
  92. for(;_39<_3a;++_39){
  93. _3b[_39]=_1c(_35,objj_msgSend(_38[_39],"objectForKey:",_CPKeyedArchiverUIDKey));
  94. }
  95. return _3b;
  96. }
  97. }
  98. }
  99. return nil;
  100. }
  101. }),new objj_method(sel_getUid("decodeBytesForKey:"),function(_3c,_3d,_3e){
  102. with(_3c){
  103. var _3f=objj_msgSend(_3c,"decodeObjectForKey:",_3e);
  104. if(objj_msgSend(_3f,"isKindOfClass:",objj_msgSend(CPData,"class"))){
  105. return _3f.bytes;
  106. }
  107. return nil;
  108. }
  109. }),new objj_method(sel_getUid("finishDecoding"),function(_40,_41){
  110. with(_40){
  111. if(_delegateSelectors&_4){
  112. objj_msgSend(_delegate,"unarchiverWillFinish:",_40);
  113. }
  114. if(_delegateSelectors&_5){
  115. objj_msgSend(_delegate,"unarchiverDidFinish:",_40);
  116. }
  117. }
  118. }),new objj_method(sel_getUid("delegate"),function(_42,_43){
  119. with(_42){
  120. return _delegate;
  121. }
  122. }),new objj_method(sel_getUid("setDelegate:"),function(_44,_45,_46){
  123. with(_44){
  124. _delegate=_46;
  125. if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:cannotDecodeObjectOfClassName:originalClasses:"))){
  126. _delegateSelectors|=_1;
  127. }
  128. if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:didDecodeObject:"))){
  129. _delegateSelectors|=_2;
  130. }
  131. if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:willReplaceObject:withObject:"))){
  132. _delegateSelectors|=_3;
  133. }
  134. if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiverWillFinish:"))){
  135. _delegateSelectors|=_CPKeyedUnarchiverWilFinishSelector;
  136. }
  137. if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiverDidFinish:"))){
  138. _delegateSelectors|=_5;
  139. }
  140. }
  141. }),new objj_method(sel_getUid("setClass:forClassName:"),function(_47,_48,_49,_4a){
  142. with(_47){
  143. objj_msgSend(_replacementClasses,"setObject:forKey:",_49,_4a);
  144. }
  145. }),new objj_method(sel_getUid("classForClassName:"),function(_4b,_4c,_4d){
  146. with(_4b){
  147. return objj_msgSend(_replacementClasses,"objectForKey:",_4d);
  148. }
  149. }),new objj_method(sel_getUid("allowsKeyedCoding"),function(_4e,_4f){
  150. with(_4e){
  151. return YES;
  152. }
  153. })]);
  154. class_addMethods(_e,[new objj_method(sel_getUid("initialize"),function(_50,_51){
  155. with(_50){
  156. if(_50!==objj_msgSend(CPKeyedUnarchiver,"class")){
  157. return;
  158. }
  159. _7=objj_msgSend(CPArray,"class");
  160. _8=objj_msgSend(CPString,"class");
  161. _9=objj_msgSend(CPDictionary,"class");
  162. _a=objj_msgSend(CPNumber,"class");
  163. _b=objj_msgSend(CPData,"class");
  164. _c=objj_msgSend(_CPKeyedArchiverValue,"class");
  165. }
  166. }),new objj_method(sel_getUid("unarchiveObjectWithData:"),function(_52,_53,_54){
  167. with(_52){
  168. var _55=objj_msgSend(objj_msgSend(_52,"alloc"),"initForReadingWithData:",_54),_56=objj_msgSend(_55,"decodeObjectForKey:","root");
  169. objj_msgSend(_55,"finishDecoding");
  170. return _56;
  171. }
  172. }),new objj_method(sel_getUid("unarchiveObjectWithFile:"),function(_57,_58,_59){
  173. with(_57){
  174. }
  175. }),new objj_method(sel_getUid("unarchiveObjectWithFile:asynchronously:"),function(_5a,_5b,_5c,_5d){
  176. with(_5a){
  177. }
  178. })]);
  179. var _1c=function(_5e,_5f){
  180. var _60=_5e._objects[_5f];
  181. if(_60){
  182. if(_60==_5e._objects[0]){
  183. return nil;
  184. }else{
  185. return _60;
  186. }
  187. }
  188. var _60,_61=_5e._plistObjects[_5f];
  189. if(objj_msgSend(_61,"isKindOfClass:",_9)){
  190. var _62=_5e._plistObjects[objj_msgSend(objj_msgSend(_61,"objectForKey:",_CPKeyedArchiverClassKey),"objectForKey:",_CPKeyedArchiverUIDKey)],_63=objj_msgSend(_62,"objectForKey:",_CPKeyedArchiverClassNameKey),_64=objj_msgSend(_62,"objectForKey:",_CPKeyedArchiverClassesKey),_65=objj_msgSend(_5e,"classForClassName:",_63);
  191. if(!_65){
  192. _65=CPClassFromString(_63);
  193. }
  194. _60=objj_msgSend(_65,"alloc");
  195. _5e._objects[_5f]=_60;
  196. var _66=_5e._plistObject;
  197. _5e._plistObject=_61;
  198. var _67=_63;
  199. var _68=objj_msgSend(_60,"initWithCoder:",_5e);
  200. _5e._plistObject=_66;
  201. if(_68!=_60){
  202. if(_5e._delegateSelectors&_3){
  203. objj_msgSend(_5e._delegate,"unarchiver:willReplaceObject:withObject:",_5e,_60,_68);
  204. }
  205. _60=_68;
  206. _5e._objects[_5f]=_68;
  207. }
  208. _68=objj_msgSend(_60,"awakeAfterUsingCoder:",_5e);
  209. if(_68!=_60){
  210. if(_5e._delegateSelectors&_3){
  211. objj_msgSend(_5e._delegate,"unarchiver:willReplaceObject:withObject:",_5e,_60,_68);
  212. }
  213. _60=_68;
  214. _5e._objects[_5f]=_68;
  215. }
  216. if(_5e._delegate){
  217. if(_5e._delegateSelectors&_2){
  218. _68=objj_msgSend(_5e._delegate,"unarchiver:didDecodeObject:",_5e,_60);
  219. }
  220. if(_68!=_60){
  221. if(_5e._delegateSelectors&_3){
  222. objj_msgSend(_5e._delegate,"unarchiver:willReplaceObject:withObject:",_5e,_60,_68);
  223. }
  224. _60=_68;
  225. _5e._objects[_5f]=_68;
  226. }
  227. }
  228. }else{
  229. _5e._objects[_5f]=_60=_61;
  230. if(objj_msgSend(_60,"class")==_8){
  231. if(_60==_6){
  232. _5e._objects[_5f]=_5e._objects[0];
  233. return nil;
  234. }else{
  235. _5e._objects[_5f]=_60=_61;
  236. }
  237. }
  238. }
  239. if(objj_msgSend(_60,"isMemberOfClass:",_c)){
  240. _60=objj_msgSend(_60,"JSObject");
  241. }
  242. return _60;
  243. };