summaryrefslogtreecommitdiffstats
path: root/WebCore/html/FileThreadTask.h
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2010-08-04 11:41:34 +0100
committerSteve Block <steveblock@google.com>2010-08-09 12:04:44 +0100
commitdb14019a23d96bc8a444b6576a5da8bd1cfbc8b0 (patch)
tree9f793c5b0f5e1f2aca8247158920e2c4bf962bbf /WebCore/html/FileThreadTask.h
parentbf916837aa84f1e4b00e6ed6268516c2acd27545 (diff)
downloadexternal_webkit-db14019a23d96bc8a444b6576a5da8bd1cfbc8b0.zip
external_webkit-db14019a23d96bc8a444b6576a5da8bd1cfbc8b0.tar.gz
external_webkit-db14019a23d96bc8a444b6576a5da8bd1cfbc8b0.tar.bz2
Merge WebKit at r64523 : Initial merge by git.
Change-Id: Ibb796c6802e757b1d9b40f58205cfbe4da95fcd4
Diffstat (limited to 'WebCore/html/FileThreadTask.h')
-rw-r--r--WebCore/html/FileThreadTask.h134
1 files changed, 58 insertions, 76 deletions
diff --git a/WebCore/html/FileThreadTask.h b/WebCore/html/FileThreadTask.h
index de11798..09b647f 100644
--- a/WebCore/html/FileThreadTask.h
+++ b/WebCore/html/FileThreadTask.h
@@ -32,73 +32,55 @@
#define FileThreadTask_h
#include "CrossThreadCopier.h"
+#include "CrossThreadTask.h"
#include "FileThread.h"
-#include <memory>
#include <wtf/PassOwnPtr.h>
#include <wtf/PassRefPtr.h>
-#include <wtf/TypeTraits.h>
namespace WebCore {
-// Traits for the Task.
-template<typename T> struct FileThreadTaskTraits {
- typedef const T& ParamType;
-};
-
-template<typename T> struct FileThreadTaskTraits<T*> {
- typedef T* ParamType;
-};
-
-template<typename T> struct FileThreadTaskTraits<PassRefPtr<T> > {
- typedef PassRefPtr<T> ParamType;
-};
-
-template<typename T> struct FileThreadTaskTraits<PassOwnPtr<T> > {
- typedef PassOwnPtr<T> ParamType;
-};
-
-template<typename R>
+template<typename R, typename T>
class FileThreadTask0 : public FileThread::Task {
public:
- typedef R (FileStream::*Method)();
- typedef FileThreadTask0<R> FileThreadTask;
+ typedef R (T::*Method)();
+ typedef FileThreadTask0<R, T> FileThreadTaskImpl;
- static PassOwnPtr<FileThreadTask> create(FileStream* stream, Method method)
+ static PassOwnPtr<FileThreadTaskImpl> create(T* instance, Method method)
{
- return new FileThreadTask(stream, method);
+ return new FileThreadTaskImpl(instance, method);
}
private:
- FileThreadTask0(FileStream* stream, Method method)
- : FileThread::Task(stream)
+ FileThreadTask0(T* instance, Method method)
+ : FileThread::Task(instance)
, m_method(method)
{
}
virtual void performTask()
{
- (*stream().*m_method)();
+ (*static_cast<T*>(instance()).*m_method)();
}
private:
Method m_method;
};
-template<typename R, typename P1, typename MP1>
+template<typename R, typename T, typename P1, typename MP1>
class FileThreadTask1 : public FileThread::Task {
public:
- typedef R (FileStream::*Method)(MP1);
- typedef FileThreadTask1<R, P1, MP1> FileThreadTask;
- typedef typename FileThreadTaskTraits<P1>::ParamType Param1;
+ typedef R (T::*Method)(MP1);
+ typedef FileThreadTask1<R, T, P1, MP1> FileThreadTaskImpl;
+ typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
- static PassOwnPtr<FileThreadTask> create(FileStream* stream, Method method, Param1 parameter1)
+ static PassOwnPtr<FileThreadTaskImpl> create(T* instance, Method method, Param1 parameter1)
{
- return new FileThreadTask(stream, method, parameter1);
+ return new FileThreadTaskImpl(instance, method, parameter1);
}
private:
- FileThreadTask1(FileStream* stream, Method method, Param1 parameter1)
- : FileThread::Task(stream)
+ FileThreadTask1(T* instance, Method method, Param1 parameter1)
+ : FileThread::Task(instance)
, m_method(method)
, m_parameter1(parameter1)
{
@@ -106,7 +88,7 @@ private:
virtual void performTask()
{
- (*stream().*m_method)(m_parameter1);
+ (*static_cast<T*>(instance()).*m_method)(m_parameter1);
}
private:
@@ -114,22 +96,22 @@ private:
P1 m_parameter1;
};
-template<typename R, typename P1, typename MP1, typename P2, typename MP2>
+template<typename R, typename T, typename P1, typename MP1, typename P2, typename MP2>
class FileThreadTask2 : public FileThread::Task {
public:
- typedef R (FileStream::*Method)(MP1, MP2);
- typedef FileThreadTask2<R, P1, MP1, P2, MP2> FileThreadTask;
- typedef typename FileThreadTaskTraits<P1>::ParamType Param1;
- typedef typename FileThreadTaskTraits<P2>::ParamType Param2;
+ typedef R (T::*Method)(MP1, MP2);
+ typedef FileThreadTask2<R, T, P1, MP1, P2, MP2> FileThreadTaskImpl;
+ typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
+ typedef typename CrossThreadTaskTraits<P2>::ParamType Param2;
- static PassOwnPtr<FileThreadTask> create(FileStream* stream, Method method, Param1 parameter1, Param2 parameter2)
+ static PassOwnPtr<FileThreadTaskImpl> create(T* instance, Method method, Param1 parameter1, Param2 parameter2)
{
- return new FileThreadTask(stream, method, parameter1, parameter2);
+ return new FileThreadTaskImpl(instance, method, parameter1, parameter2);
}
private:
- FileThreadTask2(FileStream* stream, Method method, Param1 parameter1, Param2 parameter2)
- : FileThread::Task(stream)
+ FileThreadTask2(T* instance, Method method, Param1 parameter1, Param2 parameter2)
+ : FileThread::Task(instance)
, m_method(method)
, m_parameter1(parameter1)
, m_parameter2(parameter2)
@@ -138,7 +120,7 @@ private:
virtual void performTask()
{
- (*stream().*m_method)(m_parameter1, m_parameter2);
+ (*static_cast<T*>(instance()).*m_method)(m_parameter1, m_parameter2);
}
private:
@@ -147,23 +129,23 @@ private:
P2 m_parameter2;
};
-template<typename R, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3>
+template<typename R, typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3>
class FileThreadTask3 : public FileThread::Task {
public:
- typedef R (FileStream::*Method)(MP1, MP2, MP3);
- typedef FileThreadTask3<R, P1, MP1, P2, MP2, P3, MP3> FileThreadTask;
- typedef typename FileThreadTaskTraits<P1>::ParamType Param1;
- typedef typename FileThreadTaskTraits<P2>::ParamType Param2;
- typedef typename FileThreadTaskTraits<P3>::ParamType Param3;
+ typedef void (T::*Method)(MP1, MP2, MP3);
+ typedef FileThreadTask3<R, T, P1, MP1, P2, MP2, P3, MP3> FileThreadTaskImpl;
+ typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
+ typedef typename CrossThreadTaskTraits<P2>::ParamType Param2;
+ typedef typename CrossThreadTaskTraits<P3>::ParamType Param3;
- static PassOwnPtr<FileThreadTask> create(FileStream* stream, Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3)
+ static PassOwnPtr<FileThreadTaskImpl> create(T* instance, Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3)
{
- return new FileThreadTask(stream, method, parameter1, parameter2, parameter3);
+ return new FileThreadTaskImpl(instance, method, parameter1, parameter2, parameter3);
}
private:
- FileThreadTask3(FileStream* stream, Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3)
- : FileThread::Task(stream)
+ FileThreadTask3(T* instance, Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3)
+ : FileThread::Task(instance)
, m_method(method)
, m_parameter1(parameter1)
, m_parameter2(parameter2)
@@ -173,7 +155,7 @@ private:
virtual void performTask()
{
- (*stream().*m_method)(m_parameter1, m_parameter2, m_parameter3);
+ (*static_cast<T*>(instance()).*m_method)(m_parameter1, m_parameter2, m_parameter3);
}
private:
@@ -183,56 +165,56 @@ private:
P3 m_parameter3;
};
-template<typename R>
+template<typename R, typename T>
PassOwnPtr<FileThread::Task> createFileThreadTask(
- FileStream* const callee,
- R (FileStream::*method)());
+ T* const callee,
+ R (T::*method)());
-template<typename R>
+template<typename R, typename T>
PassOwnPtr<FileThread::Task> createFileThreadTask(
- FileStream* const callee,
- R (FileStream::*method)())
+ T* const callee,
+ R (T::*method)())
{
- return FileThreadTask0<R>::create(
+ return FileThreadTask0<R, T>::create(
callee,
method);
}
-template<typename R, typename P1, typename MP1>
+template<typename R, typename T, typename P1, typename MP1>
PassOwnPtr<FileThread::Task> createFileThreadTask(
- FileStream* const callee,
- R (FileStream::*method)(MP1),
+ T* const callee,
+ R (T::*method)(MP1),
const P1& parameter1)
{
- return FileThreadTask1<R, typename CrossThreadCopier<P1>::Type, MP1>::create(
+ return FileThreadTask1<R, T, typename CrossThreadCopier<P1>::Type, MP1>::create(
callee,
method,
CrossThreadCopier<P1>::copy(parameter1));
}
-template<typename R, typename P1, typename MP1, typename P2, typename MP2>
+template<typename R, typename T, typename P1, typename MP1, typename P2, typename MP2>
PassOwnPtr<FileThread::Task> createFileThreadTask(
- FileStream* const callee,
- R (FileStream::*method)(MP1, MP2),
+ T* const callee,
+ R (T::*method)(MP1, MP2),
const P1& parameter1,
const P2& parameter2)
{
- return FileThreadTask2<R, typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2>::create(
+ return FileThreadTask2<R, T, typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2>::create(
callee,
method,
CrossThreadCopier<P1>::copy(parameter1),
CrossThreadCopier<P2>::copy(parameter2));
}
-template<typename R, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3>
+template<typename R, typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3>
PassOwnPtr<FileThread::Task> createFileThreadTask(
- FileStream* const callee,
- R (FileStream::*method)(MP1, MP2, MP3),
+ T* const callee,
+ R (T::*method)(MP1, MP2, MP3),
const P1& parameter1,
const P2& parameter2,
const P3& parameter3)
{
- return FileThreadTask3<R, typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2, typename CrossThreadCopier<P3>::Type, MP3>::create(
+ return FileThreadTask3<R, T, typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2, typename CrossThreadCopier<P3>::Type, MP3>::create(
callee,
method,
CrossThreadCopier<P1>::copy(parameter1),