// derive from DebugTemplate not just Template in case we're debugging public BlankTemplate() { code = new CompiledTemplate(); }
protected void RawDefineTemplate(TemplateName name, CompiledTemplate code, IToken definingToken) { CompiledTemplate prev; if (templates.TryGetValue(name, out prev)) { if (!prev.isRegion) { ErrorManager.CompileTimeError(ErrorType.TemplateRedefinition, definingToken); return; } if (prev.isRegion && prev.regionDefType == Template.RegionType.Embedded) { ErrorManager.CompileTimeError(ErrorType.EmbeddedRegionRedefinition, definingToken, GetUnmangledTemplateName(name)); return; } else if (prev.isRegion && prev.regionDefType == Template.RegionType.Explicit) { ErrorManager.CompileTimeError(ErrorType.RegionRedefinition, definingToken, GetUnmangledTemplateName(name)); return; } } templates[name] = code; }
protected internal void DefineImplicitlyDefinedTemplates(CompiledTemplate code) { if (code.implicitlyDefinedTemplates != null) { foreach (CompiledTemplate sub in code.implicitlyDefinedTemplates) { RawDefineTemplate(sub.Name, sub, null); DefineImplicitlyDefinedTemplates(sub); } } }
public void DefineBlankRegion(TemplateName name) { if (name == null) throw new ArgumentNullException(); if (!name.IsRooted) throw new ArgumentException(); // TODO: combine with CompileRegion CompiledTemplate blank = new CompiledTemplate() { isRegion = true, regionDefType = Template.RegionType.Implicit, Name = name }; if (code.implicitlyDefinedTemplates == null) code.implicitlyDefinedTemplates = new List<CompiledTemplate>(); code.implicitlyDefinedTemplates.Add(blank); }
//: this(TemplateGroup.defaultGroup, template) public Template(string template) { //code = TemplateGroup.defaultGroup.DefineTemplate(UnknownName, template); groupThatCreatedThisInstance = TemplateGroup.defaultGroup; code = groupThatCreatedThisInstance.Compile(TemplateName.Root, null, template); code.Name = UnknownName; groupThatCreatedThisInstance.DefineImplicitlyDefinedTemplates(code); }
public Template(TemplateGroup nativeGroup, string template) { code = nativeGroup.DefineTemplate(UnknownName, template); groupThatCreatedThisInstance = nativeGroup; }