blob: 90244920ac97f097cf0925019fd205cd24cfc11a [file] [log] [blame]
/*
* 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.axis2.wsdl.databinding;
import java.text.Collator;
import java.util.Arrays;
import java.util.Locale;
public class CUtils {
static final String keywords[] =
{
// c/ c++ keywords
"asm", "auto", "bool", "break", "break", "case", "catch", "char", "class", "const", "const_cast",
"continue", "default", "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit",
"export", "extern", "false", "float", "for", "friend", "goto", "if", "inline", "int", "long",
"mutable", "namespace", "new", "operator", "private", "protected", "public", "register",
"reinterpret_cast", "return", "short", "signed", "sizeof", "static", "static_cast", "struct",
"switch", "template", "this", "throw", "true", "try", "typedef", "typeid", "typename", "union",
"unsigned", "using", "virtual", "void", "volatile", "wchar_t", "while",
//microsoft c++ keywords reference: http://msdn2.microsoft.com/en-US/library/2e6a4at9(VS.80).aspx
"__abstract", "abstract", "__alignof Operator", "array", "__asm", "__assume", "__based", "bool",
"__box", "break", "case", "catch", "__cdecl", "char", "class", "const", "const_cast", "continue",
"__declspec", "default", "__delegate", "delegate", "delete", "deprecated", "dllexport", "dllimport",
"do", "double", "dynamic_cast", "else", "enum", "enum class", "enum struct", "event", "__event",
"__except", "explicit", "extern", "false", "__fastcall", "__finally", "finally", "float", "for",
"for each", "in", "__forceinline", "friend", "friend_as", "__gc", "gcnew", "generic", "goto",
"__hook", "__identifier", "if", "__if_exists", "__if_not_exists", "initonly", "__inline", "inline",
"int", "__int8", "__int16", "__int32", "__int64", "__interface", "interface class",
"interface struct", "interior_ptr", "__leave", "literal", "long", "__m64", "__m128", "__m128d",
"__m128i", "__multiple_inheritance", "mutable", "naked", "namespace", "new", "new", "__nogc",
"noinline", "__noop", "noreturn", "nothrow", "novtable", "nullptr", "operator", "__pin", "private",
"__property", "property", "property", "protected", "public", "__raise", "ref struct", "ref class",
"register", "reinterpret_cast", "return", "safecast", "__sealed", "sealed", "selectany", "short",
"signed", "__single_inheritance", "sizeof", "static", "static_cast", "__stdcall", "struct",
"__super", "switch", "template", "this", "thread", "throw", "true", "try", "__try/__except",
"__try/__finally", "__try_cast", "typedef", "typeid", "typeid", "typename", "__unaligned",
"__unhook", "union", "unsigned", "using declaration", "using directive", "uuid", "__uuidof",
"value struct", "value class", "__value", "virtual", "__virtual_inheritance", "void", "volatile",
"__w64", "__wchar_t", "wchar_t", "while",
};
/** Collator for comparing the strings */
static final Collator englishCollator = Collator.getInstance(Locale.ENGLISH);
/** Use this character as suffix */
static final char keywordPrefix = '_';
/**
* Checks if the input string is a valid C keyword.
*
* @return Returns boolean.
*/
public static boolean isCKeyword(String keyword) {
return (Arrays.binarySearch(keywords, keyword, englishCollator) >= 0);
}
/**
* Turns a C keyword string into a non-C keyword string. (Right now this simply means appending
* an underscore.)
*/
public static String makeNonCKeyword(String keyword) {
return keywordPrefix + keyword ;
}
}