public virtual string TransformText() { this.GenerationEnvironment = null; #line 1 "" this.Write(""); #line default #line hidden #line 6 "" this.Write("#include \""); #line default #line hidden #line 6 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.SimulatorFileName(Network))); #line default #line hidden #line 6 "" this.Write(".hpp\"\n\n// The names of all signals\nstd::string "); #line default #line hidden #line 9 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 9 "" this.Write("_SIGNAL_NAMES[] = {\n"); #line default #line hidden #line 10 "" foreach (var signal in RS.DriverSignals.Concat(RS.VerifySignals)) { var cpptype = RS.TypeScope.GetType(signal); if (cpptype.IsArray) { var eltype = cpptype.ElementName; var length = (int)RS.GetArrayLength(signal).DefaultValue; for (var i = 0; i < length; i++) { #line default #line hidden #line 17 "" this.Write(" \""); #line default #line hidden #line 17 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.TestBenchSignalName(signal))); #line default #line hidden #line 17 "" this.Write("("); #line default #line hidden #line 17 "" this.Write(this.ToStringHelper.ToStringWithCulture(i)); #line default #line hidden #line 17 "" this.Write(")\",\n"); #line default #line hidden #line 18 "" } #line default #line hidden #line 19 "" } else { #line default #line hidden #line 20 "" this.Write(" \""); #line default #line hidden #line 20 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.TestBenchSignalName(signal))); #line default #line hidden #line 20 "" this.Write("\",\n"); #line default #line hidden #line 21 "" } #line default #line hidden #line 22 "" } #line default #line hidden #line 23 "" this.Write("};\n\n"); #line default #line hidden #line 25 "" foreach (var process in Network.Processes) { var members = process .SharedVariables.Cast <AST.DataElement>() .Union(process.SharedSignals) //.Where(x => RS.TypeScope.GetType(x).IsArray) .Where(x => (x.DefaultValue is SME.AST.ArrayCreateExpression) || (x.DefaultValue is Array)); foreach (var v in members) { var rt = RS.TypeScope.GetType(v); var eltype = rt.ElementName; var arraylen = RS.GetArrayLength(v).DefaultValue; #line default #line hidden #line 36 "" this.Write("const "); #line default #line hidden #line 36 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 36 "" this.Write(" init_"); #line default #line hidden #line 36 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(process))); #line default #line hidden #line 36 "" this.Write("_"); #line default #line hidden #line 36 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(v.Name))); #line default #line hidden #line 36 "" this.Write("["); #line default #line hidden #line 36 "" this.Write(this.ToStringHelper.ToStringWithCulture(arraylen)); #line default #line hidden #line 36 "" this.Write("] = "); #line default #line hidden #line 36 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.Renderer.GetInitializer(v))); #line default #line hidden #line 36 "" this.Write(";\n"); #line default #line hidden #line 37 "" } #line default #line hidden #line 38 "" } #line default #line hidden #line 39 "" this.Write("\n\n"); #line default #line hidden #line 41 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 41 "" this.Write("::"); #line default #line hidden #line 41 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 41 "" this.Write("() \n :\n"); #line default #line hidden #line 43 "" foreach (var bus in Network.Busses) { #line default #line hidden #line 44 "" this.Write(" bus_"); #line default #line hidden #line 44 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(bus))); #line default #line hidden #line 44 "" this.Write("(),\n"); #line default #line hidden #line 45 "" } #line default #line hidden #line 46 "" foreach (var process in Network.Processes) { var busses = process.InputBusses.Concat(process.OutputBusses).Concat(process.InternalBusses).Distinct().OrderBy(x => x.Name).ToArray(); var members = process.SharedVariables.Cast <AST.DataElement>().Union(process.SharedSignals).ToArray(); #line default #line hidden #line 51 "" this.Write(" proc_"); #line default #line hidden #line 51 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(process))); #line default #line hidden #line 51 "" this.Write("(\n"); #line default #line hidden #line 52 "" foreach (var bus in busses) { #line default #line hidden #line 53 "" this.Write(" &bus_"); #line default #line hidden #line 53 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(bus))); #line default #line hidden #line 53 "" this.Write(this.ToStringHelper.ToStringWithCulture((bus == busses.Last() & members.Length == 0) ? "" : ", ")); #line default #line hidden #line 53 "" this.Write("\n"); #line default #line hidden #line 54 "" } #line default #line hidden #line 55 "" foreach (var v in members) { var initializer = RS.Renderer.GetInitializer(v); if (!string.IsNullOrWhiteSpace(initializer)) { var rt = RS.TypeScope.GetType(v); if (rt.IsArray) { var eltype = rt.ElementName; var arraylen = RS.GetArrayLength(v).DefaultValue; #line default #line hidden #line 64 "" this.Write(" "); #line default #line hidden #line 64 "" this.Write(this.ToStringHelper.ToStringWithCulture(arraylen)); #line default #line hidden #line 64 "" this.Write(",\n"); #line default #line hidden #line 65 "" if ((v.DefaultValue is SME.AST.ArrayCreateExpression) || v.DefaultValue is Array) { #line default #line hidden #line 68 "" this.Write(" init_"); #line default #line hidden #line 68 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(process))); #line default #line hidden #line 68 "" this.Write("_"); #line default #line hidden #line 68 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(v.Name))); #line default #line hidden #line 68 "" this.Write(this.ToStringHelper.ToStringWithCulture(v == members.Last() ? "" : ",")); #line default #line hidden #line 68 "" this.Write("\n"); #line default #line hidden #line 69 "" } else { #line default #line hidden #line 70 "" this.Write(" new "); #line default #line hidden #line 70 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 70 "" this.Write("["); #line default #line hidden #line 70 "" this.Write(this.ToStringHelper.ToStringWithCulture(arraylen)); #line default #line hidden #line 70 "" this.Write("]()"); #line default #line hidden #line 70 "" this.Write(this.ToStringHelper.ToStringWithCulture(v == members.Last() ? "" : ",")); #line default #line hidden #line 70 "" this.Write("\n"); #line default #line hidden #line 71 "" } #line default #line hidden #line 72 "" } else { #line default #line hidden #line 73 "" this.Write(" "); #line default #line hidden #line 73 "" this.Write(this.ToStringHelper.ToStringWithCulture(initializer)); #line default #line hidden #line 73 "" this.Write(this.ToStringHelper.ToStringWithCulture(v == members.Last() ? "" : ",")); #line default #line hidden #line 73 "" this.Write("\n"); #line default #line hidden #line 74 "" } #line default #line hidden #line 75 "" } #line default #line hidden #line 76 "" } #line default #line hidden #line 77 "" this.Write(" ),\n"); #line default #line hidden #line 78 "" } #line default #line hidden #line 79 "" this.Write(" trace_input(NULL),\n input_line(),\n cycle(0)\n{\n\n}\n\nsize_t "); #line default #line hidden #line 86 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 86 "" this.Write(@"::RunSimulation(const char* inputfile) { LoadTraceInput(inputfile); // Ignore the reset cycle DriveFromTraceInput(); while(true) { if (!DriveFromTraceInput()) { size_t res = cycle; Stop(); return res; } OnTick(); VerifyTrace(); FinishCycle(); } } void "); #line default #line hidden #line 105 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 105 "" this.Write(@"::LoadTraceInput(const char* inputfile) { if (trace_input != NULL) throw MessageException(""Already have an input trace file open""); // Open the trace file and validate the headers trace_input = new std::ifstream(inputfile); if (trace_input->bad()) { trace_input->close(); throw MessageException(""Trace input file not found, or not able to open""); } if (!std::getline(*trace_input, input_line)) { throw MessageException(""Trace input file was empty""); } if (cycle != 0) { throw MessageException(""Cannot load input file after the simulation has started""); } std::string token; std::istringstream headerlinestream(input_line); size_t field = 0; while(std::getline(headerlinestream, token, ',')) { if (token.compare("); #line default #line hidden #line 129 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 129 "" this.Write("_SIGNAL_NAMES[field]) != 0) {\n\n std::stringstream sstm;\n ss" + "tm << \"Field #\" << field << \" should be named \" << "); #line default #line hidden #line 132 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 132 "" this.Write("_SIGNAL_NAMES[field] << \" but is named \" << token << \", the trace file cannot be " + "used\";\n throw MessageException(sstm.str());\n }\n field++" + ";\n }\n\n cycle = 0;\n}\n\n"); #line default #line hidden #line 141 "" var driver_signal_count = 0; #line default #line hidden #line 142 "" this.Write("\nbool "); #line default #line hidden #line 143 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 143 "" this.Write(@"::DriveFromTraceInput() { if (trace_input == NULL) { throw MessageException(""Trace input file is not loaded""); } if (!std::getline(*trace_input, input_line)) { return false; } size_t i; std::string token; std::istringstream valuestream(input_line); size_t field = 0; "); #line default #line hidden #line 158 "" foreach (var signal in RS.DriverSignals) { var cpptype = RS.TypeScope.GetType(signal); if (cpptype.IsArray) { var eltype = cpptype.ElementName; var length = (int)RS.GetArrayLength(signal).DefaultValue; driver_signal_count += length; #line default #line hidden #line 165 "" this.Write(" for (i = 0; i < "); #line default #line hidden #line 165 "" this.Write(this.ToStringHelper.ToStringWithCulture(length)); #line default #line hidden #line 165 "" this.Write("; i++) {\n if (!std::getline(valuestream, token, \',\')) {\n std::s" + "tringstream sstm;\n sstm << \"Unexpected end-of-line in cycle \" << cycl" + "e << \", field \" << field << \", "); #line default #line hidden #line 168 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 168 "" this.Write("[\" << i << \"]\" << std::endl;\n throw MessageException(sstm.str());\n " + " }\n if (token.compare(\"U\") != 0)\n bus_"); #line default #line hidden #line 172 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus))); #line default #line hidden #line 172 "" this.Write("."); #line default #line hidden #line 172 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 172 "" this.Write("(i, parse_"); #line default #line hidden #line 172 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 172 "" this.Write("(token)); \n field++;\n }\n"); #line default #line hidden #line 175 "" } else { driver_signal_count++; #line default #line hidden #line 179 "" this.Write(" if (!std::getline(valuestream, token, \',\')) {\n std::stringstream sstm;" + "\n sstm << \"Unexpected end-of-line in cycle \" << cycle << \", field \" << fi" + "eld << \", "); #line default #line hidden #line 181 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 181 "" this.Write("[\" << i << \"]\" << std::endl;\n throw MessageException(sstm.str());\n }\n " + " if (token.compare(\"U\") != 0)\n bus_"); #line default #line hidden #line 185 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus))); #line default #line hidden #line 185 "" this.Write("."); #line default #line hidden #line 185 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 185 "" this.Write("(parse_"); #line default #line hidden #line 185 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name)); #line default #line hidden #line 185 "" this.Write("(token));\n field++;\n"); #line default #line hidden #line 187 "" } #line default #line hidden #line 188 "" this.Write("\n"); #line default #line hidden #line 189 "" } #line default #line hidden #line 190 "" this.Write("\n return true;\n}\n\nvoid "); #line default #line hidden #line 194 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 194 "" this.Write("::FinishCycle() \n{\n cycle++;\n"); #line default #line hidden #line 197 "" if (Network.Busses.Any(x => x.IsClocked)) { #line default #line hidden #line 198 "" this.Write(" // Propagate clocked busses\n"); #line default #line hidden #line 199 "" foreach (var bus in Network.Busses.Where(x => x.IsClocked)) { #line default #line hidden #line 200 "" this.Write(" bus_"); #line default #line hidden #line 200 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 200 "" this.Write(".Propagate();\n"); #line default #line hidden #line 201 "" } #line default #line hidden #line 202 "" } #line default #line hidden #line 203 "" this.Write("}\n\nvoid "); #line default #line hidden #line 205 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 205 "" this.Write("::OnTick()\n{\n\n"); #line default #line hidden #line 208 "" foreach (var p in Network.Processes.Where(x => x.IsClocked).Distinct()) { #line default #line hidden #line 209 "" this.Write(" proc_"); #line default #line hidden #line 209 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(p))); #line default #line hidden #line 209 "" this.Write(".onTick();\n"); #line default #line hidden #line 210 "" } #line default #line hidden #line 211 "" foreach (var b in Network.Busses.Where(x => x.IsClocked).Distinct()) { #line default #line hidden #line 212 "" this.Write(" bus_"); #line default #line hidden #line 212 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(b))); #line default #line hidden #line 212 "" this.Write(".propagate_signals();\n"); #line default #line hidden #line 213 "" } #line default #line hidden #line 214 "" this.Write("\n\n"); #line default #line hidden #line 216 "" foreach (var n in Graph.ExecutionPlan) { var pn = GetProcess(n.Item); if (pn != null && !pn.IsClocked) { #line default #line hidden #line 220 "" this.Write(" proc_"); #line default #line hidden #line 220 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ProcessNameToValidName(pn))); #line default #line hidden #line 220 "" this.Write(".onTick();\n"); #line default #line hidden #line 221 "" } #line default #line hidden #line 222 "" foreach (var b in n.Item.OutputBusses.Distinct()) { #line default #line hidden #line 223 "" this.Write(" bus_"); #line default #line hidden #line 223 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b)))); #line default #line hidden #line 223 "" this.Write(".forward_signals();\n"); #line default #line hidden #line 224 "" } #line default #line hidden #line 225 "" foreach (var b in n.PropagateAfter) { #line default #line hidden #line 226 "" this.Write(" bus_"); #line default #line hidden #line 226 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b)))); #line default #line hidden #line 226 "" this.Write(".propagate_signals();\n"); #line default #line hidden #line 227 "" } #line default #line hidden #line 228 "" foreach (var b in n.Item.InternalBusses) { #line default #line hidden #line 229 "" this.Write(" bus_"); #line default #line hidden #line 229 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b)))); #line default #line hidden #line 229 "" this.Write(".forward_signals();\n bus_"); #line default #line hidden #line 230 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(GetBus(b)))); #line default #line hidden #line 230 "" this.Write(".propagate_signals();\n"); #line default #line hidden #line 231 "" } #line default #line hidden #line 232 "" } #line default #line hidden #line 233 "" this.Write("}\n\nvoid "); #line default #line hidden #line 235 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 235 "" this.Write("::VerifyTrace()\n{\n if (trace_input == NULL) {\n throw MessageException(\"" + "Trace input file is not loaded\");\n }\n\n size_t i;\n size_t field = 0;\n " + " std::string token;\n std::istringstream valuestream(input_line);\n\n // Forw" + "ard past the "); #line default #line hidden #line 246 "" this.Write(this.ToStringHelper.ToStringWithCulture(driver_signal_count)); #line default #line hidden #line 246 "" this.Write(" signals\n for(i = 0; i < "); #line default #line hidden #line 247 "" this.Write(this.ToStringHelper.ToStringWithCulture(driver_signal_count)); #line default #line hidden #line 247 "" this.Write("; i++) {\n if (!std::getline(valuestream, token, \',\')) {\n throw " + "MessageException(\"Unexpected end-of-stream\");\n }\n field++;\n }\n\n" + " bool source_is_undef;\n\n"); #line default #line hidden #line 256 "" foreach (var signal in RS.VerifySignals) { var cpptype = RS.TypeScope.GetType(signal); var typecast = cpptype.Name == "system_uint8" ? "(int)" : ""; if (cpptype.IsArray) { typecast = cpptype.ElementName == "system_uint8" ? "(int)" : ""; var eltype = cpptype.ElementName; var length = (int)RS.GetArrayLength(signal).DefaultValue; #line default #line hidden #line 264 "" this.Write(" for (i = 0; i < "); #line default #line hidden #line 264 "" this.Write(this.ToStringHelper.ToStringWithCulture(length)); #line default #line hidden #line 264 "" this.Write(@"; i++) { if (!std::getline(valuestream, token, ',')) { std::stringstream sstm; sstm << ""Unexpected end-of-line in cycle "" << cycle << "", field "" << field << std::endl; throw MessageException(sstm.str()); } source_is_undef = false; try { "); #line default #line hidden #line 273 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 273 "" this.Write(" tmpval = bus_"); #line default #line hidden #line 273 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus))); #line default #line hidden #line 273 "" this.Write("."); #line default #line hidden #line 273 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 273 "" this.Write("(i);\n } catch (InvalidReadException e) {\n source_is_undef = tru" + "e;\n }\n\n if (token.compare(\"U\") == 0 && source_is_undef) {\n " + " // Don\'t care\n } else if (token.compare(\"U\") != 0 && bus_"); #line default #line hidden #line 280 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus))); #line default #line hidden #line 280 "" this.Write("."); #line default #line hidden #line 280 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 280 "" this.Write("(i) != parse_"); #line default #line hidden #line 280 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 280 "" this.Write("(token)) {\n std::stringstream sstm;\n sstm << \"Error in cycl" + "e \" << cycle << std::endl;\n sstm << \"Expected value \" << "); #line default #line hidden #line 283 "" this.Write(this.ToStringHelper.ToStringWithCulture(typecast)); #line default #line hidden #line 283 "" this.Write("parse_"); #line default #line hidden #line 283 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 283 "" this.Write("(token) << \", but got \" << "); #line default #line hidden #line 283 "" this.Write(this.ToStringHelper.ToStringWithCulture(typecast)); #line default #line hidden #line 283 "" this.Write("bus_"); #line default #line hidden #line 283 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus))); #line default #line hidden #line 283 "" this.Write("."); #line default #line hidden #line 283 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 283 "" this.Write("(i) << \" for field \" << "); #line default #line hidden #line 283 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 283 "" this.Write("_SIGNAL_NAMES[field] << \" (raw: \" << token << \")\" << std::endl;\n throw" + " MessageException(sstm.str());\n }\n field++;\n }\n\n"); #line default #line hidden #line 289 "" } else { #line default #line hidden #line 290 "" this.Write(@" if (!std::getline(valuestream, token, ',')) { std::stringstream sstm; sstm << ""Unexpected end-of-line in cycle "" << cycle << "", field "" << field << std::endl; throw MessageException(sstm.str()); } source_is_undef = false; try { "); #line default #line hidden #line 298 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name)); #line default #line hidden #line 298 "" this.Write(" tmpval = bus_"); #line default #line hidden #line 298 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus))); #line default #line hidden #line 298 "" this.Write("."); #line default #line hidden #line 298 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 298 "" this.Write("();\n } catch (InvalidReadException e) {\n source_is_undef = true;\n }\n" + "\n if (token.compare(\"U\") == 0 && source_is_undef) {\n // Don\'t care\n " + " } else if (token.compare(\"U\") != 0 && bus_"); #line default #line hidden #line 305 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus))); #line default #line hidden #line 305 "" this.Write("."); #line default #line hidden #line 305 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 305 "" this.Write("() != parse_"); #line default #line hidden #line 305 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name)); #line default #line hidden #line 305 "" this.Write("(token)) {\n std::stringstream sstm;\n sstm << \"Error in cycle \" << c" + "ycle << std::endl;\n sstm << \"Expected value \" << "); #line default #line hidden #line 308 "" this.Write(this.ToStringHelper.ToStringWithCulture(typecast)); #line default #line hidden #line 308 "" this.Write("parse_"); #line default #line hidden #line 308 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.TypeScope.GetType(signal).Name)); #line default #line hidden #line 308 "" this.Write("(token) << \", but got \" << "); #line default #line hidden #line 308 "" this.Write(this.ToStringHelper.ToStringWithCulture(typecast)); #line default #line hidden #line 308 "" this.Write("bus_"); #line default #line hidden #line 308 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusNameToValidName(signal.Parent as AST.Bus))); #line default #line hidden #line 308 "" this.Write("."); #line default #line hidden #line 308 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 308 "" this.Write("() << \" for field \" << "); #line default #line hidden #line 308 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 308 "" this.Write("_SIGNAL_NAMES[field] << \" (raw: \" << token << \")\" << std::endl;\n throw Mes" + "sageException(sstm.str());\n }\n field++;\n"); #line default #line hidden #line 312 "" } #line default #line hidden #line 313 "" } #line default #line hidden #line 314 "" this.Write("}\n\nvoid "); #line default #line hidden #line 316 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.AssemblyNameToFileName(Network))); #line default #line hidden #line 316 "" this.Write("::Stop()\n{\n if (trace_input != NULL) {\n trace_input->close();\n d" + "elete trace_input;\n }\n}\n"); #line default #line hidden return(this.GenerationEnvironment.ToString()); }
public virtual string TransformText() { this.GenerationEnvironment = null; #line 6 "" this.Write(@" library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; -- library SYSTEM_TYPES; use work.SYSTEM_TYPES.ALL; -- User defined packages here -- #### USER-DATA-IMPORTS-START -- #### USER-DATA-IMPORTS-END package CUSTOM_TYPES is -- User defined types here -- #### USER-DATA-CORETYPES-START -- #### USER-DATA-CORETYPES-END "); #line default #line hidden #line 24 "" if (RS.CustomTypes.Any()) { #line default #line hidden #line 25 "" this.Write(" -- Types for processes\n"); #line default #line hidden #line 26 "" foreach (var t in RS.CustomTypes) { #line default #line hidden #line 27 "" this.Write(" type "); #line default #line hidden #line 27 "" this.Write(this.ToStringHelper.ToStringWithCulture(t.ToSafeVHDLName())); #line default #line hidden #line 27 "" this.Write(" is\n"); #line default #line hidden #line 28 "" foreach (var f in RS.ListMembers(t)) { #line default #line hidden #line 29 "" this.Write(" "); #line default #line hidden #line 29 "" this.Write(this.ToStringHelper.ToStringWithCulture(f)); #line default #line hidden #line 29 "" this.Write("\n"); #line default #line hidden #line 30 "" } #line default #line hidden #line 31 "" this.Write("\n"); #line default #line hidden #line 32 "" } #line default #line hidden #line 33 "" this.Write("\n"); #line default #line hidden #line 34 "" } #line default #line hidden #line 35 "" foreach (var t in RS.TypeDefinitions) { #line default #line hidden #line 36 "" this.Write(" "); #line default #line hidden #line 36 "" this.Write(this.ToStringHelper.ToStringWithCulture(t)); #line default #line hidden #line 36 "" this.Write(";\n"); #line default #line hidden #line 37 "" } #line default #line hidden #line 38 "" this.Write("\n"); #line default #line hidden #line 39 "" foreach (var enumtype in RS.EnumTypes.Where(x => x.IsIrregularEnum)) { #line default #line hidden #line 40 "" this.Write(" -- Converts an integer to "); #line default #line hidden #line 40 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 40 "" this.Write("\n pure function fromValue_"); #line default #line hidden #line 41 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 41 "" this.Write("(v: INTEGER) return "); #line default #line hidden #line 41 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 41 "" this.Write(";\n -- Converts a "); #line default #line hidden #line 42 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 42 "" this.Write(" to an integer\n pure function toValue_"); #line default #line hidden #line 43 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 43 "" this.Write("(v: "); #line default #line hidden #line 43 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 43 "" this.Write(") return INTEGER;\n"); #line default #line hidden #line 44 "" } #line default #line hidden #line 45 "" this.Write("\n"); #line default #line hidden #line 46 "" if (RS.BusArrays.Any()) { #line default #line hidden #line 47 "" this.Write(" -- Bus array definitions\n"); #line default #line hidden #line 48 "" foreach (var signal in RS.BusArrays) { var vhdltype = RS.VHDLType(signal); var elementtype = RS.TypeScope.GetByName(vhdltype.ElementName); var bus = signal.Parent as AST.Bus; var arraylength = RS.GetArrayLength(signal); if (elementtype.IsSystemType) { #line default #line hidden #line 55 "" this.Write(" subtype "); #line default #line hidden #line 55 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 55 "" this.Write("_"); #line default #line hidden #line 55 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 55 "" this.Write("_type is "); #line default #line hidden #line 55 "" this.Write(this.ToStringHelper.ToStringWithCulture(elementtype.ToSafeVHDLName())); #line default #line hidden #line 55 "" this.Write("_ARRAY(0 to "); #line default #line hidden #line 55 "" this.Write(this.ToStringHelper.ToStringWithCulture(arraylength)); #line default #line hidden #line 55 "" this.Write(" - 1);\n"); #line default #line hidden #line 56 "" } else if (RS.Config.USE_EXPLICIT_LITERAL_ARRAY_LENGTH) { #line default #line hidden #line 57 "" this.Write(" type "); #line default #line hidden #line 57 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 57 "" this.Write("_"); #line default #line hidden #line 57 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 57 "" this.Write("_type is array (0 to "); #line default #line hidden #line 57 "" this.Write(this.ToStringHelper.ToStringWithCulture(arraylength - 1)); #line default #line hidden #line 57 "" this.Write(") of "); #line default #line hidden #line 57 "" this.Write(this.ToStringHelper.ToStringWithCulture(elementtype.ToSafeVHDLName())); #line default #line hidden #line 57 "" this.Write(";\n"); #line default #line hidden #line 58 "" } else { #line default #line hidden #line 59 "" this.Write(" type "); #line default #line hidden #line 59 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 59 "" this.Write("_"); #line default #line hidden #line 59 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 59 "" this.Write("_type is array (0 to "); #line default #line hidden #line 59 "" this.Write(this.ToStringHelper.ToStringWithCulture(arraylength)); #line default #line hidden #line 59 "" this.Write(" - 1) of "); #line default #line hidden #line 59 "" this.Write(this.ToStringHelper.ToStringWithCulture(elementtype.ToSafeVHDLName())); #line default #line hidden #line 59 "" this.Write(";\n"); #line default #line hidden #line 60 "" } #line default #line hidden #line 61 "" } #line default #line hidden #line 62 "" } #line default #line hidden #line 63 "" this.Write("\n"); #line default #line hidden #line 64 "" foreach (var enumtype in RS.EnumTypes) { #line default #line hidden #line 65 "" this.Write(" -- converts "); #line default #line hidden #line 65 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.Name)); #line default #line hidden #line 65 "" this.Write(" into a string\n pure function str(b: "); #line default #line hidden #line 66 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 66 "" this.Write(") return string;\n"); #line default #line hidden #line 67 "" } #line default #line hidden #line 68 "" this.Write("\n"); #line default #line hidden #line 69 "" if (RS.Constants.Any()) { #line default #line hidden #line 70 "" this.Write(" -- Constant definitions\n"); #line default #line hidden #line 71 "" } #line default #line hidden #line 72 "" foreach (var c in RS.Constants) { #line default #line hidden #line 73 "" this.Write(" "); #line default #line hidden #line 73 "" this.Write(this.ToStringHelper.ToStringWithCulture(c)); #line default #line hidden #line 73 "" this.Write(";\n"); #line default #line hidden #line 74 "" } #line default #line hidden #line 75 "" this.Write("\n\n-- User defined types here\n-- #### USER-DATA-TRAILTYPES-START\n-- #### USER-DATA" + "-TRAILTYPES-END\n\n\nend CUSTOM_TYPES;\n\n"); #line default #line hidden #line 84 "" if (RS.EnumTypes.Any()) { #line default #line hidden #line 85 "" this.Write("package body CUSTOM_TYPES is\n"); #line default #line hidden #line 86 "" foreach (var enumtype in RS.EnumTypes) { #line default #line hidden #line 87 "" this.Write(" -- converts "); #line default #line hidden #line 87 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype)); #line default #line hidden #line 87 "" this.Write(" into a string\n pure function str(b: "); #line default #line hidden #line 88 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 88 "" this.Write(") return string is\n begin\n return "); #line default #line hidden #line 90 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 90 "" this.Write("\'image(b);\n end str;\n\n"); #line default #line hidden #line 93 "" if (enumtype.IsIrregularEnum) { #line default #line hidden #line 94 "" this.Write(" -- Converts an integer to "); #line default #line hidden #line 94 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 94 "" this.Write("\n pure function fromValue_"); #line default #line hidden #line 95 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 95 "" this.Write("(v: INTEGER) return "); #line default #line hidden #line 95 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 95 "" this.Write(" is\n begin\n case v is\n"); #line default #line hidden #line 98 "" foreach (var f in RS.GetEnumValues(enumtype)) { #line default #line hidden #line 99 "" this.Write(" when "); #line default #line hidden #line 99 "" this.Write(this.ToStringHelper.ToStringWithCulture(f.Value)); #line default #line hidden #line 99 "" this.Write(" =>\n return "); #line default #line hidden #line 100 "" this.Write(this.ToStringHelper.ToStringWithCulture(f.Key)); #line default #line hidden #line 100 "" this.Write(";\n"); #line default #line hidden #line 101 "" } #line default #line hidden #line 102 "" this.Write(" when others =>\n return "); #line default #line hidden #line 103 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetEnumValues(enumtype).First().Key)); #line default #line hidden #line 103 "" this.Write(";\n end case;\n end fromValue_"); #line default #line hidden #line 105 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 105 "" this.Write(";\n\n -- Converts a "); #line default #line hidden #line 107 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 107 "" this.Write(" to an integer\n pure function toValue_"); #line default #line hidden #line 108 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 108 "" this.Write("(v: "); #line default #line hidden #line 108 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 108 "" this.Write(") return INTEGER is\n begin\n case v is\n"); #line default #line hidden #line 111 "" foreach (var f in RS.GetEnumValues(enumtype)) { #line default #line hidden #line 112 "" this.Write(" when "); #line default #line hidden #line 112 "" this.Write(this.ToStringHelper.ToStringWithCulture(f.Key)); #line default #line hidden #line 112 "" this.Write(" =>\n return "); #line default #line hidden #line 113 "" this.Write(this.ToStringHelper.ToStringWithCulture(f.Value)); #line default #line hidden #line 113 "" this.Write(";\n"); #line default #line hidden #line 114 "" } #line default #line hidden #line 115 "" this.Write(" when others =>\n return "); #line default #line hidden #line 116 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetEnumValues(enumtype).First().Value)); #line default #line hidden #line 116 "" this.Write(";\n end case;\n end toValue_"); #line default #line hidden #line 118 "" this.Write(this.ToStringHelper.ToStringWithCulture(enumtype.ToSafeVHDLName())); #line default #line hidden #line 118 "" this.Write(";\n\n"); #line default #line hidden #line 120 "" } #line default #line hidden #line 121 "" } #line default #line hidden #line 122 "" this.Write("\n\n-- User defined bodies here\n-- #### USER-DATA-BODY-START\n-- #### USER-DATA-BODY" + "-END\n\nend CUSTOM_TYPES;\n"); #line default #line hidden #line 129 "" } #line default #line hidden return(this.GenerationEnvironment.ToString()); }
public virtual string TransformText() { this.GenerationEnvironment = null; #line 1 "" this.Write(""); #line default #line hidden #line 6 "" this.Write("#include <iostream>\n#include <cstring>\n#include \""); #line default #line hidden #line 8 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.BusDefinitionsFileName(Network))); #line default #line hidden #line 8 "" this.Write("\"\n\n// Insert additional includes here\n// #### USER-DATA-INCLUDE-START\n// #### USE" + "R-DATA-INCLUDE-END\n\n"); #line default #line hidden #line 14 "" var known = new HashSet <Type>(); foreach (var bus in Network.Busses) { if (known.Contains(bus.SourceType)) { continue; } known.Add(bus.SourceType); #line default #line hidden #line 21 "" this.Write("\n"); #line default #line hidden #line 22 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 22 "" this.Write("::"); #line default #line hidden #line 22 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 22 "" this.Write(" () {\n"); #line default #line hidden #line 23 "" foreach (var signal in bus.Signals) { var cpptype = RS.TypeScope.GetType(signal); if (cpptype.IsArray) { var eltype = cpptype.ElementName; string arraylen = string.Empty; if (signal.DefaultValue is SME.AST.ArrayCreateExpression) { arraylen = (signal.DefaultValue as SME.AST.ArrayCreateExpression).ElementExpressions.Length.ToString(); } else if (signal.DefaultValue is SME.AST.EmptyArrayCreateExpression) { arraylen = RS.Renderer.RenderExpression((signal.DefaultValue as SME.AST.EmptyArrayCreateExpression).SizeExpression); } else { arraylen = RS.GetArrayLength(signal).DefaultValue.ToString(); } #line default #line hidden #line 37 "" this.Write(" \n size_"); #line default #line hidden #line 38 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 38 "" this.Write(" = "); #line default #line hidden #line 38 "" this.Write(this.ToStringHelper.ToStringWithCulture(arraylen)); #line default #line hidden #line 38 "" this.Write(";\n valid_"); #line default #line hidden #line 39 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 39 "" this.Write(" = new bool[size_"); #line default #line hidden #line 39 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 39 "" this.Write("];\n written_"); #line default #line hidden #line 40 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 40 "" this.Write(" = new bool[size_"); #line default #line hidden #line 40 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 40 "" this.Write("];\n staged_"); #line default #line hidden #line 41 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 41 "" this.Write(" = new bool[size_"); #line default #line hidden #line 41 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 41 "" this.Write("];\n\n write_"); #line default #line hidden #line 43 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 43 "" this.Write(" = new "); #line default #line hidden #line 43 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 43 "" this.Write("[size_"); #line default #line hidden #line 43 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 43 "" this.Write("];\n read_"); #line default #line hidden #line 44 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 44 "" this.Write(" = new "); #line default #line hidden #line 44 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 44 "" this.Write("[size_"); #line default #line hidden #line 44 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 44 "" this.Write("];\n\n std::memset(written_"); #line default #line hidden #line 46 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 46 "" this.Write(", 0, size_"); #line default #line hidden #line 46 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 46 "" this.Write(" * sizeof(bool));\n std::memset(staged_"); #line default #line hidden #line 47 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 47 "" this.Write(", 0, size_"); #line default #line hidden #line 47 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 47 "" this.Write(" * sizeof(bool));\n"); #line default #line hidden #line 48 "" if (signal.DefaultValue == null) { #line default #line hidden #line 49 "" this.Write(" std::memset(valid_"); #line default #line hidden #line 49 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 49 "" this.Write(", 0, size_"); #line default #line hidden #line 49 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 49 "" this.Write(" * sizeof(bool));\n"); #line default #line hidden #line 50 "" } else { #line default #line hidden #line 51 "" this.Write(" std::memset(valid_"); #line default #line hidden #line 51 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 51 "" this.Write(", 1, size_"); #line default #line hidden #line 51 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 51 "" this.Write(" * sizeof(bool));\n"); #line default #line hidden #line 52 "" if ((signal.DefaultValue is SME.AST.ArrayCreateExpression) || signal.DefaultValue is Array) { #line default #line hidden #line 53 "" this.Write(" "); #line default #line hidden #line 53 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 53 "" this.Write(" orig_"); #line default #line hidden #line 53 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 53 "" this.Write("[] = "); #line default #line hidden #line 53 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.Renderer.GetInitializer(signal))); #line default #line hidden #line 53 "" this.Write(";\n std::memcpy(read_"); #line default #line hidden #line 54 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 54 "" this.Write(", orig_"); #line default #line hidden #line 54 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 54 "" this.Write(", "); #line default #line hidden #line 54 "" this.Write(this.ToStringHelper.ToStringWithCulture(arraylen)); #line default #line hidden #line 54 "" this.Write(" * sizeof("); #line default #line hidden #line 54 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 54 "" this.Write("));\n std::memcpy(write_"); #line default #line hidden #line 55 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 55 "" this.Write(", orig_"); #line default #line hidden #line 55 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 55 "" this.Write(", "); #line default #line hidden #line 55 "" this.Write(this.ToStringHelper.ToStringWithCulture(arraylen)); #line default #line hidden #line 55 "" this.Write(" * sizeof("); #line default #line hidden #line 55 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 55 "" this.Write("));\n"); #line default #line hidden #line 56 "" } #line default #line hidden #line 57 "" } #line default #line hidden #line 58 "" } else { #line default #line hidden #line 59 "" this.Write(" written_"); #line default #line hidden #line 59 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 59 "" this.Write(" = false;\n"); #line default #line hidden #line 60 "" if (signal.DefaultValue == null) { #line default #line hidden #line 61 "" this.Write(" valid_"); #line default #line hidden #line 61 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 61 "" this.Write(" = false;\n"); #line default #line hidden #line 62 "" } #line default #line hidden #line 63 "" } #line default #line hidden #line 64 "" } #line default #line hidden #line 65 "" this.Write("\n"); #line default #line hidden #line 66 "" foreach (var signal in bus.Signals.Where(x => x.DefaultValue != null)) { var cpptype = RS.TypeScope.GetType(signal); var ini = RS.Renderer.GetInitializer(signal); if (!cpptype.IsArray) { #line default #line hidden #line 71 "" this.Write(" valid_"); #line default #line hidden #line 71 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 71 "" this.Write(" = true;\n"); #line default #line hidden #line 72 "" } #line default #line hidden #line 73 "" if (!string.IsNullOrWhiteSpace(ini)) { #line default #line hidden #line 74 "" this.Write(" read_"); #line default #line hidden #line 74 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 74 "" this.Write(" = write_"); #line default #line hidden #line 74 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 74 "" this.Write(" = "); #line default #line hidden #line 74 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.Renderer.GetInitializer(signal))); #line default #line hidden #line 74 "" this.Write(";\n"); #line default #line hidden #line 75 "" } #line default #line hidden #line 76 "" } #line default #line hidden #line 77 "" this.Write("}\n\n"); #line default #line hidden #line 79 "" foreach (var signal in bus.Signals) { var cpptype = RS.TypeScope.GetType(signal); if (cpptype.IsArray) { var eltype = cpptype.ElementName; #line default #line hidden #line 85 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 85 "" this.Write(" "); #line default #line hidden #line 85 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 85 "" this.Write("::"); #line default #line hidden #line 85 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 85 "" this.Write("(size_t index) const {\n if (index >= size_"); #line default #line hidden #line 86 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 86 "" this.Write(")\n throw IndexOutOfBoundsException(\"Invalid index: "); #line default #line hidden #line 87 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 87 "" this.Write("."); #line default #line hidden #line 87 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 87 "" this.Write("\");\n if (!valid_"); #line default #line hidden #line 88 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 88 "" this.Write("[index])\n throw InvalidReadException(\"Invalid read: "); #line default #line hidden #line 89 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 89 "" this.Write("."); #line default #line hidden #line 89 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 89 "" this.Write("\");\n\n return read_"); #line default #line hidden #line 91 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 91 "" this.Write("[index];\n}\n\n"); #line default #line hidden #line 94 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 94 "" this.Write(" "); #line default #line hidden #line 94 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 94 "" this.Write("::"); #line default #line hidden #line 94 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 94 "" this.Write("(size_t index, "); #line default #line hidden #line 94 "" this.Write(this.ToStringHelper.ToStringWithCulture(eltype)); #line default #line hidden #line 94 "" this.Write(" value) {\n if (index >= size_"); #line default #line hidden #line 95 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 95 "" this.Write(")\n throw IndexOutOfBoundsException(\"Invalid index: "); #line default #line hidden #line 96 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 96 "" this.Write("."); #line default #line hidden #line 96 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 96 "" this.Write("\");\n if (written_"); #line default #line hidden #line 97 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 97 "" this.Write("[index])\n throw InvalidDoubleWriteException(\"Invalid write: "); #line default #line hidden #line 98 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 98 "" this.Write("."); #line default #line hidden #line 98 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 98 "" this.Write("\");\n\n staged_"); #line default #line hidden #line 100 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 100 "" this.Write("[index] = true;\n return write_"); #line default #line hidden #line 101 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 101 "" this.Write("[index] = value;\n}\n"); #line default #line hidden #line 103 "" } else { #line default #line hidden #line 104 "" this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal))); #line default #line hidden #line 104 "" this.Write(" "); #line default #line hidden #line 104 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 104 "" this.Write("::"); #line default #line hidden #line 104 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 104 "" this.Write("() const {\n if (!valid_"); #line default #line hidden #line 105 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 105 "" this.Write(")\n throw InvalidReadException(\"Invalid read: "); #line default #line hidden #line 106 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 106 "" this.Write("."); #line default #line hidden #line 106 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 106 "" this.Write("\");\n\n return read_"); #line default #line hidden #line 108 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 108 "" this.Write(";\n}\n\n"); #line default #line hidden #line 111 "" this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal))); #line default #line hidden #line 111 "" this.Write(" "); #line default #line hidden #line 111 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 111 "" this.Write("::"); #line default #line hidden #line 111 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 111 "" this.Write("("); #line default #line hidden #line 111 "" this.Write(this.ToStringHelper.ToStringWithCulture(Type(signal))); #line default #line hidden #line 111 "" this.Write(" value) {\n if (written_"); #line default #line hidden #line 112 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 112 "" this.Write(")\n throw InvalidDoubleWriteException(\"Invalid write: "); #line default #line hidden #line 113 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 113 "" this.Write("."); #line default #line hidden #line 113 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 113 "" this.Write("\");\n\n staged_"); #line default #line hidden #line 115 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 115 "" this.Write(" = true;\n return write_"); #line default #line hidden #line 116 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 116 "" this.Write(" = value;\n}\n"); #line default #line hidden #line 118 "" } #line default #line hidden #line 119 "" } #line default #line hidden #line 120 "" this.Write("\nvoid "); #line default #line hidden #line 121 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 121 "" this.Write("::forward_signals() {\n size_t i;\n\n"); #line default #line hidden #line 124 "" foreach (var signal in bus.Signals) { var cpptype = RS.TypeScope.GetType(signal); if (cpptype.IsArray) { var eltype = cpptype.ElementName; #line default #line hidden #line 129 "" this.Write(" for(i = 0; i < size_"); #line default #line hidden #line 129 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 129 "" this.Write("; i++) {\n if (staged_"); #line default #line hidden #line 130 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 130 "" this.Write("[i]) {\n written_"); #line default #line hidden #line 131 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 131 "" this.Write("[i] = true;\n staged_"); #line default #line hidden #line 132 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 132 "" this.Write("[i] = false;\n valid_"); #line default #line hidden #line 133 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 133 "" this.Write("[i] = true;\n read_"); #line default #line hidden #line 134 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 134 "" this.Write("[i] = write_"); #line default #line hidden #line 134 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 134 "" this.Write("[i];\n }\n }\n"); #line default #line hidden #line 137 "" } else { #line default #line hidden #line 138 "" this.Write(" if (staged_"); #line default #line hidden #line 138 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 138 "" this.Write(") {\n written_"); #line default #line hidden #line 139 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 139 "" this.Write(" = true;\n staged_"); #line default #line hidden #line 140 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 140 "" this.Write(" = false;\n valid_"); #line default #line hidden #line 141 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 141 "" this.Write(" = true;\n read_"); #line default #line hidden #line 142 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 142 "" this.Write(" = write_"); #line default #line hidden #line 142 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 142 "" this.Write(";\n }\n"); #line default #line hidden #line 144 "" } #line default #line hidden #line 145 "" } #line default #line hidden #line 146 "" this.Write("}\n\nvoid "); #line default #line hidden #line 148 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 148 "" this.Write("::propagate_signals() {\n size_t i;\n\n"); #line default #line hidden #line 151 "" foreach (var signal in bus.Signals) { var cpptype = RS.TypeScope.GetType(signal); if (cpptype.IsArray) { var eltype = cpptype.ElementName; #line default #line hidden #line 155 "" this.Write(" for (i = 0; i < size_"); #line default #line hidden #line 155 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 155 "" this.Write("; i++) {\n if (written_"); #line default #line hidden #line 156 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 156 "" this.Write("[i]) {\n written_"); #line default #line hidden #line 157 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 157 "" this.Write("[i] = false;\n }\n }\n"); #line default #line hidden #line 160 "" } else { #line default #line hidden #line 161 "" this.Write(" if (written_"); #line default #line hidden #line 161 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 161 "" this.Write(") {\n written_"); #line default #line hidden #line 162 "" this.Write(this.ToStringHelper.ToStringWithCulture(signal.Name)); #line default #line hidden #line 162 "" this.Write(" = false;\n }\n"); #line default #line hidden #line 164 "" } #line default #line hidden #line 165 "" } #line default #line hidden #line 166 "" this.Write("}\n\n"); #line default #line hidden #line 168 "" } #line default #line hidden #line 169 "" this.Write("\n// Insert additional code and classes here\n// #### USER-DATA-EXTRA-START\n// ####" + " USER-DATA-EXTRA-END\n"); #line default #line hidden return(this.GenerationEnvironment.ToString()); }