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 + ";"); }); } }
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);"); }); } }
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))); }
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); }); } }
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);"); }); } } }
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);"); } }); } }