Exemplo n.º 1
0
void HqlCppLibrary::extractOutputs()
{
    HqlExprArray symbols;
    scopeExpr->queryScope()->getSymbols(symbols);

    IHqlScope * scope = scopeExpr->queryScope();
    HqlDummyLookupContext dummyctx(NULL);
    ForEachItemIn(i, symbols)
    {
        IHqlExpression & cur = symbols.item(i);
        if (isExported(&cur))
        {
            _ATOM name = cur.queryName();
            OwnedHqlExpr value = scope->lookupSymbol(name, LSFpublic, dummyctx);

            if (value && !value->isFunction())
            {
                if (value->isDataset() || value->isDatarow() || value->queryType()->isScalar())
                {
                    OwnedHqlExpr null = createNullExpr(value);
                    outputs.append(*cur.cloneAllAnnotations(null));
                }
            }
        }
    }
Exemplo n.º 2
0
void setFullNameProp(IPropertyTree * tree, const char * prop, IHqlExpression * expr)
{
    IHqlScope * scope = expr->queryScope();
    if (scope && !containsCall(expr, false))
        tree->setProp(prop, scope->queryFullName());
    else
        setFullNameProp(tree, prop, str(lower(expr->queryFullContainerId())), str(expr->queryName()));
}
Exemplo n.º 3
0
void setFullNameProp(IPropertyTree * tree, const char * prop, IHqlExpression * expr)
{
    IHqlScope * scope = expr->queryScope();
    if (scope)
        tree->setProp(prop, scope->queryFullName());
    else
        setFullNameProp(tree, prop, expr->queryFullContainerId()->lower()->str(), expr->queryName()->str());
}
Exemplo n.º 4
0
bool RemoteXmlEclRepository::loadModule(IHqlRemoteScope * rScope, IErrorReceiver *errs, bool forceAll)
{
    IHqlScope * scope = rScope->queryScope();
    const char * modName = scope->queryFullName();
    DBGLOG("load module %s",modName);

    Owned<IPropertyTree> repository = getAttributes(modName, NULL, 0, getPropInt("preloadText",1));
    if(!repository)
    {
        DBGLOG("getAttributes %s.* returned null", modName);
        //process error
        return false;
    }
    return doLoadModule(repository, rScope, errs);
}
Exemplo n.º 5
0
void getFullName(StringBuffer & name, IHqlExpression * expr)
{
    IHqlScope * scope = expr->queryScope();
    if (scope)
    {
        name.append(scope->queryFullName());
    }
    else
    {
        const char * module = expr->queryFullContainerId()->str();
        if (module && *module)
            name.append(module).append(".");
        name.append(expr->queryName());
    }
}
Exemplo n.º 6
0
IHqlExpression * checkCreateConcreteModule(IErrorReceiver * errors, IHqlExpression * expr, const ECLlocation & errpos)
{
    IHqlScope * scope = expr->queryScope();
    if (scope && scope->queryConcreteScope())
    {
        IHqlScope * concrete = scope->queryConcreteScope();
        return LINK(queryExpression(concrete));
    }

    if (expr->getOperator() == no_delayedscope)
    {
        if (expr->queryChild(0)->getOperator() == no_assertconcrete)
            return LINK(expr);
    }

    OwnedHqlExpr check = createValue(no_assertconcrete, expr->getType(), LINK(expr), errpos.createLocationAttr());
    return createDelayedScope(check.getClear());
}
Exemplo n.º 7
0
bool XmlEclRepository::doLoadModule(IPropertyTree * repository, IHqlRemoteScope * rScope, IErrorReceiver *errs)
{
    IHqlScope * scope = rScope->queryScope();
    const char * scopeName = scope->queryName()->getAtomNamePtr();

    StringBuffer s;
    const char * modName = scope->queryFullName();
    IPropertyTree* module = repository->queryPropTree(s.append("./Module[@name=\"").append(modName).append("\"]").str());
    if(!module)
    {
        if (logging())
            DBGLOG("No data for module %s",scopeName);
        return false;
    }
    int access = module->getPropInt("@access",cs_full);

    if(module->queryProp("Text"))
    {
        const char * path = module->queryProp("@sourcePath");
        Owned<ISourcePath> sourcePath = createSourcePath(path ? path : modName);
        Owned<IFileContents> text = createFileContentsFromText(module->queryProp("Text"), sourcePath);
        rScope->setText(text);
    }
    else
    {
        StringBuffer buf("./Attribute");
        Owned<IPropertyTreeIterator> it = module->getElements(buf.str());
        if (it->first())
        {
            for(;it->isValid();it->next())
            {
                Owned<IHqlExpression> item = toNamedSymbol(&it->query(), *scope->queryName(), access);
                ((CHqlScope*)scope)->defineSymbol(LINK(item));
            }
        }
        else
        {
            if (logging())
                DBGLOG("No definitions were added for module %s", scopeName);
        }
    }
    return true;
}
Exemplo n.º 8
0
void reportAbstractModule(IErrorReceiver & errors, IHqlExpression * expr, const ECLlocation & errpos)
{
    IHqlScope * scope = expr->queryScope();
    StringBuffer fieldText;
    if (scope)
    {
        HqlExprArray symbols;
        scope->getSymbols(symbols);
        symbols.sort(compareSymbolsByName);
        ForEachItemIn(i, symbols)
        {
            IHqlExpression & cur = symbols.item(i);
            if (isPureVirtual(&cur))
            {
                if (fieldText.length())
                    fieldText.append(",");
                fieldText.append(cur.queryName());
            }
        }
    }
Exemplo n.º 9
0
void ViewTransformerRegistry::addPlugins(const char * name)
{
    loadedPlugins.setown(new SafePluginMap(&pluginCtx, true));
    loadedPlugins->loadFromList(name);

    Owned<IErrorReceiver> errorReporter = createThrowingErrorReceiver();
    dataServer.setown(createNewSourceFileEclRepository(errorReporter, name, ESFallowplugins, 0));

    HqlScopeArray scopes;
    HqlParseContext parseCtx(dataServer, NULL, NULL);
    HqlLookupContext ctx(parseCtx, errorReporter);
    getRootScopes(scopes, dataServer, ctx);

    ForEachItemIn(i, scopes)
    {
        IHqlScope * scope = &scopes.item(i);
        HqlExprArray symbols;
        try
        {
            scope->ensureSymbolsDefined(ctx);
            scope->getSymbols(symbols);

            ForEachItemIn(j, symbols)
            {
                IHqlExpression & cur = symbols.item(j);
                if (cur.getOperator() == no_service)
                    addServiceDefinition(&cur);
            }
        }
        catch (IException * e)
        {
            const char * name = str(scope->queryName());
            VStringBuffer msg("Error loading plugin %s", name);
            EXCLOG(e, msg.str());
        }
    }