Index: tools/gn/functions.h |
diff --git a/tools/gn/functions.h b/tools/gn/functions.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..806de1dda990ade27d2ee057a43a350c154cfbce |
--- /dev/null |
+++ b/tools/gn/functions.h |
@@ -0,0 +1,182 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef TOOLS_GN_FUNCTIONS_H_ |
+#define TOOLS_GN_FUNCTIONS_H_ |
+ |
+#include <string> |
+#include <vector> |
+ |
+class Err; |
+class BlockNode; |
+class FunctionCallNode; |
+class Label; |
+class ListNode; |
+class ParseNode; |
+class Scope; |
+class SourceDir; |
+class Token; |
+class Value; |
+ |
+Value ExecuteFunction(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ BlockNode* block, // Optional. |
+ Err* err); |
+ |
+// Function executing functions ----------------------------------------------- |
+ |
+Value ExecuteTemplate(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ BlockNode* block, |
+ Err* err); |
+Value ExecuteExecScript(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ Err* err); |
+Value ExecuteProcessFileTemplate(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ Err* err); |
+Value ExecuteReadFile(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ Err* err); |
+Value ExecuteSetDefaultToolchain(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ Err* err); |
+Value ExecuteTool(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ BlockNode* block, |
+ Err* err); |
+Value ExecuteToolchain(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ BlockNode* block, |
+ Err* err); |
+Value ExecuteWriteFile(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ Err* err); |
+ |
+// Target-generating functions. |
+Value ExecuteComponent(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ BlockNode* block, |
+ Err* err); |
+Value ExecuteCopy(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ Err* err); |
+Value ExecuteCustom(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ BlockNode* block, |
+ Err* err); |
+Value ExecuteExecutable(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ BlockNode* block, |
+ Err* err); |
+Value ExecuteSharedLibrary(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ BlockNode* block, |
+ Err* err); |
+Value ExecuteStaticLibrary(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ BlockNode* block, |
+ Err* err); |
+Value ExecuteGroup(Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ BlockNode* block, |
+ Err* err); |
+ |
+// Helper functions ----------------------------------------------------------- |
+ |
+// Verifies that the current scope is not processing an import. If it is, it |
+// will set the error, blame the given parse node for it, and return false. |
+bool EnsureNotProcessingImport(const ParseNode* node, |
+ const Scope* scope, |
+ Err* err); |
+ |
+// Like EnsureNotProcessingImport but checks for running the build config. |
+bool EnsureNotProcessingBuildConfig(const ParseNode* node, |
+ const Scope* scope, |
+ Err* err); |
+ |
+// Sets up the |block_scope| for executing a target (or something like it). |
+// The |scope| is the containing scope. It should have been already set as the |
+// parent for the |block_scope| when the |block_scope| was created. |
+// |
+// This will set up the target defaults and set the |target_name| variable in |
+// the block scope to the current target name, which is assumed to be the first |
+// argument to the function. |
+// |
+// On success, returns true. On failure, sets the error and returns false. |
+bool FillTargetBlockScope(const Scope* scope, |
+ const FunctionCallNode* function, |
+ const char* target_type, |
+ const BlockNode* block, |
+ const std::vector<Value>& args, |
+ Scope* block_scope, |
+ Err* err); |
+ |
+// Validates that the given function call has one string argument. This is |
+// the most common function signature, so it saves space to have this helper. |
+// Returns false and sets the error on failure. |
+bool EnsureSingleStringArg(const FunctionCallNode* function, |
+ const std::vector<Value>& args, |
+ Err* err); |
+ |
+// Returns the source directory for the file comtaining the given function |
+// invocation. |
+const SourceDir& SourceDirForFunctionCall(const FunctionCallNode* function); |
+ |
+// Returns the name of the toolchain for the given scope. |
+const Label& ToolchainLabelForScope(const Scope* scope); |
+ |
+// Generates a label for the given scope, using the current directory and |
+// toolchain, and the given name. |
+Label MakeLabelForScope(const Scope* scope, |
+ const FunctionCallNode* function, |
+ const std::string& name); |
+ |
+// Function name constants ---------------------------------------------------- |
+ |
+namespace functions { |
+ |
+extern const char kAssert[]; |
+extern const char kComponent[]; |
+extern const char kConfig[]; |
+extern const char kCopy[]; |
+extern const char kCustom[]; |
+extern const char kDeclareArgs[]; |
+extern const char kExecScript[]; |
+extern const char kExecutable[]; |
+extern const char kGroup[]; |
+extern const char kImport[]; |
+extern const char kPrint[]; |
+extern const char kProcessFileTemplate[]; |
+extern const char kReadFile[]; |
+extern const char kSetDefaults[]; |
+extern const char kSetDefaultToolchain[]; |
+extern const char kSetSourcesAssignmentFilter[]; |
+extern const char kSharedLibrary[]; |
+extern const char kStaticLibrary[]; |
+extern const char kTemplate[]; |
+extern const char kTest[]; |
+extern const char kTool[]; |
+extern const char kToolchain[]; |
+extern const char kWriteFile[]; |
+ |
+} // namespace functions |
+ |
+#endif // TOOLS_GN_FUNCTIONS_H_ |