KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > aspectj > compiler > crosscuts > ast > WildName


1 /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2  *
3  * This file is part of the compiler and core tools for the AspectJ(tm)
4  * programming language; see http://aspectj.org
5  *
6  * The contents of this file are subject to the Mozilla Public License
7  * Version 1.1 (the "License"); you may not use this file except in
8  * compliance with the License. You may obtain a copy of the License at
9  * either http://www.mozilla.org/MPL/ or http://aspectj.org/MPL/.
10  *
11  * Software distributed under the License is distributed on an "AS IS" basis,
12  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13  * for the specific language governing rights and limitations under the
14  * License.
15  *
16  * The Original Code is AspectJ.
17  *
18  * The Initial Developer of the Original Code is Xerox Corporation. Portions
19  * created by Xerox Corporation are Copyright (C) 1999-2002 Xerox Corporation.
20  * All Rights Reserved.
21  *
22  * Contributor(s):
23  */

24
25 package org.aspectj.compiler.crosscuts.ast;
26 import org.aspectj.compiler.base.ast.*;
27 import org.aspectj.compiler.crosscuts.joinpoints.*;
28
29 import org.aspectj.compiler.base.JavaCompiler;
30
31 import java.util.*;
32 import org.aspectj.util.InvertableSet;
33
34
35 /**
36  * @grammar [prefix]*[suffix]
37  * @property List pieces
38  */

39 public class WildName extends NamePattern {
40     public String JavaDoc getLookupString() {
41         return "*";
42     }
43
44     public boolean isStar() { return false; }
45
46     private boolean matches(String JavaDoc s, int sIndex, int pieceIndex) {
47         //System.out.println(">>>" + this + " matches " + s + ": " + s.length() + ", " + sIndex + ", " + pieceIndex);
48

49         if (pieceIndex == pieces.size()) {
50             return sIndex == s.length();
51         }
52         
53         String JavaDoc piece = (String JavaDoc)pieces.get(pieceIndex);
54         if (piece == "*") {
55             for (int i=sIndex; i<=s.length(); i++) {
56                 if (matches(s, i, pieceIndex+1)) return true;
57             }
58             return false;
59         } else {
60             if (!s.regionMatches(sIndex, piece, 0, piece.length())) return false;
61             else return matches(s, sIndex+piece.length(), pieceIndex+1);
62         }
63     }
64     
65     
66     public boolean matches(String JavaDoc s) {
67         //System.out.println(this + " matches " + s + ": " + matches(s, 0, 0));
68
return matches(s, 0, 0);
69     }
70
71     public String JavaDoc toShortString() {
72         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
73         for (Iterator i = pieces.iterator(); i.hasNext(); ) {
74             buf.append(i.next());
75         }
76         return buf.toString();
77     }
78     
79     //BEGIN: Generated from @child and @property
80
protected List pieces;
81     public List getPieces() { return pieces; }
82     public void setPieces(List _pieces) { pieces = _pieces; }
83     
84     public WildName(SourceLocation location, List _pieces) {
85         super(location);
86         setPieces(_pieces);
87     }
88     protected WildName(SourceLocation source) {
89         super(source);
90     }
91     
92     public ASTObject copyWalk(CopyWalker walker) {
93         WildName ret = new WildName(getSourceLocation());
94         ret.preCopy(walker, this);
95         ret.pieces = pieces;
96         return ret;
97     }
98     
99     
100     public String JavaDoc getDefaultDisplayName() {
101         return "WildName(pieces: "+pieces+")";
102     }
103     
104     //END: Generated from @child and @property
105
}
106
107
108
Popular Tags