/**************************************************************
 * 
 * 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.
 * 
 *************************************************************/

module idlc
{
module test
{
	const long l = 1;
	const long add = 1 + 2;
	const long sub = 3 - 2;
	const hyper h = 123456789;
	const float f7 = 3.4123;
	const float f2 = 3.4123 + 10e-12;
	const boolean bt = True;
	const boolean bf = False;
	const boolean and = bt & bf;

	/// SHORT_MAX + 1;
	const short shortMax = -0x8000;
	/// LONG_MAX + 1;
	const unsigned long longMax = 0x80000000;


constants USER
{
	/// = 1
	const long FLAG1 = 0x00000001;
	/// = 2
	const long FLAG2 = 0x00000002;
	/// = 4
	const long FLAG3 = 0x00000004;
	/// = 8
	const long FLAG4 = 0x00000008;
	/// = 16
	const long FLAG5 = 0x00000010;
	/// = 0
	const long FLAG6 = FLAG1 & FLAG2;
	/// = 3
	const long FLAG7 = FLAG1 | FLAG2;
	/// = 2
	const long FLAG8 = (FLAG1 | FLAG2) & FLAG2;
	/// = 4
	const long FLAG9 = FLAG1 << 2;
	/// = 32
	const long FLAG10 = (FLAG5 >> 1) << 2;	
	/// = 1
	const long FLAG11 = 33 % 4;	
	/// = 4
	const long FLAG12 = FLAG10 / 8;	
};

};
};
