changed System to be a class instead of an instance of a system dictionary
This commit is contained in:
		| @ -1,7 +1,5 @@ | ||||
| class Apex(nil) | ||||
| { | ||||
| 	dcl(#class) sysdic. | ||||
|  | ||||
| 	## ------------------------------------------------------- | ||||
| 	## ------------------------------------------------------- | ||||
|  | ||||
| @ -541,3 +539,86 @@ extend Error | ||||
| 		<primitive: #_error_as_string> | ||||
| 	} | ||||
| } | ||||
|  | ||||
| class System(Apex) | ||||
| { | ||||
| } | ||||
|  | ||||
| pooldic System.Log | ||||
| { | ||||
| 	## ----------------------------------------------------------- | ||||
| 	## defines log levels | ||||
| 	## these items must follow defintions in moo.h | ||||
| 	## ----------------------------------------------------------- | ||||
|  | ||||
| 	DEBUG := 1. | ||||
| 	INFO  := 2. | ||||
| 	WARN  := 4. | ||||
| 	ERROR := 8. | ||||
| 	FATAL := 16. | ||||
| } | ||||
|  | ||||
| extend System | ||||
| { | ||||
| 	## the following methods may not look suitable to be placed | ||||
| 	## inside a system dictionary. but they are here for quick and dirty | ||||
| 	## output production from the moo code. | ||||
| 	##   System logNl: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'. | ||||
| 	## | ||||
| 	method(#class) atLevel: level log: message | ||||
| 	{ | ||||
| 		<primitive: #_log> | ||||
| 		## do nothing upon logging failure | ||||
| 	} | ||||
|  | ||||
| 	method(#class) atLevel: level log: message and: message2 | ||||
| 	{ | ||||
| 		<primitive: #_log> | ||||
| 		## do nothing upon logging failure | ||||
| 	} | ||||
|  | ||||
| 	method(#class) atLevel: level log: message and: message2 and: message3 | ||||
| 	{ | ||||
| 		<primitive: #_log> | ||||
| 		## do nothing upon logging failure | ||||
| 	} | ||||
|  | ||||
| 	method(#class) atLevel: level logNl: message  | ||||
| 	{ | ||||
| 		## the #_log primitive accepts an array. | ||||
| 		## so the following lines should work also. | ||||
| 		## | x | | ||||
| 		## x := Array new: 2. | ||||
| 		## x at: 0 put: message. | ||||
| 		## x at: 1 put: S'\n'. | ||||
| 		## ^self atLevel: level log: x. | ||||
|  | ||||
| 		^self atLevel: level log: message and: S'\n'. | ||||
| 	} | ||||
|  | ||||
| 	method(#class) atLevel: level logNl: message and: message2 | ||||
| 	{ | ||||
| 		^self atLevel: level log: message and: message2 and: S'\n'. | ||||
| 	} | ||||
|  | ||||
| 	method(#class) log: message | ||||
| 	{ | ||||
| 		^self atLevel: System.Log.INFO log: message. | ||||
| 	} | ||||
|  | ||||
| 	method(#class) log: message and: message2 | ||||
| 	{ | ||||
| 		^self atLevel: System.Log.INFO log: message and: message2. | ||||
| 	} | ||||
|  | ||||
| 	method(#class) logNl: message | ||||
| 	{ | ||||
| 		^self atLevel: System.Log.INFO logNl: message. | ||||
| 	} | ||||
|  | ||||
| 	method(#class) logNl: message and: message2 | ||||
| 	{ | ||||
| 		^self atLevel: System.Log.INFO logNl: message and: message2. | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -500,86 +500,8 @@ class Dictionary(Set) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| pooldic Log | ||||
| { | ||||
| 	## ----------------------------------------------------------- | ||||
| 	## defines log levels | ||||
| 	## these items must follow defintions in moo.h | ||||
| 	## ----------------------------------------------------------- | ||||
|  | ||||
| 	DEBUG := 1. | ||||
| 	INFO  := 2. | ||||
| 	WARN  := 4. | ||||
| 	ERROR := 8. | ||||
| 	FATAL := 16. | ||||
| } | ||||
|  | ||||
| class SystemDictionary(Set) | ||||
| { | ||||
| 	## the following methods may not look suitable to be placed | ||||
| 	## inside a system dictionary. but they are here for quick and dirty | ||||
| 	## output production from the moo code. | ||||
| 	##   System logNl: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'. | ||||
| 	## | ||||
|  | ||||
| 	dcl(#pooldic) Log. | ||||
|  | ||||
| 	method atLevel: level log: message | ||||
| 	{ | ||||
| 		<primitive: #_log> | ||||
| 		## do nothing upon logging failure | ||||
| 	} | ||||
|  | ||||
| 	method atLevel: level log: message and: message2 | ||||
| 	{ | ||||
| 		<primitive: #_log> | ||||
| 		## do nothing upon logging failure | ||||
| 	} | ||||
|  | ||||
| 	method atLevel: level log: message and: message2 and: message3 | ||||
| 	{ | ||||
| 		<primitive: #_log> | ||||
| 		## do nothing upon logging failure | ||||
| 	} | ||||
|  | ||||
| 	method atLevel: level logNl: message  | ||||
| 	{ | ||||
| 		## the #_log primitive accepts an array. | ||||
| 		## so the following lines should work also. | ||||
| 		## | x | | ||||
| 		## x := Array new: 2. | ||||
| 		## x at: 0 put: message. | ||||
| 		## x at: 1 put: S'\n'. | ||||
| 		## ^self atLevel: level log: x. | ||||
|  | ||||
| 		^self atLevel: level log: message and: S'\n'. | ||||
| 	} | ||||
|  | ||||
| 	method atLevel: level logNl: message and: message2 | ||||
| 	{ | ||||
| 		^self atLevel: level log: message and: message2 and: S'\n'. | ||||
| 	} | ||||
|  | ||||
| 	method log: message | ||||
| 	{ | ||||
| 		^self atLevel: Log.INFO log: message. | ||||
| 	} | ||||
|  | ||||
| 	method log: message and: message2 | ||||
| 	{ | ||||
| 		^self atLevel: Log.INFO log: message and: message2. | ||||
| 	} | ||||
|  | ||||
| 	method logNl: message | ||||
| 	{ | ||||
| 		^self atLevel: Log.INFO logNl: message. | ||||
| 	} | ||||
|  | ||||
| 	method logNl: message and: message2 | ||||
| 	{ | ||||
| 		^self atLevel: Log.INFO logNl: message and: message2. | ||||
| 	} | ||||
|  | ||||
| 	method at: key | ||||
| 	{ | ||||
| 		if (key class ~= Symbol) { InvalidArgumentException signal: 'key is not a symbol' }. | ||||
|  | ||||
| @ -318,7 +318,16 @@ class MyObject(Object) | ||||
| 			} | ||||
| 		}*) | ||||
|  | ||||
| 		Processor sleepFor: 20. | ||||
| 		System logNl: 'Sleeping start now....'. | ||||
| 		 | ||||
| 		(* basicAt: 12 to access the nsdic field. use a proper method once it's defined in Class *) | ||||
| 		(System basicAt: 12) keysAndValuesDo: [:k :v | | ||||
| 			k dump. | ||||
| 			v dump. | ||||
| 			'------------' dump. | ||||
| 		]. | ||||
|  | ||||
| 		Processor sleepFor: 3. ## DEBUG VM... VM WAITING FOR 10 SECS instead of 3. | ||||
| 	} | ||||
| 	 | ||||
| 	(* | ||||
|  | ||||
		Reference in New Issue
	
	Block a user