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