public override EmberNode CreateNodeFromReader(uint type, BerLib.BerReaderBase reader) { var tag = reader.Tag; switch (type) { case GlowType.Parameter: return(new GlowParameter(tag)); case GlowType.Command: return(new GlowCommand(tag)); case GlowType.Node: return(new GlowNode(tag)); case GlowType.ElementCollection: return(new GlowElementCollection(tag)); case GlowType.StreamEntry: return(new GlowStreamEntry(tag)); case GlowType.StreamCollection: return(new GlowStreamCollection(tag)); case GlowType.StringIntegerPair: return(new GlowStringIntegerPair(tag)); case GlowType.StringIntegerCollection: return(new GlowStringIntegerCollection(tag)); case GlowType.QualifiedNode: return(new GlowQualifiedNode(tag)); case GlowType.QualifiedParameter: return(new GlowQualifiedParameter(tag)); case GlowType.RootElementCollection: return(new GlowRootElementCollection(tag)); case GlowType.StreamDescription: return(new GlowStreamDescription(tag)); case GlowType.Matrix: return(new GlowMatrix(tag)); case GlowType.Target: return(new GlowTarget(tag)); case GlowType.Source: return(new GlowSource(tag)); case GlowType.Connection: return(new GlowConnection(tag)); case GlowType.QualifiedMatrix: return(new GlowQualifiedMatrix(tag)); case GlowType.Label: return(new GlowLabel(tag)); case GlowType.Function: return(new GlowFunction(tag)); case GlowType.QualifiedFunction: return(new GlowQualifiedFunction(tag)); case GlowType.TupleItemDescription: return(new GlowTupleItemDescription(tag)); case GlowType.Invocation: return(new GlowInvocation(tag)); case GlowType.InvocationResult: return(new GlowInvocationResult(tag)); case GlowType.Template: return(new GlowTemplate(tag)); case GlowType.QualifiedTemplate: return(new GlowQualifiedTemplate(tag)); } return(null); }
public override EmberNode CreateNodeFromReader(uint type, BerReaderBase reader) { switch(type & ~BerType.ApplicationFlag) { case 1: return CreateSet(type, reader); case 2: return CreateSequence(type, reader); } return null; }
/// <summary> /// Override this method to create custom EmberNode-derived objects. /// This method is called when a decoder encounters a TLV with an /// application-defined type. /// </summary> /// <param name="type">The type of the decoded TLV, with BerType.ApplicationFlag set.</param> /// <param name="reader">A reader positioned on the TLV. Use the Get() methods of /// BerReaderBase to retrieve the value of the TLV.</param> /// <returns>Return a new instance of a type derived from EmberNode or null /// if no application-defined type is mapped to the passed <paramref name="type"/>.</returns> public abstract EmberNode CreateNodeFromReader(uint type, BerReaderBase reader);
/// <summary> /// Creates an EmberSet object with the passed BerType. Convenience method /// to be called from an overridden CreateNodeFromReader method. /// </summary> protected EmberNode CreateSet(uint type, BerReaderBase reader) { var tag = reader.Tag; var node = new EmberSet(tag, null); node.BerTypeNumber = type; return node; }