183b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com/* 2a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * Copyright (C) 2007 The Android Open Source Project 383b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * 4a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * Licensed under the Apache License, Version 2.0 (the "License"); 5a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * you may not use this file except in compliance with the License. 6a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * You may obtain a copy of the License at 783b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * 8a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * http://www.apache.org/licenses/LICENSE-2.0 9a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * 10a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * Unless required by applicable law or agreed to in writing, software 11a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * distributed under the License is distributed on an "AS IS" BASIS, 12a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * See the License for the specific language governing permissions and 14a7139f6586c9bb8452e4c648ce582f8fbc626740JesusFreke@JesusFreke.com * limitations under the License. 1583b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com */ 1683b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com 17128e8279c3cf44cc1d1c8f263035ba8e4044d5c6JesusFreke@JesusFreke.com/* 18128e8279c3cf44cc1d1c8f263035ba8e4044d5c6JesusFreke@JesusFreke.com * As per the Apache license requirements, this file has been modified 19128e8279c3cf44cc1d1c8f263035ba8e4044d5c6JesusFreke@JesusFreke.com * from its original state. 20128e8279c3cf44cc1d1c8f263035ba8e4044d5c6JesusFreke@JesusFreke.com * 21128e8279c3cf44cc1d1c8f263035ba8e4044d5c6JesusFreke@JesusFreke.com * Such modifications are Copyright (C) 2010 Ben Gruver, and are released 22128e8279c3cf44cc1d1c8f263035ba8e4044d5c6JesusFreke@JesusFreke.com * under the original license 23128e8279c3cf44cc1d1c8f263035ba8e4044d5c6JesusFreke@JesusFreke.com */ 24128e8279c3cf44cc1d1c8f263035ba8e4044d5c6JesusFreke@JesusFreke.com 2583b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.compackage org.jf.dexlib.Util; 2683b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com 2783b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com/** 2883b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * Interface for a binary output destination that may be augmented 2983b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * with textual annotations. 3083b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com */ 3183b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.compublic interface AnnotatedOutput 3283b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com extends Output { 3383b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com /** 3483b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * Get whether this instance will actually keep annotations. 3583b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * 3683b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * @return <code>true</code> iff annotations are being kept 3783b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com */ 3883b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com public boolean annotates(); 3983b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com 4083b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com /** 4183b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * Get whether this instance is intended to keep verbose annotations. 4283b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * Annotators may use the result of calling this method to inform their 4383b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * annotation activity. 4483b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * 4583b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * @return <code>true</code> iff annotations are to be verbose 4683b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com */ 4783b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com public boolean isVerbose(); 4883b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com 4983b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com /** 5083b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * Add an annotation for the subsequent output. Any previously 5183b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * open annotation will be closed by this call, and the new 5283b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * annotation marks all subsequent output until another annotation 5383b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * call. 5483b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * 5583b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * @param msg non-null; the annotation message 5683b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com */ 5783b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com public void annotate(String msg); 5883b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com 5983b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com /** 6083b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * Add an annotation for a specified amount of subsequent 6183b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * output. Any previously open annotation will be closed by this 6283b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * call. If there is already pending annotation from one or more 6383b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * previous calls to this method, the new call "consumes" output 6483b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * after all the output covered by the previous calls. 6583b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * 6683b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * @param amt >= 0; the amount of output for this annotation to 6783b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * cover 6883b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * @param msg non-null; the annotation message 6983b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com */ 7083b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com public void annotate(int amt, String msg); 7183b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com 7283b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com /** 7383b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * End the most recent annotation. Subsequent output will be unannotated, 7483b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * until the next call to {@link #annotate}. 7583b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com */ 7683b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com public void endAnnotation(); 7783b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com 7883b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com /** 7983b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * Get the maximum width of the annotated output. This is advisory: 8083b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * Implementations of this interface are encouraged to deal with too-wide 8183b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * output, but annotaters are encouraged to attempt to avoid exceeding 8283b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * the indicated width. 8383b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * 8483b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com * @return >= 1; the maximum width 8583b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com */ 8683b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com public int getAnnotationWidth(); 8783b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com 8883b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com public void setIndentAmount(int indentAmount); 8983b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com public void indent(); 9083b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com public void deindent(); 9183b80f81d311b233188c281059aad4a9f5e8b4e6JesusFreke@JesusFreke.com}