Browse Source

amberc.js: add finished_callback

this callback gets called once all compiler steps
are run
Manfred Kroehnert 12 years ago
parent
commit
15e108980a
1 changed files with 8 additions and 4 deletions
  1. 8 4
      bin/amberc.js

+ 8 - 4
bin/amberc.js

@@ -90,7 +90,7 @@ function AmberC(amber_dir, closure_jar) {
 /**
  * Default values.
  */
-var createDefaults = function(amber_dir){
+var createDefaults = function(amber_dir, finished_callback){
 	return {
 		'smalltalk': {}, // the evaluated compiler will be stored in this variable (see create_compiler)
 		'load': [],
@@ -109,7 +109,8 @@ var createDefaults = function(amber_dir){
 		'compile': [],
 		'compiled_categories': [],
 		'compiled': [],
-		'program': undefined
+		'program': undefined,
+		'finished_callback': finished_callback
 	};
 };
 
@@ -117,14 +118,14 @@ var createDefaults = function(amber_dir){
 /**
  * Main function for executing the compiler.
  */
-AmberC.prototype.main = function(parameters) {
+AmberC.prototype.main = function(parameters, finished_callback) {
 	console.time('Compile Time');
 	var options = parameters || process.argv.slice(2);
 
 	if (1 > options.length) {
 		this.usage();
 	} else {
-		this.defaults = createDefaults(this.amber_dir);
+		this.defaults = createDefaults(this.amber_dir, finished_callback);
 		this.handle_options(options);
 	}
 };
@@ -699,6 +700,9 @@ AmberC.prototype.optimize = function() {
 	var self = this;
 	var optimization_done = new Combo(function() {
 		console.timeEnd('Compile Time');
+		if (undefined !== defaults.finished_callback) {
+			defaults.finished_callback();
+		}
 	});
 
 	if (defaults.closure_parts) {