diff options
author | Colin Cross <ccross@android.com> | 2017-03-17 13:09:05 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2017-03-17 13:46:47 -0700 |
commit | 080c1336b5d3a63446a88fe435b1b8283058b7ca (patch) | |
tree | c7d3e3704e20fe44855adfdbc88e429b555187b1 /context.go | |
parent | 3f2d6610873aae4cc14c1ec1d6142d6e5d828494 (diff) | |
download | android_build_blueprint-080c1336b5d3a63446a88fe435b1b8283058b7ca.tar.gz android_build_blueprint-080c1336b5d3a63446a88fe435b1b8283058b7ca.tar.bz2 android_build_blueprint-080c1336b5d3a63446a88fe435b1b8283058b7ca.zip |
Add Context.VisitDirectDeps
Context already has VisitDepsDepthFirst[If], add VisitDirectDeps[If].
Change-Id: Id550bc14275db230c19fd6ca14b67b305dd7d96b
Diffstat (limited to 'context.go')
-rw-r--r-- | context.go | 44 |
1 files changed, 39 insertions, 5 deletions
@@ -2544,9 +2544,45 @@ func (c *Context) VisitAllModulesIf(pred func(Module) bool, c.visitAllModulesIf(pred, visit) } -func (c *Context) VisitDepsDepthFirst(module Module, - visit func(Module)) { +func (c *Context) VisitDirectDeps(module Module, visit func(Module)) { + topModule := c.moduleInfo[module] + var visiting *moduleInfo + + defer func() { + if r := recover(); r != nil { + panic(newPanicErrorf(r, "VisitDirectDeps(%s, %s) for dependency %s", + topModule, funcName(visit), visiting)) + } + }() + + for _, dep := range topModule.directDeps { + visiting = dep.module + visit(dep.module.logicModule) + } +} + +func (c *Context) VisitDirectDepsIf(module Module, pred func(Module) bool, visit func(Module)) { + topModule := c.moduleInfo[module] + + var visiting *moduleInfo + + defer func() { + if r := recover(); r != nil { + panic(newPanicErrorf(r, "VisitDirectDepsIf(%s, %s, %s) for dependency %s", + topModule, funcName(pred), funcName(visit), visiting)) + } + }() + + for _, dep := range topModule.directDeps { + visiting = dep.module + if pred(dep.module.logicModule) { + visit(dep.module.logicModule) + } + } +} + +func (c *Context) VisitDepsDepthFirst(module Module, visit func(Module)) { topModule := c.moduleInfo[module] var visiting *moduleInfo @@ -2564,9 +2600,7 @@ func (c *Context) VisitDepsDepthFirst(module Module, }) } -func (c *Context) VisitDepsDepthFirstIf(module Module, - pred func(Module) bool, visit func(Module)) { - +func (c *Context) VisitDepsDepthFirstIf(module Module, pred func(Module) bool, visit func(Module)) { topModule := c.moduleInfo[module] var visiting *moduleInfo |