public FtMeta CreateCopy() { FtMeta meta = MetaFactory.CreateMeta(); meta.Assign(this); return(meta); }
public EcoreToMetaConverter(ImmutableModel ecore) { _ecore = ecore; _meta = new MutableModel(); _factory = new MetaFactory(_meta); _diagnostics = new DiagnosticBag(); _map = new Dictionary <ImmutableObject, MutableObject>(); }
private static IModelObject CreateAnnotation(string name, MetaFactory factory) { //var annot = factory.MetaAnnotation(); var annot = factory.MetaAttribute(); annot.Name = name; return(annot); }
private static ImmutableModel CreateModel() { MutableModel model = new MutableModel(); MetaFactory factory = new MetaFactory(model); CreateAnnotation("Import", factory); CreateAnnotation("Type", factory); CreateAnnotation("Name", factory); CreateAnnotation("Scope", factory); CreateAnnotation("BaseScope", factory); CreateAnnotation("LocalScope", factory); return(model.ToImmutable()); }
public static FtMeta Create() { return(MetaFactory.CreateMeta()); }
internal protected virtual FtMeta Read(XmlReader reader) { if (!reader.ReadToFollowing(MetaElementTypeFormatter.ToElementName(MetaElementType.FieldedText))) { return(null); } else { bool emptyElement = reader.IsEmptyElement; FieldedTextReadElement rootElement = ReadElement.CreateFieldedTextXmlReadElement(); ReadAttributes(reader, rootElement); if (!emptyElement) { ReadElement activeElement = rootElement; Stack parentStack = new Stack(); int foreignElementDepth = 0; while (activeElement != null) { if (!reader.Read()) { throw new FtMetaSerializationException(Properties.Resources.XmlMetaSerializationReader_Read_IncompleteXmlStream); } switch (reader.NodeType) { case XmlNodeType.Element: emptyElement = reader.IsEmptyElement; if (foreignElementDepth > 0) { if (!emptyElement) { foreignElementDepth++; } } else { MetaElementType elementType; if (!MetaElementTypeFormatter.TryParseElementName(reader.Name, out elementType)) { if (!emptyElement) { foreignElementDepth++; } } else { ReadElement newActiveElement; if (activeElement.TryCreate(elementType, out newActiveElement)) { parentStack.Push(activeElement); activeElement = newActiveElement; ReadAttributes(reader, activeElement); if (emptyElement) { if (parentStack.Count > 0) { activeElement = parentStack.Pop(); } else { activeElement = null; } } } } } break; case XmlNodeType.EndElement: if (foreignElementDepth > 0) { foreignElementDepth--; } else { if (parentStack.Count > 0) { activeElement = parentStack.Pop(); } else { activeElement = null; } } break; } } } string errorDescription; FtMeta result = MetaFactory.CreateMeta(); if (!rootElement.ResolveTo(result, out errorDescription)) { throw new FtMetaSerializationException(errorDescription); } return(result); } }