| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of serialization; | 5 part of serialization; |
| 6 | 6 |
| 7 // TODO(alanknight): We should have an example and tests for subclassing | 7 // TODO(alanknight): We should have an example and tests for subclassing |
| 8 // serialization rule rather than using the hard-coded ClosureToMap rule. And | 8 // serialization rule rather than using the hard-coded ClosureToMap rule. And |
| 9 // possibly an abstract superclass that's designed to be subclassed that way. | 9 // possibly an abstract superclass that's designed to be subclassed that way. |
| 10 /** | 10 /** |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 pullStateFrom(Iterator stream) { | 268 pullStateFrom(Iterator stream) { |
| 269 var dataLength = stream.next(); | 269 var dataLength = stream.next(); |
| 270 var ruleData = new List(); | 270 var ruleData = new List(); |
| 271 for (var i = 0; i < dataLength; i++) { | 271 for (var i = 0; i < dataLength; i++) { |
| 272 ruleData.add(stream.next()); | 272 ruleData.add(stream.next()); |
| 273 } | 273 } |
| 274 return ruleData; | 274 return ruleData; |
| 275 } | 275 } |
| 276 } | 276 } |
| 277 | 277 |
| 278 /** Helper function for PrimitiveRule to tell which objects it applies to. */ | |
| 279 bool isPrimitive(Object object) { | |
| 280 return object is num || object is String || object is bool; | |
| 281 } | |
| 282 | |
| 283 /** Typedef for the object construction closure used in ClosureToMapRule. */ | 278 /** Typedef for the object construction closure used in ClosureToMapRule. */ |
| 284 typedef Object ConstructType(Map m); | 279 typedef Object ConstructType(Map m); |
| 285 | 280 |
| 286 /** Typedef for the state-getting closure used in ClosureToMapRule. */ | 281 /** Typedef for the state-getting closure used in ClosureToMapRule. */ |
| 287 typedef Map<String, Object> GetStateType(Object o); | 282 typedef Map<String, Object> GetStateType(Object o); |
| 288 | 283 |
| 289 /** Typedef for the state-setting closure used in ClosureToMapRule. */ | 284 /** Typedef for the state-setting closure used in ClosureToMapRule. */ |
| 290 typedef void NonEssentialStateType(Object o, Map m); | 285 typedef void NonEssentialStateType(Object o, Map m); |
| 291 | 286 |
| 292 /** | 287 /** |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 class ClassMirrorRule extends SerializationRule { | 353 class ClassMirrorRule extends SerializationRule { |
| 359 // TODO(alanknight): This probably generalizes to any named object. | 354 // TODO(alanknight): This probably generalizes to any named object. |
| 360 bool appliesTo(object) { | 355 bool appliesTo(object) { |
| 361 return object is ClassMirror; | 356 return object is ClassMirror; |
| 362 } | 357 } |
| 363 extractState(object, Function f) => f(object.simpleName); | 358 extractState(object, Function f) => f(object.simpleName); |
| 364 void flatten(object, Writer writer) {} | 359 void flatten(object, Writer writer) {} |
| 365 inflateEssential(state, Reader r) => r.externalObjectNamed(state); | 360 inflateEssential(state, Reader r) => r.externalObjectNamed(state); |
| 366 inflateNonEssential(state, object, Reader r) {} | 361 inflateNonEssential(state, object, Reader r) {} |
| 367 } | 362 } |
| OLD | NEW |