Enhanced SIM for E2AP v1 for TS UC
[sim/e2-interface.git] / e2sim / e2apv1sim / src / ASN1 / asn / identifier.hpp
diff --git a/e2sim/e2apv1sim/src/ASN1/asn/identifier.hpp b/e2sim/e2apv1sim/src/ASN1/asn/identifier.hpp
new file mode 100755 (executable)
index 0000000..9b603fb
--- /dev/null
@@ -0,0 +1,97 @@
+#pragma once
+
+/******************************************************************************
+*
+*   Copyright (c) 2019 AT&T Intellectual Property.
+*   Copyright (c) 2018-2019 Nokia.
+*
+*   Licensed 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.
+*
+******************************************************************************/
+
+// Standard Includes: ANSI C/C++, MSA, and Third-Party Libraries
+
+// Local Includes: Application specific classes, functions, and libraries
+
+namespace asn {
+
+enum class class_type_t : uint8_t
+{
+        UNIVERSAL
+       ,APPLICATION
+       ,CONTEXT
+       ,PRIVATE
+  ,UNSPECIFIED //reserved for internal use
+};
+
+enum class tag_type_t : uint8_t
+{
+        EXPLICIT
+       ,IMPLICIT
+       ,AUTOMATIC
+};
+
+using tag_value_t = uint64_t;
+
+template<class_type_t CT,  tag_value_t TAG, tag_type_t TT = tag_type_t::IMPLICIT>
+struct identifier
+{
+       static constexpr class_type_t   class_type = CT;
+       static constexpr tag_value_t    tag_value = TAG;
+       static constexpr tag_type_t             tag_type = TT;
+};
+
+
+enum class tag_rvalue_t : tag_value_t
+{
+        BOOLEAN                                = 1
+       ,INTEGER                                = 2
+       ,BIT_STRING                             = 3
+       ,OCTET_STRING                   = 4
+       ,NULL_TYPE                              = 5
+       ,OBJECT_IDENTIFIER              = 6
+       ,REAL                                   = 9
+       ,ENUMERATED                             = 10
+       ,SEQUENCE                               = 16
+       ,SEQUENCE_OF                    = 16
+       ,UTF8String                             = 12
+       ,NumericString                  = 18
+       ,IA5String                              = 22
+       ,VisibleString                  = 26
+       ,DATE                                   = 31
+       ,TIME_OF_DAY                    = 32
+       ,DATE_TIME                              = 33
+       ,DURATION                               = 34
+       ,ObjectDescriptor               = 7
+       ,EXTERNAL                               = 8
+       ,EMBEDDED_PDV                   = 11
+       ,OID_IRI                                = 35
+       ,RELATIVE_OID_IRI               = 36
+       ,SET                                    = 17
+       ,SET_OF                                 = 17
+       ,UTCTime                                = 23
+       ,GeneralizedTime                = 24
+       ,PrintableString                = 19
+       ,T61String                              = 20
+       ,VideotexString                 = 21
+       ,GraphicString                  = 25
+       ,GeneralString                  = 27
+       ,UniversalString                = 28
+       ,CHARACTER_STRING               = 29
+       ,BMPString                              = 30
+       ,ISO646String                   = 26
+       ,TeletexString                  = 20
+  ,CHOICE            = 99 // fake id for internal use
+};
+
+} //namespace asn