Initial import
[jpf-core.git] / src / classes / java / text / Format.java
1 /*
2  * Copyright (C) 2014, United States Government, as represented by the
3  * Administrator of the National Aeronautics and Space Administration.
4  * All rights reserved.
5  *
6  * The Java Pathfinder core (jpf-core) platform is licensed under the
7  * Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  * 
10  *        http://www.apache.org/licenses/LICENSE-2.0. 
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and 
16  * limitations under the License.
17  */
18
19 package java.text;
20
21 /**
22  * (incomplete) model class for java.text.Format
23  * the reason we model this is that we want to cut off all the inner
24  * workings by just delegating to real formatters stored in our
25  * native peer
26  */
27 public abstract class Format {
28   
29   // <?> how does that work with backtracking? my initial guess is that
30   // we can safely overwrite an index because after backtracking, the
31   // formatter will never be used. It's therefore sufficient if we keep the
32   // nInstances counter in the JPF space
33   // (just a reminder - we can't use the reference value because it might
34   // change -- the ElementInfo invariance sucks!
35   static int nInstances;
36   private int id = nInstances++; // just for peer implementation purposes 
37   
38   public String format (Object o) {
39     StringBuffer sb = new StringBuffer();
40     FieldPosition pos = new FieldPosition(0);
41     return format(o, sb, pos).toString();
42   }
43   
44   public abstract StringBuffer format (Object o, StringBuffer sb, FieldPosition pos);
45
46   public abstract Object parseObject (String source, ParsePosition pos);
47
48   public Object parseObject(String source) throws ParseException {
49     ParsePosition pos = new ParsePosition(0);
50     Object result = parseObject(source, pos);
51     if (pos.index == 0) {
52       throw new ParseException("Format.parseObject(String) failed",
53         pos.errorIndex);
54     }
55     return result;
56   }
57 }