--- /dev/null
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package analysis
+
+// This file defines types used by client-side JavaScript.
+
+type anchorJSON struct {
+ Text string // HTML
+ Href string // URL
+}
+
+type commOpJSON struct {
+ Op anchorJSON
+ Fn string
+}
+
+// JavaScript's onClickComm() expects a commJSON.
+type commJSON struct {
+ Ops []commOpJSON
+}
+
+// Indicates one of these forms of fact about a type T:
+// T "is implemented by <ByKind> type <Other>" (ByKind != "", e.g. "array")
+// T "implements <Other>" (ByKind == "")
+type implFactJSON struct {
+ ByKind string `json:",omitempty"`
+ Other anchorJSON
+}
+
+// Implements facts are grouped by form, for ease of reading.
+type implGroupJSON struct {
+ Descr string
+ Facts []implFactJSON
+}
+
+// JavaScript's onClickIdent() expects a TypeInfoJSON.
+type TypeInfoJSON struct {
+ Name string // type name
+ Size, Align int64
+ Methods []anchorJSON
+ ImplGroups []implGroupJSON
+}
+
+// JavaScript's onClickCallees() expects a calleesJSON.
+type calleesJSON struct {
+ Descr string
+ Callees []anchorJSON // markup for called function
+}
+
+type callerJSON struct {
+ Func string
+ Sites []anchorJSON
+}
+
+// JavaScript's onClickCallers() expects a callersJSON.
+type callersJSON struct {
+ Callee string
+ Callers []callerJSON
+}
+
+// JavaScript's cgAddChild requires a global array of PCGNodeJSON
+// called CALLGRAPH, representing the intra-package call graph.
+// The first element is special and represents "all external callers".
+type PCGNodeJSON struct {
+ Func anchorJSON
+ Callees []int // indices within CALLGRAPH of nodes called by this one
+}