Skip to content

Commit

Permalink
Merge pull request #4890 from yebblies/impcnvtabd
Browse files Browse the repository at this point in the history
[DDMD] Generate D version of impcnvtab from impcnvgen
  • Loading branch information
WalterBright committed Aug 16, 2015
2 parents dadb361 + e453e4a commit 0275a30
Show file tree
Hide file tree
Showing 4 changed files with 141 additions and 76 deletions.
179 changes: 129 additions & 50 deletions src/impcnvgen.c
Expand Up @@ -447,75 +447,154 @@ int main()

init();

FILE *fp = fopen("impcnvtab.c","wb");
{
FILE *fp = fopen("impcnvtab.c","wb");

fprintf(fp,"// This file is generated by impcnvgen.c\n");
fprintf(fp,"#include \"mtype.h\"\n");
fprintf(fp,"// This file is generated by impcnvgen.c\n");
fprintf(fp,"#include \"mtype.h\"\n");

fprintf(fp,"unsigned char impcnvResult[TMAX][TMAX] =\n{\n");
for (i = 0; i < TMAX; i++)
{
if (i)
fprintf(fp, ",");
fprintf(fp, "{");
for (j = 0; j < TMAX; j++)
fprintf(fp,"unsigned char impcnvResult[TMAX][TMAX] =\n{\n");
for (i = 0; i < TMAX; i++)
{
if (j)
if (i)
fprintf(fp, ",");
fprintf(fp, "%d",impcnvResultTab[i][j]);
fprintf(fp, "{");
for (j = 0; j < TMAX; j++)
{
if (j)
fprintf(fp, ",");
fprintf(fp, "%d",impcnvResultTab[i][j]);
}
fprintf(fp, "}\n");
}
fprintf(fp, "}\n");
}
fprintf(fp,"};\n");
fprintf(fp,"};\n");

fprintf(fp,"unsigned char impcnvType1[TMAX][TMAX] =\n{\n");
for (i = 0; i < TMAX; i++)
{
if (i)
fprintf(fp, ",");
fprintf(fp, "{");
for (j = 0; j < TMAX; j++)
fprintf(fp,"unsigned char impcnvType1[TMAX][TMAX] =\n{\n");
for (i = 0; i < TMAX; i++)
{
if (i)
fprintf(fp, ",");
fprintf(fp, "{");
for (j = 0; j < TMAX; j++)
{
if (j)
fprintf(fp, ",");
fprintf(fp, "%d",impcnvType1Tab[i][j]);
}
fprintf(fp, "}\n");
}
fprintf(fp,"};\n");

fprintf(fp,"unsigned char impcnvType2[TMAX][TMAX] =\n{\n");
for (i = 0; i < TMAX; i++)
{
if (j)
if (i)
fprintf(fp, ",");
fprintf(fp, "%d",impcnvType1Tab[i][j]);
fprintf(fp, "{");
for (j = 0; j < TMAX; j++)
{
if (j)
fprintf(fp, ",");
fprintf(fp, "%d",impcnvType2Tab[i][j]);
}
fprintf(fp, "}\n");
}
fprintf(fp, "}\n");
}
fprintf(fp,"};\n");
fprintf(fp,"};\n");

fprintf(fp,"unsigned char impcnvType2[TMAX][TMAX] =\n{\n");
for (i = 0; i < TMAX; i++)
{
if (i)
fprintf(fp, ",");
fprintf(fp, "{");
for (j = 0; j < TMAX; j++)
fprintf(fp,"unsigned char impcnvWarn[TMAX][TMAX] =\n{\n");
for (i = 0; i < TMAX; i++)
{
if (j)
if (i)
fprintf(fp, ",");
fprintf(fp, "%d",impcnvType2Tab[i][j]);
fprintf(fp, "{");
for (j = 0; j < TMAX; j++)
{
if (j)
fprintf(fp, ",");
fprintf(fp, "%d",impcnvWarnTab[i][j]);
}
fprintf(fp, "}\n");
}
fprintf(fp, "}\n");
fprintf(fp,"};\n");

fclose(fp);
}
fprintf(fp,"};\n");

fprintf(fp,"unsigned char impcnvWarn[TMAX][TMAX] =\n{\n");
for (i = 0; i < TMAX; i++)
{
if (i)
fprintf(fp, ",");
fprintf(fp, "{");
for (j = 0; j < TMAX; j++)
FILE *fp = fopen("impcnvtab.d", "wb");

fprintf(fp, "// This file is generated by impcnvgen.c\n");
fprintf(fp, "module ddmd.impcnvtab;\n");
fprintf(fp, "\n");
fprintf(fp, "import ddmd.mtype;\n");
fprintf(fp, "\n");

fprintf(fp, "extern (C++) __gshared ubyte[TMAX][TMAX] impcnvResult =\n[\n");
for (i = 0; i < TMAX; i++)
{
if (j)
fprintf(fp, ",");
fprintf(fp, "%d",impcnvWarnTab[i][j]);
if (i)
fprintf(fp, ",\n");
fprintf(fp, " [");
for (j = 0; j < TMAX; j++)
{
if (j)
fprintf(fp, ",");
fprintf(fp, "%d", impcnvResultTab[i][j]);
}
fprintf(fp, "]");
}
fprintf(fp, "\n];\n");

fprintf(fp, "extern (C++) __gshared ubyte[TMAX][TMAX] impcnvType1 =\n[\n");
for (i = 0; i < TMAX; i++)
{
if (i)
fprintf(fp, ",\n");
fprintf(fp, " [");
for (j = 0; j < TMAX; j++)
{
if (j)
fprintf(fp, ",");
fprintf(fp, "%d", impcnvType1Tab[i][j]);
}
fprintf(fp, "]");
}
fprintf(fp, "\n];\n");

fprintf(fp, "extern (C++) __gshared ubyte[TMAX][TMAX] impcnvType2 =\n[\n");
for (i = 0; i < TMAX; i++)
{
if (i)
fprintf(fp, ",\n");
fprintf(fp, " [");
for (j = 0; j < TMAX; j++)
{
if (j)
fprintf(fp, ",");
fprintf(fp, "%d",impcnvType2Tab[i][j]);
}
fprintf(fp, "]");
}
fprintf(fp, "}\n");
fprintf(fp,"\n];\n");

fprintf(fp,"extern (C++) __gshared ubyte[TMAX][TMAX] impcnvWarn =\n[\n");
for (i = 0; i < TMAX; i++)
{
if (i)
fprintf(fp, ",\n");
fprintf(fp, " [");
for (j = 0; j < TMAX; j++)
{
if (j)
fprintf(fp, ",");
fprintf(fp, "%d", impcnvWarnTab[i][j]);
}
fprintf(fp, "]");
}
fprintf(fp, "\n];\n");

fclose(fp);
}
fprintf(fp,"};\n");

fclose(fp);
return EXIT_SUCCESS;
}
16 changes: 1 addition & 15 deletions src/magicport.json
Expand Up @@ -16,7 +16,7 @@
"arrayop.c", "aliasthis.h", "aliasthis.c", "json.h", "json.c",
"unittests.c", "imphint.c", "argtypes.c", "apply.c", "sapply.c", "sideeffect.c",
"ctfe.h", "canthrow.c", "target.c", "target.h",
"impcnvtab.c", "visitor.h", "lib.h", "nogc.c", "nspace.h", "nspace.c",
"visitor.h", "lib.h", "nogc.c", "nspace.h", "nspace.c",
"errors.c", "errors.h",
"tokens.c", "tokens.h",
"globals.c", "globals.h",
Expand Down Expand Up @@ -3246,20 +3246,6 @@
[
"function response_expand"
]
},
{
"module" : "impcnvtab",
"package" : "",
"imports" : [
"mtype"
],
"members" :
[
"variable impcnvResult",
"variable impcnvType1",
"variable impcnvType2",
"variable impcnvWarn"
]
}
],
"basicTypes" :
Expand Down
10 changes: 5 additions & 5 deletions src/posix.mak
Expand Up @@ -345,7 +345,7 @@ endif

