- new_props.add(p)
- if p.global.intro == p then
- dctx.register(p)
- end
- end
- dctx.sort(new_props)
- for p in new_props do
- dctx.add("<tr><td width=\"20%\" align=\"right\">{p.prototype_head(dctx)}</td><td><b>{p.html_link(dctx)}</b>{p.prototype_body(dctx)}<br/> {p.short_doc}</td></tr>\n")
- end
- dctx.stage("</table><br/>\n")
-
- dctx.open_stage
- dctx.stage("<table border=\"1\" width=\"100%\" cellpadding=\"3\" cellspacing=\"0\">\n")
- if pass != 1 then
- # skip pass 1 because constructors are not inherited
- var cmap = new HashMap[MMLocalClass, Array[MMLocalProperty]]
- var mmap = new HashMap[MMModule, Array[MMLocalProperty]]
- var props = new Array[MMLocalClass]
- for c in che.greaters do
- if c isa MMSrcLocalClass then
- var km = dctx.known_owner_of(c.module)
- var kc = km[c.global]
- if kc == self then continue
- var props: Array[MMLocalProperty]
- if km == module then
- if cmap.has_key(kc) then
- props = cmap[kc]
- else
- props = new Array[MMLocalProperty]
- cmap[kc] = props
- end
- else
- if mmap.has_key(km) then
- props = mmap[km]
- else
- props = new Array[MMLocalProperty]
- mmap[km] = props
- end
- end
- for g in c.global_properties do
- var p = c[g]
- if p.local_class == c and p.need_doc(dctx) and accept_prop(p, pass) then
- props.add(kc[g])
- end
- end
- end
- end
- dctx.open_stage
- dctx.stage("<tr bgcolor=\"#EEEEFF\"><th colspan=\"2\"><small>Inherited {passname}</small></th><tr>\n")
- for c in cshe.linear_extension do
- if not cmap.has_key(c) then continue
- var props = cmap[c]
- if props.is_empty then continue
- dctx.sort(props)
- var properties = new Array[String]
- for p in props do properties.add(p.html_link(dctx))
- dctx.add("<tr><td width=\"20%\"><small>from {c.html_link(dctx)}</small></td><td><small>{properties.join(", ")}</small></td><tr>\n")
- end
- dctx.close_stage
-
- dctx.open_stage
- dctx.stage("<tr bgcolor=\"#EEEEFF\"><th colspan=\"2\"><small>Imported {passname}</small></th><tr>\n")
- for m in module.mhe.linear_extension do
- if not mmap.has_key(m) then continue
- var props = mmap[m]
- if props.is_empty then continue
- dctx.sort(props)
- var properties = new Array[String]
- for p in props do properties.add(p.html_link(dctx))
- dctx.add("<tr><td width=\"20%\"><small>from {m.html_link(dctx)}</small></td><td><small>{properties.join(", ")}</small></td><tr>\n")
- end
- dctx.close_stage
- end
-
- var mmap = new HashMap[MMModule, Array[MMLocalProperty]]
- var props = new Array[MMLocalClass]
- for c in crhe.order do
- if module.mhe <= c.module or dctx.owned_modules.has(c.module) or not c isa MMSrcLocalClass then continue
- var km = dctx.known_owner_of(c.module)
- if module.mhe <= km then continue
- var kc = km[c.global]
- var props: Array[MMLocalProperty]
- if mmap.has_key(km) then
- props = mmap[km]
- else
- props = new Array[MMLocalProperty]
- mmap[km] = props
- end
- for g in c.global_properties do
- var p = c[g]
- if p.local_class == c and p.need_doc(dctx) and accept_prop(p, pass) then
- var kp = kc[g]
- if not props.has(kp) then props.add(kp)
- end
- end
- # c.properties_inherited_from(dctx, self, pass)
- end
- dctx.open_stage
- dctx.stage("<tr bgcolor=\"#EEEEFF\"><th colspan=\"2\"><small>Added {passname} in known modules</small></th><tr>\n")
- for c in crhe.order do
- var m = c.module
- if not mmap.has_key(m) then continue
- var props = mmap[m]
- if props.is_empty then continue
- dctx.sort(props)
- var properties = new Array[String]
- for p in props do properties.add(p.html_link(dctx))
- dctx.add("<tr><td width=\"20%\"><small>in {m.html_link(dctx)}</small></td><td><small>{properties.join(", ")}</small></td><tr>\n")
- end
- dctx.close_stage
- dctx.stage("</table><br/><br/>\n")
- dctx.close_stage