/**************************************************************
 *
 * 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_beans_Optional_idl__
#define __com_sun_star_beans_Optional_idl__

module com {  module sun {  module star {  module beans {

/**
   An optional value of a given type.

   <p>This structure is used as the type of interface attributes corresponding
   to instances of <type scopye="com::sun::star::beans">Property</type> that
   have the <const
   scope="com::sun::star::beans">PropertyAttribute::MAYBEVOID</const>.  It might
   also be useful in other situations, for example as the return type of an
   interface method.</p>
 */
published struct Optional<T> {
    /**
       Marks this structure instance as having an actual value.
     */
    boolean IsPresent;

    /**
       The actual value of this structure instance.

       <p>If no actual value is present, a producer of such a structure instance
       should leave this member defaulted, and a consumer of such a structure
       instance should ignore the specific value stored in this member.</p>
     */
    T Value;
};

}; }; }; };

#endif
