/******************************************************************************
* Copyright (c) 2004, 2014  Ericsson AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*   Zoltan Jasz - initial implementation and initial documentation
*   Abhishek Gupta
*   Attila Balasko
*   Endre Kulcsar
*   Gabor Bettesch
*   Gabor Szalai
*   Janos Kovesdi
*   Sandor Palugyai
*   Tibor Csondes
******************************************************************************/
//
//  File:          UsefulTtcn3Types.ttcn
//  Rev:           R9A
//  Prodnr:        CNL 113 368
//
////////////////////////////////////////////////////////////////////////////////
module UsefulTtcn3Types {


    type integer byte (-128 .. 127) with { variant "/* 8 bit */" };

    type integer unsignedbyte (0 .. 255) with { variant "/*unsigned 8 bit*/" };

    type integer short (-32768 .. 32767) with { variant "/*16 bit*/" };

    type integer unsignedshort (0 .. 65535) with { variant "/*unsigned 16 bit*/" };

    type integer long (-2147483648 .. 2147483647) with { variant "/*32 bit*/" };

    type integer unsignedlong (0 .. 4294967295) with { variant "/*unsigned 32 bit*/" };

    type integer longlong /* (  -9223372036854775808 .. 9223372036854775807 ) */ with { variant "/*64 bit*/" };

    type integer unsignedlonglong /* ( 0 .. 18446744073709551615 ) */ with { variant "/*unsigned 64 bit*/" };

    type float IEEE754float with { variant "/*IEEE754 float*/" };

    type float IEEE754double with { variant "/*IEEE754 double*/" };

    type float IEEE754extfloat with { variant "/*IEEE754 extended float*/" };

    type float IEEE754extdouble with { variant "/*IEEE754 extended double*/" };

    type universal charstring utf8string with { variant "/*UTF-8*/" };

    type universal charstring bmpstring ( char ( 0,0,0,0 ) .. char ( 0,0,255,255) ) with { variant "/*UCS-2*/" };

    type universal charstring utf16string ( char ( 0,0,0,0 ) .. char ( 0,16,255,255) ) with { variant "/*UTF-16*/" };

    type universal charstring iso8859string ( char ( 0,0,0,0 ) .. char ( 0,0,0,255) ) with { variant "/*8 bit*/" };

    type record IDLfixed
    {
    	unsignedshort digits,
    	short scale,
    	charstring value_
    }
    with {
    variant "/*IDL:fixed FORMAL/01-12-01 v.2.6*/";
    };

    /*
    type charstring char length (1);

    NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote universal
    charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as
    identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility
    with previous versions of the TTCN-3 standard. (except Titan doesn't)

    NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding
    for its values. Also, other properties of the base type can be changed by using attribute mechanisms.
    */

    type universal charstring uchar length (1);

    /*
    NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given
    encoding for its values. Also, other properties of the base type can be changed by using attribute
    mechanisms.
    */

    type bitstring bit length (1);

    type hexstring hex length (1);

    type octetstring octet length (1);

}
with {
encode "XML";
}
