Пример #1
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 + ";");
                });
            }
        }
Пример #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);");
                });
            }
        }
Пример #3
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)));
        }
Пример #4
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);
                });
            }
        }
Пример #5
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);");
                    });
                }
            }
        }
Пример #6
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);");
                    }
                });
            }
        }