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)); } } } }
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())); }
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()); }
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); }
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()); } }
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()); }
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; }
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()); } } }
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()); } }