Add yang-xpath-api
[yangtools.git] / yang / yang-xpath-api / src / main / java / org / opendaylight / yangtools / yang / xpath / api / YangFunction.java
1 /*
2  * Copyright (c) 2018 Pantheon Technologies, s.r.o.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.xpath.api;
9
10 import com.google.common.annotations.Beta;
11 import org.opendaylight.yangtools.concepts.Identifiable;
12 import org.opendaylight.yangtools.yang.common.QName;
13 import org.opendaylight.yangtools.yang.common.YangConstants;
14
15 /**
16  * Functions known to a YANG XPath.
17  *
18  * @author Robert Varga
19  */
20 @Beta
21 public enum YangFunction implements Identifiable<QName> {
22     // XPath 1.0 functions
23     BOOLEAN("boolean"),
24     CEILING("ceiling"),
25     CONCAT("concat"),
26     CONTAINS("contains"),
27     COUNT("count"),
28     FALSE("false"),
29     FLOOR("floor"),
30     ID("id"),
31     LANG("lang"),
32     LAST("last"),
33     LOCAL_NAME("local-name"),
34     NAME("name"),
35     NUMBER("number"),
36     NAMESPACE_URI("namespace-uri"),
37     NORMALIZE_SPACE("normalize-space"),
38     NOT("not"),
39     POSITION("position"),
40     ROUND("round"),
41     STARTS_WITH("starts-with"),
42     STRING("string"),
43     STRING_LENGTH("string-length"),
44     SUM("sum"),
45     SUBSTRING("substring"),
46     SUBSTRING_AFTER("substring-after"),
47     SUBSTRING_BEFORE("substring-before"),
48     TRANSLATE("translate"),
49     TRUE("true"),
50
51     // RFC7950 functions
52     BIT_IS_SET("bit-is-set"),
53     CURRENT("current"),
54     DEREF("deref"),
55     DERIVED_FROM("derived-from"),
56     DERIVED_FROM_OR_SELF("derived-from-or-self"),
57     ENUM_VALUE("enum-value"),
58     RE_MATCH("re-match");
59
60     private final QName identifier;
61
62     YangFunction(final String localName) {
63         identifier = QName.create(YangConstants.RFC6020_YIN_MODULE, localName).intern();
64     }
65
66     @Override
67     public QName getIdentifier() {
68         return identifier;
69     }
70 }