Browse Source

added lock() on Object (spod_macro only)

Nicolas Cannasse 14 years ago
parent
commit
cfa33b8d8e
2 changed files with 16 additions and 0 deletions
  1. 7 0
      std/neko/db/MacroManager.hx
  2. 9 0
      std/neko/db/Object.hx

+ 7 - 0
std/neko/db/MacroManager.hx

@@ -202,6 +202,13 @@ class MacroManager<T : Object> {
 	}
 
 
+	function doLock( x : T ) {
+		if( (cast x).update != no_update )
+			return;
+		Reflect.deleteField(x, "update");
+		doSync(x);
+	}
+	
 	function doSync( i : T ) {
 		object_cache.remove(makeCacheKey(i));
 		var s = new StringBuf();

+ 9 - 0
std/neko/db/Object.hx

@@ -49,6 +49,9 @@ class Object #if spod_rtti implements haxe.rtti.Infos #end {
 		private function doSync( o : Object ) : Void;
 		private function doDelete( o : Object ) : Void;
 		private function objectToString( o : Object ) : String;
+		#if spod_macro
+		private function doLock( o : Object ) : Void;
+		#end
 	};
 
 
@@ -70,6 +73,12 @@ class Object #if spod_rtti implements haxe.rtti.Infos #end {
 	public function delete() {
 		local_manager.doDelete(this);
 	}
+	
+	#if spod_macro
+	public function lock() {
+		local_manager.doLock(this);
+	}
+	#end
 
 	public function toString() {
 		return local_manager.objectToString(this);