1 
2 /* Compiler implementation of the D programming language
3  * Copyright (C) 2015-2021 by The D Language Foundation, All Rights Reserved
4  * written by Michel Fortin
5  * http://www.digitalmars.com
6  * Distributed under the Boost Software License, Version 1.0.
7  * http://www.boost.org/LICENSE_1_0.txt
8  * https://github.com/D-Programming-Language/dmd/blob/master/src/objc_stubs.c
9  */
10 
11 #include "objc.h"
12 #include "aggregate.h"
13 #include "scope.h"
14 
15 class FuncDeclaration;
16 
17 // MARK: ObjcSelector
18 
ObjcSelector(const char *,size_t,size_t)19 ObjcSelector::ObjcSelector(const char *, size_t, size_t)
20 {
21     printf("Should never be called when D_OBJC is false\n");
22     assert(0);
23 }
24 
lookup(const char *)25 ObjcSelector *ObjcSelector::lookup(const char *)
26 {
27     printf("Should never be called when D_OBJC is false\n");
28     assert(0);
29     return NULL;
30 }
31 
lookup(const char *,size_t,size_t)32 ObjcSelector *ObjcSelector::lookup(const char *, size_t, size_t)
33 {
34     printf("Should never be called when D_OBJC is false\n");
35     assert(0);
36     return NULL;
37 }
38 
create(FuncDeclaration *)39 ObjcSelector *ObjcSelector::create(FuncDeclaration *)
40 {
41     printf("Should never be called when D_OBJC is false\n");
42     assert(0);
43     return NULL;
44 }
45 
46 class UnsupportedObjc : public Objc
47 {
setObjc(ClassDeclaration * cd)48     void setObjc(ClassDeclaration *cd)
49     {
50         cd->error("Objective-C classes not supported");
51     }
52 
setObjc(InterfaceDeclaration * id)53     void setObjc(InterfaceDeclaration *id)
54     {
55         id->error("Objective-C interfaces not supported");
56     }
57 
setSelector(FuncDeclaration *,Scope *)58     void setSelector(FuncDeclaration *, Scope *)
59     {
60         // noop
61     }
62 
validateSelector(FuncDeclaration *)63     void validateSelector(FuncDeclaration *)
64     {
65         // noop
66     }
67 
checkLinkage(FuncDeclaration *)68     void checkLinkage(FuncDeclaration *)
69     {
70         // noop
71     }
72 };
73 
74 static Objc *_objc;
75 
objc()76 Objc *objc()
77 {
78     return _objc;
79 }
80 
_init()81 void Objc::_init()
82 {
83     _objc = new UnsupportedObjc();
84 }
85