/// <summary> /// Sets the main code generator to 'CG'. If CG does not support the right language, throws an exception. /// </summary> public void SetMainCodeGenerator(G25.CodeGenerator CG) { if (CG.Language() != Language) throw new Exception("G25.CodeGeneratorLoader.SetMainCodeGenerator(): the code generator does not generate for language '" + Language + "' but for language '" + CG.Language() + "' instead"); if (m_codeGenerator != null) { if (m_codeGenerator.GetType() == CG.GetType()) return; // else: TO DO; // a duplicate of the code generator was detected. Now what? throw an exception? write an error message to console? TO DO! } m_codeGenerator = CG; }
/// <summary> /// Adds 'P' to the list of code generator plugins'. /// If P does not support the right language, throws an exception. /// Does nothing if 'P' is already on the list. /// </summary> public void AddCodeGeneratorPlugin(G25.CodeGeneratorPlugin P) { if (P.Language() != Language) throw new Exception("G25.CodeGeneratorLoader.AddCodeGeneratorPlugin(): the code generator does not generate for language '" + Language + "' but for language '" + P.Language() + "' instead"); // if already on list simply return for (int i = 0; i < m_codeGeneratorPlugins.Count; i++) if (m_codeGeneratorPlugins[i].GetType() == P.GetType()) return; m_codeGeneratorPlugins.Add(P); }