OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [go/] [doc/] [doc.go] - Blame information for rev 774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
// Copyright 2009 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
 
5
// Package doc extracts source code documentation from a Go AST.
6
package doc
7
 
8
import (
9
        "go/ast"
10
        "go/token"
11
)
12
 
13
// Package is the documentation for an entire package.
14
type Package struct {
15
        Doc        string
16
        Name       string
17
        ImportPath string
18
        Imports    []string
19
        Filenames  []string
20
        Bugs       []string
21
 
22
        // declarations
23
        Consts []*Value
24
        Types  []*Type
25
        Vars   []*Value
26
        Funcs  []*Func
27
}
28
 
29
// Value is the documentation for a (possibly grouped) var or const declaration.
30
type Value struct {
31
        Doc   string
32
        Names []string // var or const names in declaration order
33
        Decl  *ast.GenDecl
34
 
35
        order int
36
}
37
 
38
// Type is the documentation for a type declaration.
39
type Type struct {
40
        Doc  string
41
        Name string
42
        Decl *ast.GenDecl
43
 
44
        // associated declarations
45
        Consts  []*Value // sorted list of constants of (mostly) this type
46
        Vars    []*Value // sorted list of variables of (mostly) this type
47
        Funcs   []*Func  // sorted list of functions returning this type
48
        Methods []*Func  // sorted list of methods (including embedded ones) of this type
49
}
50
 
51
// Func is the documentation for a func declaration.
52
type Func struct {
53
        Doc  string
54
        Name string
55
        Decl *ast.FuncDecl
56
 
57
        // methods
58
        // (for functions, these fields have the respective zero value)
59
        Recv  string // actual   receiver "T" or "*T"
60
        Orig  string // original receiver "T" or "*T"
61
        Level int    // embedding level; 0 means not embedded
62
}
63
 
64
// Mode values control the operation of New.
65
type Mode int
66
 
67
const (
68
        // extract documentation for all package-level declarations,
69
        // not just exported ones
70
        AllDecls Mode = 1 << iota
71
 
72
        // show all embedded methods, not just the ones of
73
        // invisible (unexported) anonymous fields
74
        AllMethods
75
)
76
 
77
// New computes the package documentation for the given package AST.
78
// New takes ownership of the AST pkg and may edit or overwrite it.
79
//
80
func New(pkg *ast.Package, importPath string, mode Mode) *Package {
81
        var r reader
82
        r.readPackage(pkg, mode)
83
        r.computeMethodSets()
84
        r.cleanupTypes()
85
        return &Package{
86
                Doc:        r.doc,
87
                Name:       pkg.Name,
88
                ImportPath: importPath,
89
                Imports:    sortedKeys(r.imports),
90
                Filenames:  r.filenames,
91
                Bugs:       r.bugs,
92
                Consts:     sortedValues(r.values, token.CONST),
93
                Types:      sortedTypes(r.types, mode&AllMethods != 0),
94
                Vars:       sortedValues(r.values, token.VAR),
95
                Funcs:      sortedFuncs(r.funcs, true),
96
        }
97
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.