瀏覽代碼

LibCore: Fix errors when compiling LibCore using clang instead of gcc

Stefano Cristiano 5 年之前
父節點
當前提交
aab412bd85
共有 3 個文件被更改,包括 7 次插入2 次删除
  1. 2 1
      Libraries/LibCore/CEventLoop.cpp
  2. 1 1
      Libraries/LibCore/CIODevice.h
  3. 4 0
      Libraries/LibCore/CObject.h

+ 2 - 1
Libraries/LibCore/CEventLoop.cpp

@@ -241,8 +241,9 @@ void CEventLoop::pump(WaitMode mode)
 
 
     for (int i = 0; i < events.size(); ++i) {
     for (int i = 0; i < events.size(); ++i) {
         auto& queued_event = events.at(i);
         auto& queued_event = events.at(i);
+#ifndef __clang__
         ASSERT(queued_event.event);
         ASSERT(queued_event.event);
-
+#endif
         auto* receiver = queued_event.receiver.ptr();
         auto* receiver = queued_event.receiver.ptr();
         auto& event = *queued_event.event;
         auto& event = *queued_event.event;
 #ifdef CEVENTLOOP_DEBUG
 #ifdef CEVENTLOOP_DEBUG

+ 1 - 1
Libraries/LibCore/CIODevice.h

@@ -5,7 +5,7 @@
 #include <LibCore/CObject.h>
 #include <LibCore/CObject.h>
 
 
 class CIODevice : public CObject {
 class CIODevice : public CObject {
-    C_OBJECT(CIODevice)
+    C_OBJECT_ABSTRACT(CIODevice)
 public:
 public:
     enum OpenMode {
     enum OpenMode {
         NotOpen = 0,
         NotOpen = 0,

+ 4 - 0
Libraries/LibCore/CObject.h

@@ -26,6 +26,10 @@ public:                                                                \
     {                                                                  \
     {                                                                  \
         return adopt(*new klass(forward<Args>(args)...));              \
         return adopt(*new klass(forward<Args>(args)...));              \
     }
     }
+    
+#define C_OBJECT_ABSTRACT(klass)                                       \
+public:                                                                \
+    virtual const char* class_name() const override { return #klass; } 
 
 
 class CObject
 class CObject
     : public RefCounted<CObject>
     : public RefCounted<CObject>