Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1222 - in trunk: Core/Math Interface


Chronological Thread 
  • From: abe@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r1222 - in trunk: Core/Math Interface
  • Date: Fri, 13 Oct 2006 19:17:25 -0600 (MDT)

Author: abe
Date: Fri Oct 13 19:17:24 2006
New Revision: 1222

Modified:
   trunk/Core/Math/SSEDefs.h
   trunk/Interface/CallbackHelpers.h
Log:

Added missing callback class types. Added wrappers for missing cast operators.

M    Core/Math/SSEDefs.h
M    Interface/CallbackHelpers.h


Modified: trunk/Core/Math/SSEDefs.h
==============================================================================
--- trunk/Core/Math/SSEDefs.h   (original)
+++ trunk/Core/Math/SSEDefs.h   Fri Oct 13 19:17:24 2006
@@ -89,6 +89,8 @@
   // Intel casting intrinsics.
   static inline __m128i _mm_castps_si128(__m128  val) { return (__m128i)val; 
}
   static inline __m128  _mm_castsi128_ps(__m128i val) { return (__m128) val; 
}
+  static inline __m128d _mm_castps_pd   (__m128  val) { return (__m128d)val; 
}
+  static inline __m128  _mm_castpd_ps   (__m128d val) { return (__m128) val; 
}
 #endif
   
     static const MANTA_ALIGN(16) sse_t _mm_eps = _mm_set_ps1(1e-5);

Modified: trunk/Interface/CallbackHelpers.h
==============================================================================
--- trunk/Interface/CallbackHelpers.h   (original)
+++ trunk/Interface/CallbackHelpers.h   Fri Oct 13 19:17:24 2006
@@ -658,6 +658,47 @@
     void (T::*pmf)(Data1, Data2, Data3, Data4);
   };
 
+  template<class T, typename Data1, typename Data2, typename Data3, typename 
Data4, typename Arg1>
+  class Callback_4Data_1Arg : public CallbackBase_4Data<Data1, Data2, Data3, 
Data4> {
+  public:
+    Callback_4Data_1Arg(T* ptr, void (T::*pmf)(Data1, Data2, Data3, Data4, 
Arg1), Arg1 arg1)
+      : ptr(ptr), pmf(pmf), arg1(arg1)
+    {
+    }
+    virtual ~Callback_4Data_1Arg()
+    {
+    }
+    virtual void call(Data1 data1, Data2 data2, Data3 data3, Data4 data4, 
Arg1 arg1)
+    {
+      (ptr->*pmf)(data1, data2, data3, data4, arg1);
+    }
+  private:
+    T* ptr;
+    void (T::*pmf)(Data1, Data2, Data3, Data4, Arg1);
+    Arg1 arg1;
+  };
+
+  template<class T, typename Data1, typename Data2, typename Data3, typename 
Data4, typename Arg1, typename Arg2>
+  class Callback_4Data_2Arg : public CallbackBase_4Data<Data1, Data2, Data3, 
Data4> {
+  public:
+    Callback_4Data_2Arg(T* ptr, void (T::*pmf)(Data1, Data2, Data3, Data4, 
Arg1), Arg1 arg1, Arg2 arg2)
+      : ptr(ptr), pmf(pmf), arg1(arg1), arg2(arg2)
+    {
+    }
+    virtual ~Callback_4Data_2Arg()
+    {
+    }
+    virtual void call(Data1 data1, Data2 data2, Data3 data3, Data4 data4, 
Arg1 arg1, Arg2 arg2)
+    {
+      (ptr->*pmf)(data1, data2, data3, data4, arg1, arg2);
+    }
+  private:
+    T* ptr;
+    void (T::*pmf)(Data1, Data2, Data3, Data4, Arg1, Arg2);
+    Arg1 arg1;
+    Arg2 arg2;
+  };  
+
   // 5 Data
   template<class T, typename Data1, typename Data2, typename Data3, typename 
Data4, typename Data5>
   class Callback_5Data_0Arg : public CallbackBase_5Data<Data1, Data2, Data3, 
Data4, Data5> {




  • [MANTA] r1222 - in trunk: Core/Math Interface, abe, 10/13/2006

Archive powered by MHonArc 2.6.16.

Top of page