Exemplo n.º 1
0
        static public T Convert <KEY_TYPE, VALUE_TYPE, T>(this LookupBackedSet <KEY_TYPE, VALUE_TYPE> item, KEY_TYPE key, Operation <T> default_operation, Operation <T, VALUE_TYPE> operation)
        {
            if (item.IsAsBacked(key))
            {
                return(default_operation.Execute());
            }

            return(operation.Execute(item.Lookup(key)));
        }
Exemplo n.º 2
0
        private void GenerateVariableSetFunction(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            if (settings.IsNot("set", "none"))
            {
                CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                    "SET_ACCESS", settings.Lookup("set"),
                    "SET_OVERRIDE", settings.ConvertBool("set_override", "override"),
                    "SET_VIRTUAL", settings.ConvertBool("set_virtual", "virtual"),
                    "TYPE", GetTypeConcept().GetStoreTypeName(),
                    "VARIABLE", variable.GetVariableName(),
                    "SET_VARIABLE_FUNCTION", "Set" + variable.GetVariableFunctionName(),
                    "CLEAR_VARIABLE_FUNCTION", "Clear" + variable.GetVariableFunctionName(),
                    "ADD_VARIABLES_FUNCTION", "Add" + variable.GetVariableFunctionName().StyleAsPluralWord()
                    );

                code.Write("?SET_ACCESS ?SET_OVERRIDE ?SET_VIRTUAL void ?SET_VARIABLE_FUNCTION(IEnumerable<?TYPE> input)", delegate() {
                    code.Write("?CLEAR_VARIABLE_FUNCTION();");
                    code.Write("?ADD_VARIABLES_FUNCTION(input);");
                });

                code.Write("?SET_ACCESS void ?SET_VARIABLE_FUNCTION(params ?TYPE[] input)", delegate() {
                    code.Write("?SET_VARIABLE_FUNCTION((IEnumerable<?TYPE>)input);");
                });
            }
        }
Exemplo n.º 3
0
        private void GenerateVariableSetFunction(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            if (settings.IsNot("set", "none"))
            {
                CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                    "SET_ACCESS", settings.Lookup("set"),
                    "SET_OVERRIDE", settings.ConvertBool("set_override", "override"),
                    "SET_VIRTUAL", settings.ConvertBool("set_virtual", "virtual"),
                    "TYPE", GetTypeConcept().GetStoreTypeName(),
                    "VARIABLE", variable.GetVariableName(),
                    "SET_VARIABLE_FUNCTION", "Set" + variable.GetVariableFunctionName(),
                    "ON_SET_VARIABLE_FUNCTION", "OnSet" + variable.GetVariableFunctionName()
                    );

                code.Write("?SET_ACCESS ?SET_OVERRIDE ?SET_VIRTUAL void ?SET_VARIABLE_FUNCTION(?TYPE input)", delegate() {
                    GenerateVariableSetFunctionBody(text, variable, "input", settings);

                    if (settings.IsTrue("hook_set"))
                    {
                        code.Write("?ON_SET_VARIABLE_FUNCTION(input);");
                    }
                });
            }
        }
Exemplo n.º 4
0
        private void GenerateVariableDuplicateInternal(CSTextDocumentBuilder text, string instance, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                "INSTANCE", instance,
                "SET_VARIABLE_FUNCTION", "Set" + variable.GetVariableFunctionName()
                );

            string input_expression     = "Get" + variable.GetVariableFunctionName() + "()";
            string duplicate_expression = GenerateVariableDuplicateExpression(input_expression);

            code.Write("?INSTANCE.?SET_VARIABLE_FUNCTION(" + duplicate_expression + ");");
        }
Exemplo n.º 5
0
 private void GenerateVariableConstructionInternal(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
 {
     GenerateVariableConstructionInternalBody(text, variable, settings);
 }
Exemplo n.º 6
0
        public override void GenerateVariableDuplicate(CSTextDocumentBuilder text, string instance, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            settings = settings.AppendFallbacks(DEFAULT_SETTING_VALUES);

            GenerateVariableDuplicateInternal(text, instance, variable, settings);
        }
Exemplo n.º 7
0
 protected abstract string GenerateVariableGetFunctionBodyGetReturnExpression(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings);
Exemplo n.º 8
0
        private void GenerateVariableGetFunction(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            if (settings.IsNot("get", "none"))
            {
                CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                    "GET_ACCESS", settings.Lookup("get"),
                    "GET_OVERRIDE", settings.ConvertBool("get_override", "override"),
                    "GET_VIRTUAL", settings.ConvertBool("get_virtual", "virtual"),
                    "TYPE", GetTypeConcept().GetRetrieveTypeName(),
                    "RETURN_CONTAINER_TYPE", GenerateVariableGetFunctionReturnContainerType(GetTypeConcept().GetRetrieveTypeName()),
                    "VARIABLE", variable.GetVariableName(),
                    "GET_VARIABLE_FUNCTION", "Get" + variable.GetVariableFunctionName()
                    );

                code.Write("?GET_ACCESS ?GET_OVERRIDE ?GET_VIRTUAL ?RETURN_CONTAINER_TYPE ?GET_VARIABLE_FUNCTION()", delegate() {
                    string return_expression = GenerateVariableGetFunctionBodyGetReturnExpression(text, variable, settings);

                    if (GetTypeConcept().GetStoreTypeName() != GetTypeConcept().GetRetrieveTypeName())
                    {
                        return_expression = return_expression + ".Convert(i => (?TYPE)i)";
                    }

                    code.Write("return " + return_expression + ";");
                });
            }
        }
