# HG changeset patch # User Frank Benoit # Date 1239623880 -7200 # Node ID af948d4bbf8cf8e83fd975df79297f6d07dd727a # Parent f05e6e8b2f2dcebd7f0e1d59bf3c6e71f7aa409b Impls for core.jobs diff -r f05e6e8b2f2d -r af948d4bbf8c base/src/java/lang/Thread.d --- 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(){ diff -r f05e6e8b2f2d -r af948d4bbf8c base/src/java/util/HashSet.d --- 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){ diff -r f05e6e8b2f2d -r af948d4bbf8c org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/JobOSGiUtils.d --- 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 @@ * null 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 false 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 diff -r f05e6e8b2f2d -r af948d4bbf8c org.eclipse.core.jobs/src/org/eclipse/core/internal/jobs/Semaphore.d --- 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) {