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


#ifndef __com_sun_star_util_NumberFormat_idl__ 
#define __com_sun_star_util_NumberFormat_idl__ 
 
 
//============================================================================= 
 
 module com {  module sun {  module star {  module util {  
 
//============================================================================= 
 
/** contains constants that are used to specify the type of a number format.
 */
published constants NumberFormat
{ 
	//------------------------------------------------------------------------- 

	/** selects all number formats.
	 */
	const short ALL = 0; 
 
	//------------------------------------------------------------------------- 

	/** selects only user-defined number formats.
	 */
	const short DEFINED = 1; 
 
	//------------------------------------------------------------------------- 
	
	/** selects date formats.
	 */
	const short DATE = 2; 
 
	//------------------------------------------------------------------------- 
	
	/** selects time formats.
	 */
	const short TIME = 4; 
 
	//------------------------------------------------------------------------- 
	
	/** selects currency formats.
	 */
	const short CURRENCY = 8; 
 
	//------------------------------------------------------------------------- 
	
	/** selects decimal number formats.
	 */
	const short NUMBER = 16; 
 
	//------------------------------------------------------------------------- 
	
	/** selects scientific number formats.
	 */
	const short SCIENTIFIC = 32; 
 
	//------------------------------------------------------------------------- 
	
	/** selects number formats for fractions.
	 */
	const short FRACTION = 64; 
 
	//------------------------------------------------------------------------- 
	
	/** selects percentage number formats.
	 */
	const short PERCENT = 128; 
 
	//------------------------------------------------------------------------- 
	
	/** selects text number formats.
	 */
	const short TEXT = 256; 
 
	//------------------------------------------------------------------------- 
	
	/** selects number formats which contain date and time.
	 */
	const short DATETIME = 6; 
 
	//------------------------------------------------------------------------- 
	
	/** selects boolean number formats.
	 */
	const short LOGICAL = 1024; 
 
	//------------------------------------------------------------------------- 
	
	/** is used as a return value if no format exists.
	 */
	const short UNDEFINED = 2048; 
 
}; 
 
//============================================================================= 
 
}; }; }; };  
 
#endif

