00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 @import "CPObject.j"
00024 @import "CPString.j"
00025
00026
00027 @implementation CPData : CPObject
00028 {
00029 id _plistObject;
00030 }
00031
00032 + (id)alloc
00033 {
00034 return new objj_data();
00035 }
00036
00037 + (CPData)data
00038 {
00039 return [[self alloc] initWithPlistObject:nil];
00040 }
00041
00042 + (CPData)dataWithString:(CPString)aString
00043 {
00044 return [[self alloc] initWithString:aString];
00045 }
00046
00047 + (CPData)dataWithPlistObject:(id)aPlistObject
00048 {
00049 return [[self alloc] initWithPlistObject:aPlistObject];
00050 }
00051
00052 - (id)initWithString:(CPString)aString
00053 {
00054 self = [super init];
00055
00056 if (self)
00057 string = aString;
00058
00059 return self;
00060 }
00061
00062 - (id)initWithPlistObject:(id)aPlistObject
00063 {
00064 self = [super init];
00065
00066 if (self)
00067 _plistObject = aPlistObject;
00068
00069 return self;
00070 }
00071
00072 - (int)length
00073 {
00074 return [[self string] length];
00075 }
00076
00077 - (CPString)description
00078 {
00079 return string;
00080 }
00081
00082 - (CPString)string
00083 {
00084 if (!string && _plistObject)
00085 string = [[CPPropertyListSerialization dataFromPropertyList:_plistObject format:CPPropertyList280NorthFormat_v1_0 errorDescription:NULL] string];
00086
00087 return string;
00088 }
00089
00090 - (void)setString:(CPString)aString
00091 {
00092 string = aString;
00093 _plistObject = nil;
00094 }
00095
00096 - (id)plistObject
00097 {
00098 if (string && !_plistObject)
00099
00100 _plistObject = [CPPropertyListSerialization propertyListFromData:self format:0 errorDescription:NULL];
00101
00102 return _plistObject;
00103 }
00104
00105 - (void)setPlistObject:(id)aPlistObject
00106 {
00107 string = nil;
00108 _plistObject = aPlistObject;
00109 }
00110
00111 @end
00112
00113 objj_data.prototype.isa = CPData;