Exemplo n.º 9
0
 public abstract void GenerateVariableFunctions(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings);
Exemplo n.º 10
0
 public abstract void GenerateVariableLoadContext(CSTextDocumentBuilder text, string context, DOMEVariable variable, LookupBackedSet <string, string> settings);
Exemplo n.º 11
0
 public abstract void GenerateVariableDuplicate(CSTextDocumentBuilder text, string instance, DOMEVariable variable, LookupBackedSet <string, string> settings);
        protected override void GenerateVariableClearFunctionBody(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                "VARIABLE", variable.GetVariableName()
                );

            code.Write("?VARIABLE.Clear();");
        }
        protected override void GenerateVariableConstructionInternalBody(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                "VARIABLE", variable.GetVariableName(),
                "EXPRESSION", GetTypeConcept().GetDefaultConstructionExpression()
                );

            code.Write("?VARIABLE = ?EXPRESSION;");
        }
Exemplo n.º 14
0
        protected override void GenerateVariableDeclarationInternalBody(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                "TYPE", GetTypeName(),
                "VARIABLE", variable.GetVariableName()
                );

            code.Write("[RelatableChild]private ?TYPE ?VARIABLE;");
        }
Exemplo n.º 15
0
 protected abstract void GenerateVariableConstructionInternalBody(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings);
        protected override void GenerateVariableConstructionInternalBody(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                "VARIABLE", variable.GetVariableName(),
                "TYPE", GetTypeName()
                );

            code.Write("?VARIABLE = new ?TYPE(this);");
        }
Exemplo n.º 17
0
        private void GenerateVariableAddFunction(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            if (settings.IsNot("add", "none"))
            {
                CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                    "ADD_ACCESS", settings.Lookup("add"),
                    "ADD_OVERRIDE", settings.ConvertBool("add_override", "override"),
                    "ADD_VIRTUAL", settings.ConvertBool("add_virtual", "virtual"),
                    "TYPE", GetTypeConcept().GetStoreTypeName(),
                    "VARIABLE", variable.GetVariableName(),
                    "ADD_VARIABLE_FUNCTION", "Add" + variable.GetVariableFunctionName().StyleAsSingularWord(),
                    "ADD_VARIABLES_FUNCTION", "Add" + variable.GetVariableFunctionName().StyleAsPluralWord(),
                    "ON_ADD_VARIABLE_FUNCTION", "OnAdd" + variable.GetVariableFunctionName().StyleAsSingularWord()
                    );

                if (settings.IsTrue("add_single"))
                {
                    code.Write("?ADD_ACCESS ?ADD_OVERRIDE ?ADD_VIRTUAL void ?ADD_VARIABLE_FUNCTION(?TYPE input)", delegate() {
                        GenerateVariableAddFunctionBody(text, variable, "input", settings);

                        if (settings.IsTrue("hook_add"))
                        {
                            code.Write("?ON_ADD_VARIABLE_FUNCTION(input);");
                        }
                    });
                }

                if (settings.IsTrue("add_multiple"))
                {
                    code.Write("?ADD_ACCESS void ?ADD_VARIABLES_FUNCTION(IEnumerable<?TYPE> input)", delegate() {
                        if (IsSingleParentEnforced())
                        {
                            code.Write("input.ProcessCopy(i => ?ADD_VARIABLE_FUNCTION(i));");
                        }
                        else
                        {
                            code.Write("input.Process(i => ?ADD_VARIABLE_FUNCTION(i));");
                        }
                    });

                    code.Write("?ADD_ACCESS void ?ADD_VARIABLES_FUNCTION(params ?TYPE[] input)", delegate() {
                        code.Write("?ADD_VARIABLES_FUNCTION((IEnumerable<?TYPE>)input);");
                    });
                }
            }
        }
        protected override void GenerateVariableSetFunctionBody(CSTextDocumentBuilder text, DOMEVariable variable, string input, LookupBackedSet <string, string> settings)
        {
            CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                "VARIABLE", variable.GetVariableName(),
                "INPUT", input
                );

            code.Write("?VARIABLE.Set(?INPUT);");
        }
