/**************************************************************
 * 
 * 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_modules_idl__ 
#define __com_sun_star_modules_idl__ 

module com { module sun { module star { 

/// Java beans-like property access and introspection.
module beans{};

/// Interfaces for building bridges to other component models.
module bridge {};

/// Data exchange interfaces for inter-process communication.
module connection {};

/// Interfaces for collections and containers.
module container {};

/// Modules for IOP, IIOP and GIOP.
module corba {};

/// General input/output interfaces.
module io {};

/// Java to UNO connectivity interfaces.
module java {};

/// General UNO concepts like factories etc.
module lang {};

/// Component implementation loader interfaces.
module loader {};

/// Runtime object inspection / core reflection interfaces.
module reflection {};

/// Interfaces to access registration databases.
module registry {};

/// Scripting language bindings.
module script {};

/// Interface for authorisation and authentification.
module security {};

/// Test interfaces for core-reflection, introspection and marshalling.
module test {};

/// Basic UNO interfaces.
module uno {};

/// URI processing.
module uri {};

}; }; };

#endif
