forsyth20121205-174063a80cc13 years agoHistory
50 lines · 1.5 KB · Objective-C
RawDownload
JSON: module{	PATH:	con "/dis/lib/json.dis"; 	JValue: adt {		pick{		Object =>			mem: cyclic list of (string, ref JValue);		Array =>			a: cyclic array of ref JValue;		String =>			s: string;		Int =>			value:	big;	# could use IPint?	# just use Number (as string)		Real =>			value:	real;		True or False or Null =>		} 		isarray:	fn(o: self ref JValue): int;		isfalse:	fn(o: self ref JValue): int;		isint:		fn(o: self ref JValue): int;		isnull:	fn(o: self ref JValue): int;		isnumber: fn(o: self ref JValue): int;		isobject:	fn(o: self ref JValue): int;		isreal:	fn(o: self ref JValue): int;		isstring:	fn(o: self ref JValue): int;		istrue:	fn(o: self ref JValue): int;		copy:	fn(o: self ref JValue): ref JValue;		eq:	fn(a: self ref JValue, b: ref JValue): int;		get:	fn(a: self ref JValue, n: string): ref JValue;		set:	fn(a: self ref JValue, mem: string, value: ref JValue);		text:	fn(a: self ref JValue): string;	}; 	init:	fn(bufio: Bufio);	readjson:	fn(buf: ref Bufio->Iobuf): (ref JValue, string);	writejson:	fn(buf: ref Bufio->Iobuf, val: ref JValue): int; 	# shorthand?	jvarray:	fn(a: array of ref JValue): ref JValue.Array;	jvbig:	fn(b: big): ref JValue.Int;	jvfalse:	fn(): ref JValue.False;	jvint:		fn(i: int): ref JValue.Int;	jvnull:	fn(): ref JValue.Null;	jvobject:	fn(m: list of (string, ref JValue)): ref JValue.Object;	jvreal:	fn(r: real): ref JValue.Real;	jvstring:	fn(s: string): ref JValue.String;	jvtrue:	fn(): ref JValue.True;};