in daffodil-core/src/main/scala/org/apache/daffodil/core/dsom/SchemaSet.scala [679:716]
override protected def func(sc: SchemaComponent) = {
val referents: SSC = sc match {
case asc: AnnotatedSchemaComponent => asc.optReferredToComponent.toSeq
case _ => Nil
}
val children: SSC = sc match {
case er: AbstractElementRef => Nil // already have referents above.
case e: ElementDeclMixin =>
e.typeDef match {
case std: SimpleTypeDefBase => Seq(std)
case ctd: ComplexTypeBase => Seq(ctd)
case pt: PrimitiveType => Nil
}
case m: ModelGroup => m.groupMembers
case st: SimpleTypeDefBase =>
st.bases ++
st.optRestriction ++
st.optUnion
case r: Restriction => r.optUnion.toSeq
case u: Union => u.unionMemberTypes
case c: ComplexTypeBase => Seq(c.modelGroup)
case gd: GlobalGroupDef => gd.groupMembers
case stmt: DFDLStatement => Nil
}
val statements: SSC = sc match {
case t: Term => t.statements
case _ => Nil
}
val misc: SSC = sc match {
case eb: ElementBase => {
eb.optPrefixLengthElementDecl.toSeq ++
eb.optRepTypeElementDecl.toSeq
}
case _ => Seq()
}
referents ++ children ++ statements ++ misc
}