clean:
rm -f $(DMD_OBJS) $(ROOT_OBJS) $(GLUE_OBJS) $(BACK_OBJS) dmd optab.o id.o impcnvgen idgen id.c id.h \
impcnvtab.c optabgen debtab.c optab.c cdxxx.c elxxx.c fltables.c \
impcnvtab.d id.d impcnvtab.c optabgen debtab.c optab.c cdxxx.c elxxx.c fltables.c \
tytab.c verstr.h core \
*.cov *.deps *.gcda *.gcno *.a \
$(GENSRC) $(MAGICPORT)
Expand Down Expand Up @@ -398,7 +398,7 @@ idgen: idgen.d $(HOST_DC)

######### impcnvgen generates some source

impcnvtab_output = impcnvtab.c
impcnvtab_output = impcnvtab.c impcnvtab.d
$(impcnvtab_output) : impcnvgen

impcnvgen : mtype.h impcnvgen.c
Expand Down Expand Up @@ -619,7 +619,7 @@ GENSRC=access.d aggregate.d aliasthis.d apply.d \
target.d dtemplate.d traits.d dunittest.d \
utf.d dversion.d visitor.d lib.d \
nogc.d nspace.d errors.d tokens.d \
globals.d escape.d impcnvtab.d \
globals.d escape.d \
$(ROOT)/aav.d $(ROOT)/outbuffer.d $(ROOT)/stringtable.d \
$(ROOT)/file.d $(ROOT)/filename.d $(ROOT)/speller.d \
$(ROOT)/man.d $(ROOT)/response.d
Expand All @@ -629,15 +629,15 @@ MANUALSRC= \
entity.d backend.d \
$(ROOT)/array.d $(ROOT)/longdouble.d \
$(ROOT)/rootobject.d $(ROOT)/port.d \
$(ROOT)/rmem.d id.d
$(ROOT)/rmem.d id.d impcnvtab.d

