Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Sep 21st, 2012  |  syntax: None  |  size: 2.45 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. // defaults
  2.  
  3. boolean TypeAdapter::toBoolean(var value) {
  4.   return value.booleanValue;
  5. }
  6.  
  7. number TypeAdapter::toNumber(var value) {
  8.   return value.numberValue;
  9. }
  10.  
  11. cstring const TypeAdapter::toString(var value) {
  12.   return value.stringValue.c_str();
  13. }
  14.  
  15. Object TypeAdapter::toObject(var value) {
  16.   return value.objectValue;
  17. }
  18.  
  19. Array TypeAdapter::toArray(var value) {
  20.   return value.arrayValue;
  21. }
  22.  
  23. // boolean adapter
  24.  
  25. number BooleanAdapter::toNumber(var value) {
  26.   return value.booleanValue == false ? 0 : 1;
  27. }
  28. cstring const BooleanAdapter::toString(var value) {
  29.   return value.booleanValue == false ? "false" : "true";
  30. }
  31.  
  32. // number adapter
  33.  
  34. boolean NumberAdapter::toBoolean(var value) {
  35.   return value.numberValue == 0 ? false : true;
  36. }
  37.  
  38. cstring const NumberAdapter::toString(var value) {
  39.   ostringstream ss;
  40.   value.stringValue = ss << value.numberValue ? ss.str() : "NaN";
  41.   return value.stringValue.c_str();
  42. }
  43.  
  44. // string adapter
  45.  
  46. boolean StringAdapter::toBoolean(var value) {
  47.   return value.stringValue == "" ? false : true;
  48. }
  49.  
  50. number StringAdapter::toNumber(var value) {
  51.   number n;  
  52.   istringstream ss(value.stringValue);
  53.   return ss >> n ? n : 0;
  54. }
  55.  
  56.  
  57. // object adapter
  58.  
  59. number ObjectAdapter::toNumber(var value) {
  60.   return 0;
  61. }
  62.  
  63. boolean ObjectAdapter::toBoolean(var value) {
  64.   return true;
  65. }
  66.  
  67. cstring const ObjectAdapter::toString(var value) {
  68.  
  69.     ostringstream ss;
  70.    
  71.     ss << "{";
  72.    
  73.     for (Object::iterator it = value.objectValue.begin(); it != value.objectValue.end(); ++it) {
  74.    
  75.       if (it != value.objectValue.begin())
  76.         ss << ", ";
  77.        
  78.       ss << "\"" << it->first << "\":" << (cstring)(it->second);
  79.     }
  80.    
  81.    
  82.     ss << "}";
  83.    
  84.     value.stringValue = ss.str();
  85.    
  86.     return value.stringValue.c_str();
  87.  
  88. }
  89.  
  90.  
  91. // array adapter
  92.  
  93. number ArrayAdapter::toNumber(var value) {
  94.   return StringAdapter().toNumber(value.arrayValue);
  95. }
  96.  
  97. boolean ArrayAdapter::toBoolean(var value) {
  98.   return true;
  99. }
  100.  
  101. cstring const ArrayAdapter::toString(var value) {
  102.  
  103.     ostringstream ss;
  104.    
  105.     ss << "[";
  106.      
  107.     for (Array::iterator it = value.arrayValue.begin(); it != value.arrayValue.end(); ++it) {
  108.    
  109.       cstring item = *it;
  110.    
  111.       if (it != value.arrayValue.begin())
  112.         ss << ", ";
  113.    
  114.       if (it->isString()) {
  115.      
  116.         ss << "\"" << item << "\"";
  117.      
  118.       }
  119.      
  120.       else {
  121.      
  122.         ss << item;
  123.      
  124.       }
  125.    
  126.     }
  127.    
  128.     ss << "]";
  129.    
  130.     value.stringValue = ss.str();
  131.    
  132.     return value.stringValue.c_str();
  133.  
  134. }