Exemplo n.º 19
0
 protected abstract void GenerateVariableAddFunctionBody(CSTextDocumentBuilder text, DOMEVariable variable, string input, LookupBackedSet <string, string> settings);
 protected override string GenerateVariableGetFunctionBodyGetReturnExpression(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
 {
     return(CSLine.Single("?VARIABLE.Get()",
                          "VARIABLE", variable.GetVariableName()
                          ));
 }
Exemplo n.º 21
0
        public override void GenerateVariableLoadContext(CSTextDocumentBuilder text, string context, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            settings = settings.AppendFallbacks(DEFAULT_SETTING_VALUES);

            GenerateVariableLoadContextInternal(text, context, variable, settings);
        }
Exemplo n.º 22
0
 static public LookupBackedSet <KEY_TYPE, VALUE_TYPE> PrependFallbacks <KEY_TYPE, VALUE_TYPE>(this LookupBackedSet <KEY_TYPE, VALUE_TYPE> item, params LookupSet <KEY_TYPE, VALUE_TYPE>[] fallbacks)
 {
     return(item.PrependFallbacks <KEY_TYPE, VALUE_TYPE>((IEnumerable <LookupSet <KEY_TYPE, VALUE_TYPE> >)fallbacks));
 }
Exemplo n.º 23
0
        public override void GenerateVariableFunctions(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            settings = settings.AppendFallbacks(DEFAULT_SETTING_VALUES);

            GenerateVariableClearFunction(text, variable, settings);
            GenerateVariableSetFunction(text, variable, settings);
            GenerateVariableAddFunction(text, variable, settings);
            GenerateVariableGetFunction(text, variable, settings);
        }
Exemplo n.º 24
0
 static public LookupBackedSet <KEY_TYPE, VALUE_TYPE> AppendFallbacks <KEY_TYPE, VALUE_TYPE>(this LookupBackedSet <KEY_TYPE, VALUE_TYPE> item, IEnumerable <LookupSet <KEY_TYPE, VALUE_TYPE> > fallbacks)
 {
     return(new BackedSet <KEY_TYPE, VALUE_TYPE>(item.GetMainSet(), item.GetFallbackSets().Append(fallbacks)));
 }
Exemplo n.º 25
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(), "Add" + variable.GetVariableFunctionName().StyleAsPluralWord()),
                "CONTEXT", context,
                "GET_CONTEXT_FUNCTION", variable.GetVariableContext().GetGetContextFunctionName(),
                "INDEX", index_situation.GetIndex().ToString()
                );

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

            if (index_situation.IsShared())
            {
                contexts_expression = contexts_expression + ".Offset(?INDEX)";
            }

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

                string values_expression = contexts_expression + ".Convert(" + context_expression + " => " + value_expression + ")";

                code.Write("?SET_FUNCTION(" + values_expression + ");");
            }
        }
Exemplo n.º 26
0
        private void GenerateVariableClearFunction(CSTextDocumentBuilder text, DOMEVariable variable, LookupBackedSet <string, string> settings)
        {
            if (settings.IsNot("clear", "none"))
            {
                CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                    "CLEAR_ACCESS", settings.Lookup("clear"),
                    "CLEAR_OVERRIDE", settings.ConvertBool("clear_override", "override"),
                    "CLEAR_VIRTUAL", settings.ConvertBool("clear_virtual", "virtual"),
                    "CLEAR_VARIABLE_FUNCTION", "Clear" + variable.GetVariableFunctionName()
                    );

                code.Write("?CLEAR_ACCESS ?CLEAR_OVERRIDE ?CLEAR_VIRTUAL void ?CLEAR_VARIABLE_FUNCTION()", delegate() {
                    GenerateVariableClearFunctionBody(text, variable, settings);
                });
            }
        }
Exemplo n.º 27
0
 static public bool IsAsBacked <KEY_TYPE, VALUE_TYPE>(this LookupBackedSet <KEY_TYPE, VALUE_TYPE> item, KEY_TYPE key)
 {
     return(item.Is(key, item.GetFallbackSets().Lookup(key)));
 }
        protected override void GenerateVariableAddFunctionBody(CSTextDocumentBuilder text, DOMEVariable variable, string input, LookupBackedSet <string, string> settings)
        {
            CSTextDocumentWriter code = text.CreateWriterWithVariablePairs(
                "VARIABLE", variable.GetVariableName(),
                "INPUT", input
                );

            code.Write("?VARIABLE.Add(?INPUT);");
            code.Write("if(?INPUT != null)", delegate() {
                code.Write("?INPUT.SetParent(this);");
            }, false);
        }