Ejemplo n.º 1
0
        private bool CloneILStructure(string ilName, string outIlName)
        {
            Dictionary <string, double> content = new Dictionary <string, double>();

            foreach (ParIL.Entry varIL in ParIL.ResolveILContent(ilName, infoStore.operandAdmin))
            {
                if (!varIL.isIL)
                {
                    string corename   = GetCoreVarName(varIL.varSpec.name, baseILSpecification);
                    string outVarName = GetFullVarName(corename, outILSpecification);
                    infoStore.operandAdmin.RegisterVar(
                        name: outVarName,
                        creatorFun: DefFun.Store,
                        description: description,
                        isMonetary: infoStore.operandAdmin.GetIsMonetary(varIL.varSpec.name),
                        isGlobal: infoStore.operandAdmin.GetIsGlobal(varIL.varSpec.name),
                        isWriteable: false, // cannot be used as output variable
                        setInitialised: true);
                    if (!infoStore.operandAdmin.Exists(outVarName))
                    {
                        return(false);                                            // registration failed
                    }
                    content.Add(outVarName, varIL.addFactor);
                }
                else
                {
                    string newILName = GetFullVarName(GetCoreVarName(varIL.ilName, baseILSpecification), outILSpecification);
                    CloneILStructure(varIL.ilName, newILName);
                    content.Add(newILName, varIL.addFactor);
                }
            }
            infoStore.operandAdmin.RegisterIL( // do what usually DefIL does, i.e. register the incomelist
                name: outIlName,
                creatorFun: DefFun.IlArithOp,
                description: description,
                content: content,
                warnIfNonMon: false);
            return(infoStore.operandAdmin.Exists(outIlName));
        }