/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.cxf.tools.corba.common.idltypes;
import java.io.PrintWriter;
public final class IdlPrimitive extends IdlDefnImplBase implements IdlType {
static final short MINIMUM = 1;
static final short LONG = MINIMUM;
static final short ULONG = 2;
static final short LONGLONG = 3;
static final short ULONGLONG = 4;
static final short SHORT = 5;
static final short USHORT = 6;
static final short FLOAT = 7;
static final short DOUBLE = 8;
static final short LONGDOUBLE = 9;
static final short CHAR = 10;
static final short WCHAR = 11;
static final short BOOLEAN = 12;
static final short OCTET = 13;
static final short ANY = 14;
static final short MAXIMUM = 15;
static final short DATETIME = MAXIMUM;
private String wsdlName;
private short type;
private IdlPrimitive(IdlScopeBase parent, String name, String wsdlFileName, short typeValue) {
super(parent, name);
this.wsdlName = wsdlFileName;
this.type = typeValue;
}
public static IdlPrimitive create(IdlScopeBase parent, short type) {
String name = null;
String wsdlName = null;
switch (type) {
case LONG:
name = "long";
wsdlName = "long";
break;
case ULONG:
name = "unsigned long";
wsdlName = "ulong";
break;
case LONGLONG:
name = "long long";
wsdlName = "longlong";
break;
case ULONGLONG:
name = "unsigned long long";
wsdlName = "ulonglong";
break;
case SHORT:
name = "short";
wsdlName = "short";
break;
case USHORT:
name = "unsigned short";
wsdlName = "ushort";
break;
case FLOAT:
name = "float";
wsdlName = "float";
break;
case DOUBLE:
name = "double";
wsdlName = "double";
break;
case LONGDOUBLE:
name = "long double";
wsdlName = "longdouble";
break;
case CHAR:
name = "char";
wsdlName = "char";
break;
case WCHAR:
name = "wchar";
wsdlName = "wchar";
break;
case BOOLEAN:
name = "boolean";
wsdlName = "boolean";
break;
case OCTET:
name = "octet";
wsdlName = "octet";
break;
case ANY:
name = "any";
wsdlName = "any";
break;
case DATETIME:
name = "TimeBase::UtcT";
wsdlName = "dateTime";
break;
default:
break;
}
return new IdlPrimitive(parent, name, wsdlName, type);
}
public String fullName() {
return localName();
}
public String fullName(IdlScopedName rel) {
return localName();
}
public IdlScopedName scopeName() {
return null;
}
short primitiveType() {
return type;
}
String wsdlName() {
return this.wsdlName;
}
public void write(PrintWriter pw) {
pw.print(localName());
}
}