diff --git a/src/objc.di b/src/objc.di deleted file mode 100644 index 7703830867..0000000000 --- a/src/objc.di +++ /dev/null @@ -1,59 +0,0 @@ -// Compiler implementation of the D programming language -// Copyright (c) 1999-2015 by Digital Mars -// All Rights Reserved -// written by Walter Bright -// http://www.digitalmars.com -// Distributed under the Boost Software License, Version 1.0. -// http://www.boost.org/LICENSE_1_0.txt - -module ddmd.objc; - -import core.stdc.stdio; -import ddmd.dclass, ddmd.dscope, ddmd.dstruct, ddmd.func, ddmd.globals, ddmd.id, ddmd.root.stringtable; - -class ObjcSelector -{ -public: - extern (C++) static __gshared StringTable stringtable; - extern (C++) static __gshared StringTable vTableDispatchSelectors; - extern (C++) static __gshared int incnum; - const(char)* stringvalue; - size_t stringlen; - size_t paramCount; - - static void _init(); - - // MARK: ObjcSelector - extern (D) this(const(char)* sv, size_t len, size_t pcount); - static ObjcSelector lookup(const(char)* s); - static ObjcSelector lookup(const(char)* s, size_t len, size_t pcount); - static ObjcSelector create(FuncDeclaration fdecl); -} - -struct Objc_ClassDeclaration -{ - // true if this is an Objective-C class/interface - bool objc; - - // MARK: Objc_ClassDeclaration - extern (C++) bool isInterface(); -} - -struct Objc_FuncDeclaration -{ - FuncDeclaration fdecl; - // Objective-C method selector (member function only) - ObjcSelector selector; -} - -// MARK: semantic -extern (C++) void objc_ClassDeclaration_semantic_PASSinit_LINKobjc(ClassDeclaration cd); -extern (C++) void objc_InterfaceDeclaration_semantic_objcExtern(InterfaceDeclaration id, Scope* sc); - -// MARK: semantic -extern (C++) void objc_FuncDeclaration_semantic_setSelector(FuncDeclaration fd, Scope* sc); -extern (C++) bool objc_isUdaSelector(StructDeclaration sd); -extern (C++) void objc_FuncDeclaration_semantic_validateSelector(FuncDeclaration fd); -extern (C++) void objc_FuncDeclaration_semantic_checkLinkage(FuncDeclaration fd); -extern (C++) void objc_tryMain_dObjc(); -extern (C++) void objc_tryMain_init(); diff --git a/src/objc_stubs.d b/src/objc_stubs.d index 6e00ba7bcb..7ba56cd38c 100644 --- a/src/objc_stubs.d +++ b/src/objc_stubs.d @@ -6,13 +6,26 @@ // Distributed under the Boost Software License, Version 1.0. // http://www.boost.org/LICENSE_1_0.txt -module ddmd.objc_stubs; +module ddmd.objc; import core.stdc.stdio; import ddmd.dclass, ddmd.dscope, ddmd.dstruct, ddmd.func, ddmd.globals, ddmd.id, ddmd.root.stringtable; -class ObjcSelector +struct ObjcSelector { + extern (C++) static __gshared StringTable stringtable; + extern (C++) static __gshared StringTable vTableDispatchSelectors; + extern (C++) static __gshared int incnum; + const(char)* stringvalue; + size_t stringlen; + size_t paramCount; + + static void _init() + { + printf("Should never be called when D_OBJC is false\n"); + assert(0); + } + // MARK: ObjcSelector extern (D) this(const(char)* sv, size_t len, size_t pcount) { @@ -24,26 +37,26 @@ class ObjcSelector { printf("Should never be called when D_OBJC is false\n"); assert(0); - return null; } static ObjcSelector lookup(const(char)* s, size_t len, size_t pcount) { printf("Should never be called when D_OBJC is false\n"); assert(0); - return null; } static ObjcSelector create(FuncDeclaration fdecl) { printf("Should never be called when D_OBJC is false\n"); assert(0); - return null; } } struct Objc_ClassDeclaration { + // true if this is an Objective-C class/interface + bool objc; + // MARK: Objc_ClassDeclaration extern (C++) bool isInterface() { @@ -51,6 +64,18 @@ struct Objc_ClassDeclaration } } +struct Objc_FuncDeclaration +{ + FuncDeclaration fdecl; + // Objective-C method selector (member function only) + ObjcSelector selector; + + extern (D) this(FuncDeclaration fdecl) + { + assert(0); + } +} + extern (C++) void objc_ClassDeclaration_semantic_PASSinit_LINKobjc(ClassDeclaration cd) { cd.error("Objective-C classes not supported"); diff --git a/src/posix.mak b/src/posix.mak index acd56b2af7..cfd1074840 100644 --- a/src/posix.mak +++ b/src/posix.mak @@ -634,7 +634,7 @@ MANUALSRC= \ ifeq ($(D_OBJC),1) GENSRC += objc.d else - MANUALSRC += objc.di objc_stubs.d + MANUALSRC += objc_stubs.d endif mars.d : $(SRC) $(ROOT_SRC) magicport.json $(MAGICPORT) diff --git a/src/win32.mak b/src/win32.mak index 17686b06b5..106b9eaa0c 100644 --- a/src/win32.mak +++ b/src/win32.mak @@ -351,7 +351,7 @@ GENSRC=access.d aggregate.d aliasthis.d apply.d \ MANUALSRC= \ intrange.d complex.d \ - entity.d backend.d objc.di objc_stubs.d \ + entity.d backend.d objc_stubs.d \ $(ROOT)\array.d $(ROOT)\longdouble.d \ $(ROOT)\rootobject.d $(ROOT)\port.d \ $(ROOT)\rmem.d id.d impcnvtab.d