ifeq ($(D_OBJC),1)
GENSRC += objc.d
else
MANUALSRC += objc.di objc_stubs.d
endif

mars.d : $(SRC) $(ROOT_SRC) magicport.json $(MAGICPORT) id.c impcnvtab.c
mars.d : $(SRC) $(ROOT_SRC) magicport.json $(MAGICPORT)
$(MAGICPORT) . .

DSRC= $(GENSRC) $(MANUALSRC)
Expand Down
12 changes: 6 additions & 6 deletions src/win32.mak
Expand Up @@ -344,7 +344,7 @@ GENSRC=access.d aggregate.d aliasthis.d apply.d \
target.d dtemplate.d traits.d dunittest.d \
utf.d dversion.d visitor.d lib.d \
nogc.d nspace.d errors.d tokens.d \
globals.d escape.d impcnvtab.d \
globals.d escape.d \
$(ROOT)\aav.d $(ROOT)\outbuffer.d $(ROOT)\stringtable.d \
$(ROOT)\file.d $(ROOT)\filename.d $(ROOT)\speller.d \
$(ROOT)\man.d $(ROOT)\response.d
Expand All @@ -354,9 +354,9 @@ MANUALSRC= \
entity.d backend.d objc.di objc_stubs.d \
$(ROOT)\array.d $(ROOT)\longdouble.d \
$(ROOT)\rootobject.d $(ROOT)\port.d \
$(ROOT)\rmem.d id.d
$(ROOT)\rmem.d id.d impcnvtab.d

$(GENSRC) : $(SRCS) $(ROOTSRC) magicport.json $(MAGICPORT) id.c impcnvtab.c
$(GENSRC) : $(SRCS) $(ROOTSRC) magicport.json $(MAGICPORT)
$(MAGICPORT) . .

DSRC= $(GENSRC) $(MANUALSRC)
Expand All @@ -370,8 +370,8 @@ clean:
$(DEL) *.obj *.lib *.map
$(DEL) msgs.h msgs.c
$(DEL) elxxx.c cdxxx.c optab.c debtab.c fltables.c tytab.c
$(DEL) impcnvtab.c impcnvgen.exe optabgen.exe
$(DEL) id.h id.c
$(DEL) impcnvtab.d impcnvtab.c impcnvgen.exe optabgen.exe
$(DEL) id.h id.c id.d
$(DEL) verstr.h
$(DEL) $(GENSRC)
$(DEL) $(MAGICPORT) $(MAGICPORTDIR)\*.obj
Expand Down Expand Up @@ -447,7 +447,7 @@ elxxx.c cdxxx.c optab.c debtab.c fltables.c tytab.c : \
$(CC) -cpp -ooptabgen.exe $C\optabgen -DMARS -DDM_TARGET_CPU_X86=1 -I$(TK)
.\optabgen.exe

impcnvtab.c : impcnvgen.c
impcnvtab.c impcnvtab.d : impcnvgen.c
$(CC) -I$(ROOT) -cpp -DDM_TARGET_CPU_X86=1 impcnvgen
.\impcnvgen.exe

Expand Down

0 comments on commit 0275a30

Please sign in to comment.