changeset 77:af948d4bbf8c

Impls for core.jobs
author Frank Benoit <benoit@tionex.de>
date Mon, 13 Apr 2009 13:58:00 +0200
parents f05e6e8b2f2d
children e296c4ee94ac
files base/src/java/lang/Thread.d base/src/java/util/HashSet.d org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.d org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.d
diffstat 4 files changed, 38 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/base/src/java/lang/Thread.d	Sun Apr 12 12:27:13 2009 +0200
+++ b/base/src/java/lang/Thread.d	Mon Apr 13 13:58:00 2009 +0200
@@ -17,7 +17,7 @@
     }
     private TThread thread;
     private Runnable runnable;
-
+    private bool interrupted_ = false;
     version(Tango){
         private alias tango.core.Thread.ThreadLocal!(Thread) TTLS;
         private static TTLS tls;
@@ -97,7 +97,7 @@
 //         assert( MIN_PRIORITY < MAX_PRIORITY );
 //         assert( tango.core.Thread.Thread.PRIORITY_MIN < tango.core.Thread.Thread.PRIORITY_MAX );
         auto scaledPrio = (newPriority-MIN_PRIORITY) * (TThread.PRIORITY_MAX-TThread.PRIORITY_MIN) / (MAX_PRIORITY-MIN_PRIORITY) +TThread.PRIORITY_MIN;
-        getDwtLogger().trace( __FILE__, __LINE__, "Thread.setPriority: scale ({} {} {}) -> ({} {} {})", MIN_PRIORITY, newPriority, MAX_PRIORITY, TThread.PRIORITY_MIN, scaledPrio, TThread.PRIORITY_MAX);
+//        getDwtLogger().trace( __FILE__, __LINE__, "Thread.setPriority: scale ({} {} {}) -> ({} {} {})", MIN_PRIORITY, newPriority, MAX_PRIORITY, TThread.PRIORITY_MIN, scaledPrio, TThread.PRIORITY_MAX);
 //         thread.priority( scaledPrio );
     }
 
@@ -140,12 +140,17 @@
     }
 
     void interrupt() {
+        interrupted_ = true;
         implMissing(__FILE__,__LINE__);
     }
 
     static bool interrupted() {
-        implMissing(__FILE__,__LINE__);
-        return false;
+        auto t = currentThread();
+        synchronized(t){
+            bool res = t.interrupted_;
+            t.interrupted_ = false;
+            return res;
+        }
     }
 
     public void run(){
--- a/base/src/java/util/HashSet.d	Sun Apr 12 12:27:13 2009 +0200
+++ b/base/src/java/util/HashSet.d	Mon Apr 13 13:58:00 2009 +0200
@@ -25,13 +25,26 @@
         }
     }
     public this(Collection c){
-        implMissing( __FILE__, __LINE__ );
+        version(Tango){
+            set = new SetType();
+            addAll(c);
+        } else { // Phobos
+            implMissing( __FILE__, __LINE__ );
+        }
     }
     public this(int initialCapacity){
-        implMissing( __FILE__, __LINE__ );
+        version(Tango){
+            set = new SetType();
+        } else { // Phobos
+            implMissing( __FILE__, __LINE__ );
+        }
     }
     public this(int initialCapacity, float loadFactor){
-        implMissing( __FILE__, __LINE__ );
+        version(Tango){
+            set = new SetType(loadFactor);
+        } else { // Phobos
+            implMissing( __FILE__, __LINE__ );
+        }
     }
     public bool    add(Object o){
         version(Tango){
@@ -45,8 +58,11 @@
         return add(stringcast(o));
     }
     public bool    addAll(Collection c){
-        implMissing( __FILE__, __LINE__ );
-        return false;
+        bool res = false;
+        foreach( o; c ){
+            res |= add(o);
+        }
+        return res;
     }
     public void   clear(){
         version(Tango){
--- a/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.d	Sun Apr 12 12:27:13 2009 +0200
+++ b/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.d	Mon Apr 13 13:58:00 2009 +0200
@@ -58,7 +58,7 @@
     }
 
     void openServices() {
-        implMissing(__FILE__,__LINE__);
+        //FIXME implMissing(__FILE__,__LINE__);
 //         BundleContext context = JobActivator.getContext();
 //         if (context is null) {
 //             if (JobManager.DEBUG)
@@ -74,7 +74,7 @@
     }
 
     void closeServices() {
-        implMissing(__FILE__,__LINE__);
+        //FIXME implMissing(__FILE__,__LINE__);
 //         if (debugTracker !is null) {
 //             debugTracker.close();
 //             debugTracker = null;
@@ -86,7 +86,7 @@
     }
 
     public bool getBooleanDebugOption(String option, bool defaultValue) {
-        implMissing(__FILE__,__LINE__);
+        //FIXME implMissing(__FILE__,__LINE__);
         return false;
 //         if (debugTracker is null) {
 //             if (JobManager.DEBUG)
@@ -107,7 +107,7 @@
      * <code>null</code> if the bundle could not be determined.
      */
     public String getBundleId(Object object) {
-        implMissing(__FILE__,__LINE__);
+        //FIXME implMissing(__FILE__,__LINE__);
 //         if (bundleTracker is null) {
 //             if (JobManager.DEBUG)
 //                 JobMessages.message("Bundle tracker is not set"); //$NON-NLS-1$
@@ -133,8 +133,8 @@
      * and <code>false</code> otherwise.
      */
     bool useDaemonThreads() {
-        implMissing(__FILE__,__LINE__);
-        return false;
+        //FIXME implMissing(__FILE__,__LINE__);
+        return true;
 //         BundleContext context = JobActivator.getContext();
 //         if (context is null) {
 //             //we are running stand-alone, so consult global system property
--- a/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.d	Sun Apr 12 12:27:13 2009 +0200
+++ b/org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.d	Mon Apr 13 13:58:00 2009 +0200
@@ -37,10 +37,8 @@
      */
     public bool acquire(long delay) {
         synchronized(mutex){
-            implMissing( __FILE__, __LINE__ );
-// SWT
-//         if (Thread.interrupted())
-//             throw new InterruptedException();
+            if (Thread.interrupted())
+                throw new InterruptedException();
             long start = System.currentTimeMillis();
             long timeLeft = delay;
             while (true) {