Macro.java revision 56ed4167b942ec265f9cee70ac4d71d10b3835ce
19f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
29f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Copyright (C) 2010 Google Inc.
39f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
49f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License");
59f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * you may not use this file except in compliance with the License.
69f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * You may obtain a copy of the License at
79f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
89f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0
99f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Unless required by applicable law or agreed to in writing, software
119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * See the License for the specific language governing permissions and
149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * limitations under the License.
159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage com.google.clearsilver.jsilver.template;
189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport com.google.clearsilver.jsilver.exceptions.JSilverInterpreterException;
209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/**
229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * An executable macro. This exhibits all the same characteristics of a Template.
239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic interface Macro extends Template {
259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Name of macro (e.g. showTable). Used to generate error messages.
289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  String getMacroName();
309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the name of the nth argument defined in the macro. Throws exception if the argument is not
339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * found.
349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  String getArgumentName(int index) throws JSilverInterpreterException;
369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Return the number of arguments this macro expects. Must be equal to the number of arguments
399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * supplied.
409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  int getArgumentCount();
429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson}
439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson