mirror of
https://github.com/dlang/dmd.git
synced 2025-04-28 06:00:13 +03:00
Merge pull request #4893 from yebblies/objcstubs
Fix up objc stubs build
This commit is contained in:
commit
f195beb17e
4 changed files with 32 additions and 66 deletions
59
src/objc.di
59
src/objc.di
|
@ -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();
|
|
|
@ -6,13 +6,26 @@
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
// http://www.boost.org/LICENSE_1_0.txt
|
// http://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
module ddmd.objc_stubs;
|
module ddmd.objc;
|
||||||
|
|
||||||
import core.stdc.stdio;
|
import core.stdc.stdio;
|
||||||
import ddmd.dclass, ddmd.dscope, ddmd.dstruct, ddmd.func, ddmd.globals, ddmd.id, ddmd.root.stringtable;
|
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
|
// MARK: ObjcSelector
|
||||||
extern (D) this(const(char)* sv, size_t len, size_t pcount)
|
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");
|
printf("Should never be called when D_OBJC is false\n");
|
||||||
assert(0);
|
assert(0);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ObjcSelector lookup(const(char)* s, size_t len, size_t pcount)
|
static ObjcSelector lookup(const(char)* s, size_t len, size_t pcount)
|
||||||
{
|
{
|
||||||
printf("Should never be called when D_OBJC is false\n");
|
printf("Should never be called when D_OBJC is false\n");
|
||||||
assert(0);
|
assert(0);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ObjcSelector create(FuncDeclaration fdecl)
|
static ObjcSelector create(FuncDeclaration fdecl)
|
||||||
{
|
{
|
||||||
printf("Should never be called when D_OBJC is false\n");
|
printf("Should never be called when D_OBJC is false\n");
|
||||||
assert(0);
|
assert(0);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Objc_ClassDeclaration
|
struct Objc_ClassDeclaration
|
||||||
{
|
{
|
||||||
|
// true if this is an Objective-C class/interface
|
||||||
|
bool objc;
|
||||||
|
|
||||||
// MARK: Objc_ClassDeclaration
|
// MARK: Objc_ClassDeclaration
|
||||||
extern (C++) bool isInterface()
|
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)
|
extern (C++) void objc_ClassDeclaration_semantic_PASSinit_LINKobjc(ClassDeclaration cd)
|
||||||
{
|
{
|
||||||
cd.error("Objective-C classes not supported");
|
cd.error("Objective-C classes not supported");
|
||||||
|
|
|
@ -634,7 +634,7 @@ MANUALSRC= \
|
||||||
ifeq ($(D_OBJC),1)
|
ifeq ($(D_OBJC),1)
|
||||||
GENSRC += objc.d
|
GENSRC += objc.d
|
||||||
else
|
else
|
||||||
MANUALSRC += objc.di objc_stubs.d
|
MANUALSRC += objc_stubs.d
|
||||||
endif
|
endif
|
||||||
|
|
||||||
mars.d : $(SRC) $(ROOT_SRC) magicport.json $(MAGICPORT)
|
mars.d : $(SRC) $(ROOT_SRC) magicport.json $(MAGICPORT)
|
||||||
|
|
|
@ -351,7 +351,7 @@ GENSRC=access.d aggregate.d aliasthis.d apply.d \
|
||||||
|
|
||||||
MANUALSRC= \
|
MANUALSRC= \
|
||||||
intrange.d complex.d \
|
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)\array.d $(ROOT)\longdouble.d \
|
||||||
$(ROOT)\rootobject.d $(ROOT)\port.d \
|
$(ROOT)\rootobject.d $(ROOT)\port.d \
|
||||||
$(ROOT)\rmem.d id.d impcnvtab.d
|
$(ROOT)\rmem.d id.d impcnvtab.d
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue