| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef TOOLS_GN_FUNCTIONS_H_ | |
| 6 #define TOOLS_GN_FUNCTIONS_H_ | |
| 7 | |
| 8 #include <string> | |
| 9 #include <vector> | |
| 10 | |
| 11 class Err; | |
| 12 class BlockNode; | |
| 13 class FunctionCallNode; | |
| 14 class Label; | |
| 15 class ListNode; | |
| 16 class ParseNode; | |
| 17 class Scope; | |
| 18 class SourceDir; | |
| 19 class Token; | |
| 20 class Value; | |
| 21 | |
| 22 Value ExecuteFunction(Scope* scope, | |
| 23 const FunctionCallNode* function, | |
| 24 const std::vector<Value>& args, | |
| 25 BlockNode* block, // Optional. | |
| 26 Err* err); | |
| 27 | |
| 28 // Function executing functions ----------------------------------------------- | |
| 29 | |
| 30 Value ExecuteTemplate(Scope* scope, | |
| 31 const FunctionCallNode* function, | |
| 32 const std::vector<Value>& args, | |
| 33 BlockNode* block, | |
| 34 Err* err); | |
| 35 Value ExecuteExecScript(Scope* scope, | |
| 36 const FunctionCallNode* function, | |
| 37 const std::vector<Value>& args, | |
| 38 Err* err); | |
| 39 Value ExecuteProcessFileTemplate(Scope* scope, | |
| 40 const FunctionCallNode* function, | |
| 41 const std::vector<Value>& args, | |
| 42 Err* err); | |
| 43 Value ExecuteReadFile(Scope* scope, | |
| 44 const FunctionCallNode* function, | |
| 45 const std::vector<Value>& args, | |
| 46 Err* err); | |
| 47 Value ExecuteSetDefaultToolchain(Scope* scope, | |
| 48 const FunctionCallNode* function, | |
| 49 const std::vector<Value>& args, | |
| 50 Err* err); | |
| 51 Value ExecuteTool(Scope* scope, | |
| 52 const FunctionCallNode* function, | |
| 53 const std::vector<Value>& args, | |
| 54 BlockNode* block, | |
| 55 Err* err); | |
| 56 Value ExecuteToolchain(Scope* scope, | |
| 57 const FunctionCallNode* function, | |
| 58 const std::vector<Value>& args, | |
| 59 BlockNode* block, | |
| 60 Err* err); | |
| 61 Value ExecuteWriteFile(Scope* scope, | |
| 62 const FunctionCallNode* function, | |
| 63 const std::vector<Value>& args, | |
| 64 Err* err); | |
| 65 | |
| 66 // Target-generating functions. | |
| 67 Value ExecuteComponent(Scope* scope, | |
| 68 const FunctionCallNode* function, | |
| 69 const std::vector<Value>& args, | |
| 70 BlockNode* block, | |
| 71 Err* err); | |
| 72 Value ExecuteCopy(Scope* scope, | |
| 73 const FunctionCallNode* function, | |
| 74 const std::vector<Value>& args, | |
| 75 Err* err); | |
| 76 Value ExecuteCustom(Scope* scope, | |
| 77 const FunctionCallNode* function, | |
| 78 const std::vector<Value>& args, | |
| 79 BlockNode* block, | |
| 80 Err* err); | |
| 81 Value ExecuteExecutable(Scope* scope, | |
| 82 const FunctionCallNode* function, | |
| 83 const std::vector<Value>& args, | |
| 84 BlockNode* block, | |
| 85 Err* err); | |
| 86 Value ExecuteSharedLibrary(Scope* scope, | |
| 87 const FunctionCallNode* function, | |
| 88 const std::vector<Value>& args, | |
| 89 BlockNode* block, | |
| 90 Err* err); | |
| 91 Value ExecuteStaticLibrary(Scope* scope, | |
| 92 const FunctionCallNode* function, | |
| 93 const std::vector<Value>& args, | |
| 94 BlockNode* block, | |
| 95 Err* err); | |
| 96 Value ExecuteGroup(Scope* scope, | |
| 97 const FunctionCallNode* function, | |
| 98 const std::vector<Value>& args, | |
| 99 BlockNode* block, | |
| 100 Err* err); | |
| 101 | |
| 102 // Helper functions ----------------------------------------------------------- | |
| 103 | |
| 104 // Verifies that the current scope is not processing an import. If it is, it | |
| 105 // will set the error, blame the given parse node for it, and return false. | |
| 106 bool EnsureNotProcessingImport(const ParseNode* node, | |
| 107 const Scope* scope, | |
| 108 Err* err); | |
| 109 | |
| 110 // Like EnsureNotProcessingImport but checks for running the build config. | |
| 111 bool EnsureNotProcessingBuildConfig(const ParseNode* node, | |
| 112 const Scope* scope, | |
| 113 Err* err); | |
| 114 | |
| 115 // Sets up the |block_scope| for executing a target (or something like it). | |
| 116 // The |scope| is the containing scope. It should have been already set as the | |
| 117 // parent for the |block_scope| when the |block_scope| was created. | |
| 118 // | |
| 119 // This will set up the target defaults and set the |target_name| variable in | |
| 120 // the block scope to the current target name, which is assumed to be the first | |
| 121 // argument to the function. | |
| 122 // | |
| 123 // On success, returns true. On failure, sets the error and returns false. | |
| 124 bool FillTargetBlockScope(const Scope* scope, | |
| 125 const FunctionCallNode* function, | |
| 126 const char* target_type, | |
| 127 const BlockNode* block, | |
| 128 const std::vector<Value>& args, | |
| 129 Scope* block_scope, | |
| 130 Err* err); | |
| 131 | |
| 132 // Validates that the given function call has one string argument. This is | |
| 133 // the most common function signature, so it saves space to have this helper. | |
| 134 // Returns false and sets the error on failure. | |
| 135 bool EnsureSingleStringArg(const FunctionCallNode* function, | |
| 136 const std::vector<Value>& args, | |
| 137 Err* err); | |
| 138 | |
| 139 // Returns the source directory for the file comtaining the given function | |
| 140 // invocation. | |
| 141 const SourceDir& SourceDirForFunctionCall(const FunctionCallNode* function); | |
| 142 | |
| 143 // Returns the name of the toolchain for the given scope. | |
| 144 const Label& ToolchainLabelForScope(const Scope* scope); | |
| 145 | |
| 146 // Generates a label for the given scope, using the current directory and | |
| 147 // toolchain, and the given name. | |
| 148 Label MakeLabelForScope(const Scope* scope, | |
| 149 const FunctionCallNode* function, | |
| 150 const std::string& name); | |
| 151 | |
| 152 // Function name constants ---------------------------------------------------- | |
| 153 | |
| 154 namespace functions { | |
| 155 | |
| 156 extern const char kAssert[]; | |
| 157 extern const char kComponent[]; | |
| 158 extern const char kConfig[]; | |
| 159 extern const char kCopy[]; | |
| 160 extern const char kCustom[]; | |
| 161 extern const char kDeclareArgs[]; | |
| 162 extern const char kExecScript[]; | |
| 163 extern const char kExecutable[]; | |
| 164 extern const char kGroup[]; | |
| 165 extern const char kImport[]; | |
| 166 extern const char kPrint[]; | |
| 167 extern const char kProcessFileTemplate[]; | |
| 168 extern const char kReadFile[]; | |
| 169 extern const char kSetDefaults[]; | |
| 170 extern const char kSetDefaultToolchain[]; | |
| 171 extern const char kSetSourcesAssignmentFilter[]; | |
| 172 extern const char kSharedLibrary[]; | |
| 173 extern const char kStaticLibrary[]; | |
| 174 extern const char kTemplate[]; | |
| 175 extern const char kTest[]; | |
| 176 extern const char kTool[]; | |
| 177 extern const char kToolchain[]; | |
| 178 extern const char kWriteFile[]; | |
| 179 | |
| 180 } // namespace functions | |
| 181 | |
| 182 #endif // TOOLS_GN_FUNCTIONS_H_ | |
| OLD | NEW |