aboutsummaryrefslogtreecommitdiffstats
path: root/context.go
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2017-03-17 13:09:05 -0700
committerColin Cross <ccross@android.com>2017-03-17 13:46:47 -0700
commit080c1336b5d3a63446a88fe435b1b8283058b7ca (patch)
treec7d3e3704e20fe44855adfdbc88e429b555187b1 /context.go
parent3f2d6610873aae4cc14c1ec1d6142d6e5d828494 (diff)
downloadandroid_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.go44
1 files changed, 39 insertions, 5 deletions
diff --git a/context.go b/context.go
index 97a3462..989711f 100644
--- a/context.go
+++ b/context.go
@@ -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