Example #1
0
File: module.c Project: smunix/ldc
Module::Module(char *filename, Identifier *ident, int doDocComment, int doHdrGen)
        : Package(ident)
{
    FileName *srcfilename;

//    printf("Module::Module(filename = '%s', ident = '%s')\n", filename, ident->toChars());
    this->arg = filename;
    md = NULL;
    errors = 0;
    numlines = 0;
    members = NULL;
    isHtml = 0;
    isDocFile = 0;
    needmoduleinfo = 0;
#ifdef IN_GCC
    strictlyneedmoduleinfo = 0;
#endif
    selfimports = 0;
    insearch = 0;
    searchCacheIdent = NULL;
    searchCacheSymbol = NULL;
    searchCacheFlags = 0;
    semanticstarted = 0;
    semanticRun = 0;
    decldefs = NULL;
    vmoduleinfo = NULL;
#if IN_DMD
    massert = NULL;
    munittest = NULL;
    marray = NULL;
    sictor = NULL;
    sctor = NULL;
    sdtor = NULL;
    stest = NULL;
    sfilename = NULL;
#endif
    root = 0;
    importedFrom = NULL;
    srcfile = NULL;
    objfile = NULL;
    docfile = NULL;
    hdrfile = NULL;

    debuglevel = 0;
    debugids = NULL;
    debugidsNot = NULL;
    versionlevel = 0;
    versionids = NULL;
    versionidsNot = NULL;

    macrotable = NULL;
    escapetable = NULL;
    safe = FALSE;
#if IN_DMD
    doppelganger = 0;
    cov = NULL;
    covb = NULL;
#endif

    srcfilename = FileName::defaultExt(filename, global.mars_ext);
    if (!srcfilename->equalsExt(global.mars_ext) &&
        !srcfilename->equalsExt(global.hdr_ext) &&
        !srcfilename->equalsExt("dd"))
    {
        if (srcfilename->equalsExt("html") ||
            srcfilename->equalsExt("htm")  ||
            srcfilename->equalsExt("xhtml"))
            isHtml = 1;
        else
        {   error("source file name '%s' must have .%s extension", srcfilename->toChars(), global.mars_ext);
            fatal();
        }
    }
    srcfile = new File(srcfilename);

#if IN_LLVM
    // LDC
    llvmForceLogging = false;
    moduleInfoVar = NULL;
    moduleInfoType = llvm::StructType::create(llvm::getGlobalContext());
    this->doDocComment = doDocComment;
    this->doHdrGen = doHdrGen;
    this->isRoot = false;
    this->arrayfuncs = 0;
#endif
}
Example #2
0
Module::Module(char *filename, Identifier *ident, int doDocComment, int doHdrGen)
        : Package(ident)
{
    FileName *srcfilename;
    FileName *objfilename;
    FileName *symfilename;

//    printf("Module::Module(filename = '%s', ident = '%s')\n", filename, ident->toChars());
    this->arg = filename;
    md = NULL;
    errors = 0;
    numlines = 0;
    members = NULL;
    isHtml = 0;
    isDocFile = 0;
    needmoduleinfo = 0;
#ifdef IN_GCC
    strictlyneedmoduleinfo = 0;
#endif
    selfimports = 0;
    insearch = 0;
    searchCacheIdent = NULL;
    searchCacheSymbol = NULL;
    searchCacheFlags = 0;
    semanticstarted = 0;
    semanticRun = 0;
    decldefs = NULL;
    vmoduleinfo = NULL;
    massert = NULL;
    munittest = NULL;
    marray = NULL;
    sictor = NULL;
    sctor = NULL;
    sdtor = NULL;
    ssharedctor = NULL;
    sshareddtor = NULL;
    stest = NULL;
    sfilename = NULL;
    root = 0;
    importedFrom = NULL;
    srcfile = NULL;
    docfile = NULL;

    debuglevel = 0;
    debugids = NULL;
    debugidsNot = NULL;
    versionlevel = 0;
    versionids = NULL;
    versionidsNot = NULL;

    macrotable = NULL;
    escapetable = NULL;
    safe = FALSE;
    doppelganger = 0;
    cov = NULL;
    covb = NULL;

    nameoffset = 0;
    namelen = 0;

    srcfilename = FileName::defaultExt(filename, global.mars_ext);
    if (!srcfilename->equalsExt(global.mars_ext) &&
        !srcfilename->equalsExt(global.hdr_ext) &&
        !srcfilename->equalsExt("dd"))
    {
        if (srcfilename->equalsExt("html") ||
            srcfilename->equalsExt("htm")  ||
            srcfilename->equalsExt("xhtml"))
        {   if (!global.params.useDeprecated)
                error("html source files is deprecated %s", srcfilename->toChars());
            isHtml = 1;
        }
        else
        {   error("source file name '%s' must have .%s extension", srcfilename->toChars(), global.mars_ext);
            fatal();
        }
    }

    char *argobj;
    if (global.params.objname)
        argobj = global.params.objname;
#if 0
    else if (global.params.preservePaths)
        argobj = filename;
    else
        argobj = FileName::name(filename);
    if (!FileName::absolute(argobj))
    {
        argobj = FileName::combine(global.params.objdir, argobj);
    }
#else // Bugzilla 3547
    else
    {
        if (global.params.preservePaths)
            argobj = filename;
        else
            argobj = FileName::name(filename);
        if (!FileName::absolute(argobj))
        {
            argobj = FileName::combine(global.params.objdir, argobj);
        }
    }
#endif

    if (global.params.objname)
        objfilename = new FileName(argobj, 0);
    else
        objfilename = FileName::forceExt(argobj, global.obj_ext);

    symfilename = FileName::forceExt(filename, global.sym_ext);

    srcfile = new File(srcfilename);

    if (doDocComment)
    {
        setDocfile();
    }

    if (doHdrGen)
    {
        setHdrfile();
    }

    objfile = new File(objfilename);
    symfile = new File(symfilename);
}