Esempio n. 1
0
        private void GenerateVariableLoadContextInternal(CSTextDocumentBuilder text, string context, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            IndexSituation       index_situation = variable.GetVariableContextIndexSituation();
            CSTextDocumentWriter code            = text.CreateWriterWithVariablePairs(
                "TYPE", GetTypeConcept().GetStoreTypeName(),
                "SET_FUNCTION", settings.ConvertBool("custom_load_context", "LoadContextIntermediate" + variable.GetVariableFunctionName(), "Set" + variable.GetVariableFunctionName()),
                "CONTEXT", context,
                "GET_CONTEXT_FUNCTION", variable.GetVariableContext().GetGetContextFunctionName(),
                "INDEX", index_situation.GetIndex().ToString()
                );

            string context_expression = "?CONTEXT.?GET_CONTEXT_FUNCTION()";

            if (index_situation.IsShared())
            {
                context_expression = "?CONTEXT.?GET_CONTEXT_FUNCTION(?INDEX)";
            }

            if (settings.IsTrue("skip_context_conversion"))
            {
                code.Write("?SET_FUNCTION(" + context_expression + ");");
            }
            else
            {
                string value_expression = GetTypeConcept().GetContextToTypeExpression(context_expression);
                if (GetTypeConcept().GetTypeName() != GetTypeConcept().GetStoreTypeName())
                {
                    value_expression = "(?TYPE)" + value_expression;
                }

                code.Write("?SET_FUNCTION(" + value_expression + ");");
            }
        }
Esempio n. 2
0
        public DOMElement_RuleAtom_Variable()
        {
            get_variable_name = new OperationCache <string>("get_variable_name", delegate() {
                return(this.ConvertInfoValue <string>("name",
                                                      () => GetVariableDefaultName(),
                                                      s => s
                                                      ));
            });

            get_variable_type_context = new OperationCache <DOMEVariableTypeConcept>("get_variable_type_context", delegate() {
                return(this.ConvertInfoValue <DOMEVariableTypeConcept>("type",
                                                                       () => GetDefaultVariableTypeContext(),
                                                                       s => GetGrammarDefinition().GetTypeConcept(s)
                                                                       ));
            });

            get_variable_type_container = new OperationCache <DOMEVariableType>("get_variable_type_container", delegate() {
                return(GetVariableTypeConcept().Wrap(IsVariableCollection()));
            });

            get_variable_default_name = new OperationCache <string>("get_variable_default_name", delegate() {
                IndexSituation index_situation       = this.GetVariableContextIndexSituation();
                string context_default_variable_name = GetVariableContext().GetContextDefaultVariableName();

                if (index_situation.IsShared())
                {
                    context_default_variable_name += (index_situation.GetIndex() + 1).ToString();
                }

                if (IsVariableCollection())
                {
                    return(context_default_variable_name.StyleAsPluralWord());
                }

                return(context_default_variable_name);
            });

            get_info_settings = new OperationCache <LookupBackedSet <string, string> >("get_info_settings", delegate() {
                return(GetInfo().CreateBackedSet(DEFAULT_SETTING_VALUES));
            });
        }