libhal-storage.h

00001 /***************************************************************************
00002  * CVSID: $Id: libhal-storage.h,v 1.17 2006/02/23 00:23:13 david Exp $
00003  *
00004  * libhal-storage.h : HAL convenience library for storage devices and volumes
00005  *
00006  * Copyright (C) 2004 Red Hat, Inc.
00007  *
00008  * Author: David Zeuthen <davidz@redhat.com>
00009  *
00010  * Licensed under the Academic Free License version 2.1
00011  *
00012  * This program is free software; you can redistribute it and/or modify
00013  * it under the terms of the GNU General Public License as published by
00014  * the Free Software Foundation; either version 2 of the License, or
00015  * (at your option) any later version.
00016  *
00017  * This program is distributed in the hope that it will be useful,
00018  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020  * GNU General Public License for more details.
00021  *
00022  * You should have received a copy of the GNU General Public License
00023  * along with this program; if not, write to the Free Software
00024  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00025  *
00026  **************************************************************************/
00027 
00028 #ifndef LIBHAL_STORAGE_H
00029 #define LIBHAL_STORAGE_H
00030 
00031 #include <libhal.h>
00032 
00033 #if defined(__cplusplus)
00034 extern "C" {
00035 #endif
00036 
00043 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00044 struct LibHalDrive_s;
00045 typedef struct LibHalDrive_s LibHalDrive;
00046 struct LibHalVolume_s;
00047 typedef struct LibHalVolume_s LibHalVolume;
00048 struct LibHalStoragePolicy_s;
00049 typedef struct LibHalStoragePolicy_s LibHalStoragePolicy;
00050 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00051 
00052 
00053 typedef enum {
00054     LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK           = 0x10000,
00055     LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IDE       = 0x10001,
00056     LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_SCSI      = 0x10002,
00057     LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_USB       = 0x10003,
00058     LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IEEE1394  = 0x10004,
00059     LIBHAL_STORAGE_ICON_DRIVE_DISK                     = 0x10100,
00060     LIBHAL_STORAGE_ICON_DRIVE_DISK_IDE                 = 0x10101,
00061     LIBHAL_STORAGE_ICON_DRIVE_DISK_SCSI                = 0x10102,
00062     LIBHAL_STORAGE_ICON_DRIVE_DISK_USB                 = 0x10103,
00063     LIBHAL_STORAGE_ICON_DRIVE_DISK_IEEE1394            = 0x10104,
00064     LIBHAL_STORAGE_ICON_DRIVE_CDROM                    = 0x10200,
00065     LIBHAL_STORAGE_ICON_DRIVE_CDROM_IDE                = 0x10201,
00066     LIBHAL_STORAGE_ICON_DRIVE_CDROM_SCSI               = 0x10202,
00067     LIBHAL_STORAGE_ICON_DRIVE_CDROM_USB                = 0x10203,
00068     LIBHAL_STORAGE_ICON_DRIVE_CDROM_IEEE1394           = 0x10204,
00069     LIBHAL_STORAGE_ICON_DRIVE_FLOPPY                   = 0x10300,
00070     LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IDE               = 0x10301,
00071     LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_SCSI              = 0x10302,
00072     LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_USB               = 0x10303,
00073     LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IEEE1394          = 0x10304,
00074     LIBHAL_STORAGE_ICON_DRIVE_TAPE                     = 0x10400,
00075     LIBHAL_STORAGE_ICON_DRIVE_COMPACT_FLASH            = 0x10500,
00076     LIBHAL_STORAGE_ICON_DRIVE_MEMORY_STICK             = 0x10600,
00077     LIBHAL_STORAGE_ICON_DRIVE_SMART_MEDIA              = 0x10700,
00078     LIBHAL_STORAGE_ICON_DRIVE_SD_MMC                   = 0x10800,
00079     LIBHAL_STORAGE_ICON_DRIVE_CAMERA                   = 0x10900,
00080     LIBHAL_STORAGE_ICON_DRIVE_PORTABLE_AUDIO_PLAYER    = 0x10a00,
00081     LIBHAL_STORAGE_ICON_DRIVE_ZIP                      = 0x10b00,
00082         LIBHAL_STORAGE_ICON_DRIVE_JAZ                      = 0x10c00,
00083         LIBHAL_STORAGE_ICON_DRIVE_FLASH_KEY                = 0x10d00,
00084 
00085     LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK          = 0x20000,
00086     LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IDE      = 0x20001,
00087     LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_SCSI     = 0x20002,
00088     LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_USB      = 0x20003,
00089     LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IEEE1394 = 0x20004,
00090     LIBHAL_STORAGE_ICON_VOLUME_DISK                    = 0x20100,
00091     LIBHAL_STORAGE_ICON_VOLUME_DISK_IDE                = 0x20101,
00092     LIBHAL_STORAGE_ICON_VOLUME_DISK_SCSI               = 0x20102,
00093     LIBHAL_STORAGE_ICON_VOLUME_DISK_USB                = 0x20103,
00094     LIBHAL_STORAGE_ICON_VOLUME_DISK_IEEE1394           = 0x20104,
00095     LIBHAL_STORAGE_ICON_VOLUME_CDROM                   = 0x20200,
00096     LIBHAL_STORAGE_ICON_VOLUME_CDROM_IDE               = 0x20201,
00097     LIBHAL_STORAGE_ICON_VOLUME_CDROM_SCSI              = 0x20202,
00098     LIBHAL_STORAGE_ICON_VOLUME_CDROM_USB               = 0x20203,
00099     LIBHAL_STORAGE_ICON_VOLUME_CDROM_IEEE1394          = 0x20204,
00100     LIBHAL_STORAGE_ICON_VOLUME_FLOPPY                  = 0x20300,
00101     LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IDE              = 0x20301,
00102     LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_SCSI             = 0x20302,
00103     LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_USB              = 0x20303,
00104     LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IEEE1394         = 0x20304,
00105     LIBHAL_STORAGE_ICON_VOLUME_TAPE                    = 0x20400,
00106     LIBHAL_STORAGE_ICON_VOLUME_COMPACT_FLASH           = 0x20500,
00107     LIBHAL_STORAGE_ICON_VOLUME_MEMORY_STICK            = 0x20600,
00108     LIBHAL_STORAGE_ICON_VOLUME_SMART_MEDIA             = 0x20700,
00109     LIBHAL_STORAGE_ICON_VOLUME_SD_MMC                  = 0x20800,
00110     LIBHAL_STORAGE_ICON_VOLUME_CAMERA                  = 0x20900,
00111     LIBHAL_STORAGE_ICON_VOLUME_PORTABLE_AUDIO_PLAYER   = 0x20a00,
00112     LIBHAL_STORAGE_ICON_VOLUME_ZIP                     = 0x20b00,
00113         LIBHAL_STORAGE_ICON_VOLUME_JAZ                     = 0x20c00,
00114         LIBHAL_STORAGE_ICON_VOLUME_FLASH_KEY               = 0x20d00,
00115 
00116     LIBHAL_STORAGE_ICON_DISC_CDROM                     = 0x30000,
00117     LIBHAL_STORAGE_ICON_DISC_CDR                       = 0x30001,
00118     LIBHAL_STORAGE_ICON_DISC_CDRW                      = 0x30002,
00119     LIBHAL_STORAGE_ICON_DISC_DVDROM                    = 0x30003,
00120     LIBHAL_STORAGE_ICON_DISC_DVDRAM                    = 0x30004,
00121     LIBHAL_STORAGE_ICON_DISC_DVDR                      = 0x30005,
00122     LIBHAL_STORAGE_ICON_DISC_DVDRW                     = 0x30006,
00123     LIBHAL_STORAGE_ICON_DISC_DVDPLUSR                  = 0x30007,
00124     LIBHAL_STORAGE_ICON_DISC_DVDPLUSRW                 = 0x30008,
00125     LIBHAL_STORAGE_ICON_DISC_DVDPLUSRWDL               = 0x30009,
00126     LIBHAL_STORAGE_ICON_DISC_BDROM                     = 0x3000a,
00127     LIBHAL_STORAGE_ICON_DISC_BDR                       = 0x3000b,
00128     LIBHAL_STORAGE_ICON_DISC_BDRE                      = 0x3000c,
00129     LIBHAL_STORAGE_ICON_DISC_HDDVDROM                  = 0x3000d,
00130     LIBHAL_STORAGE_ICON_DISC_HDDVDR                    = 0x3000e,
00131     LIBHAL_STORAGE_ICON_DISC_HDDVDRW                   = 0x3000f
00132 } LibHalStoragePolicyIcon;
00133 
00134 typedef struct {
00135     LibHalStoragePolicyIcon icon;
00136     const char *icon_path;
00137 } LibHalStoragePolicyIconPair;
00138 
00139 LibHalStoragePolicy *libhal_storage_policy_new          (void);
00140 void                 libhal_storage_policy_free         (LibHalStoragePolicy *policy);
00141 
00142 void                 libhal_storage_policy_set_icon_path    (LibHalStoragePolicy *policy, 
00143                                  LibHalStoragePolicyIcon icon,
00144                                  const char *path);
00145 
00146 void                 libhal_storage_policy_set_icon_mapping (LibHalStoragePolicy *policy, 
00147                                  LibHalStoragePolicyIconPair *pairs);
00148 const char          *libhal_storage_policy_lookup_icon      (LibHalStoragePolicy *policy, 
00149                                  LibHalStoragePolicyIcon icon);
00150 
00151 typedef enum {
00152     LIBHAL_DRIVE_BUS_UNKNOWN     = 0x00,
00153     LIBHAL_DRIVE_BUS_IDE         = 0x01,
00154     LIBHAL_DRIVE_BUS_SCSI        = 0x02,
00155     LIBHAL_DRIVE_BUS_USB         = 0x03,
00156     LIBHAL_DRIVE_BUS_IEEE1394    = 0x04,
00157     LIBHAL_DRIVE_BUS_CCW         = 0x05
00158 } LibHalDriveBus;
00159 
00160 typedef enum {
00161     LIBHAL_DRIVE_TYPE_REMOVABLE_DISK        = 0x00,
00162     LIBHAL_DRIVE_TYPE_DISK                  = 0x01,
00163     LIBHAL_DRIVE_TYPE_CDROM                 = 0x02,
00164     LIBHAL_DRIVE_TYPE_FLOPPY                = 0x03,
00165     LIBHAL_DRIVE_TYPE_TAPE                  = 0x04,
00166     LIBHAL_DRIVE_TYPE_COMPACT_FLASH         = 0x05,
00167     LIBHAL_DRIVE_TYPE_MEMORY_STICK          = 0x06,
00168     LIBHAL_DRIVE_TYPE_SMART_MEDIA           = 0x07,
00169     LIBHAL_DRIVE_TYPE_SD_MMC                = 0x08,
00170     LIBHAL_DRIVE_TYPE_CAMERA                = 0x09,
00171     LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER = 0x0a,
00172     LIBHAL_DRIVE_TYPE_ZIP                   = 0x0b,
00173     LIBHAL_DRIVE_TYPE_JAZ                   = 0x0c,
00174     LIBHAL_DRIVE_TYPE_FLASHKEY              = 0x0d
00175 } LibHalDriveType;
00176 
00177 typedef enum {
00178     LIBHAL_DRIVE_CDROM_CAPS_CDROM      = 0x0001,
00179     LIBHAL_DRIVE_CDROM_CAPS_CDR        = 0x0002,
00180     LIBHAL_DRIVE_CDROM_CAPS_CDRW       = 0x0004,
00181     LIBHAL_DRIVE_CDROM_CAPS_DVDRAM     = 0x0008,
00182     LIBHAL_DRIVE_CDROM_CAPS_DVDROM     = 0x0010,
00183     LIBHAL_DRIVE_CDROM_CAPS_DVDR       = 0x0020,
00184     LIBHAL_DRIVE_CDROM_CAPS_DVDRW      = 0x0040,
00185     LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSR   = 0x0080,
00186     LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRW  = 0x0100,
00187     LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRDL = 0x0200,
00188     LIBHAL_DRIVE_CDROM_CAPS_BDROM      = 0x0400,
00189     LIBHAL_DRIVE_CDROM_CAPS_BDR        = 0x0800,
00190     LIBHAL_DRIVE_CDROM_CAPS_BDRE       = 0x1000,
00191     LIBHAL_DRIVE_CDROM_CAPS_HDDVDROM   = 0x2000,
00192     LIBHAL_DRIVE_CDROM_CAPS_HDDVDR     = 0x4000,
00193     LIBHAL_DRIVE_CDROM_CAPS_HDDVDRW    = 0x8000
00194 } LibHalDriveCdromCaps;
00195 
00196 LibHalDrive         *libhal_drive_from_udi                    (LibHalContext *hal_ctx, 
00197                                    const char *udi);
00198 LibHalDrive         *libhal_drive_from_device_file            (LibHalContext *hal_ctx, 
00199                                    const char *device_file);
00200 void                 libhal_drive_free                        (LibHalDrive *drive);
00201 
00202 dbus_bool_t          libhal_drive_is_hotpluggable          (LibHalDrive      *drive);
00203 dbus_bool_t          libhal_drive_uses_removable_media     (LibHalDrive      *drive);
00204 dbus_bool_t          libhal_drive_no_partitions_hint       (LibHalDrive      *drive);
00205 dbus_bool_t          libhal_drive_requires_eject           (LibHalDrive      *drive);
00206 LibHalDriveType      libhal_drive_get_type                 (LibHalDrive      *drive);
00207 LibHalDriveBus       libhal_drive_get_bus                  (LibHalDrive      *drive);
00208 LibHalDriveCdromCaps libhal_drive_get_cdrom_caps           (LibHalDrive      *drive);
00209 unsigned int         libhal_drive_get_device_major         (LibHalDrive      *drive);
00210 unsigned int         libhal_drive_get_device_minor         (LibHalDrive      *drive);
00211 const char          *libhal_drive_get_type_textual         (LibHalDrive      *drive);
00212 const char          *libhal_drive_get_device_file          (LibHalDrive      *drive);
00213 const char          *libhal_drive_get_udi                  (LibHalDrive      *drive);
00214 const char          *libhal_drive_get_serial               (LibHalDrive      *drive);
00215 const char          *libhal_drive_get_firmware_version     (LibHalDrive      *drive);
00216 const char          *libhal_drive_get_model                (LibHalDrive      *drive);
00217 const char          *libhal_drive_get_vendor               (LibHalDrive      *drive);
00218 const char          *libhal_drive_get_physical_device_udi  (LibHalDrive      *drive);
00219 
00220 const char          *libhal_drive_get_dedicated_icon_drive    (LibHalDrive      *drive);
00221 const char          *libhal_drive_get_dedicated_icon_volume   (LibHalDrive      *drive);
00222 
00223 char                *libhal_drive_policy_compute_display_name (LibHalDrive        *drive, 
00224                                    LibHalVolume        *volume, 
00225                                    LibHalStoragePolicy *policy);
00226 char                *libhal_drive_policy_compute_icon_name    (LibHalDrive         *drive, 
00227                                    LibHalVolume        *volume, 
00228                                    LibHalStoragePolicy *policy);
00229 
00230 dbus_bool_t          libhal_drive_policy_is_mountable            (LibHalDrive         *drive, 
00231                                   LibHalStoragePolicy *policy);
00232 const char          *libhal_drive_policy_get_desired_mount_point (LibHalDrive         *drive, 
00233                                   LibHalStoragePolicy *policy);
00234 const char          *libhal_drive_policy_get_mount_options       (LibHalDrive         *drive, 
00235                                       LibHalStoragePolicy *policy);
00236 const char          *libhal_drive_policy_get_mount_fs            (LibHalDrive      *drive, 
00237                                   LibHalStoragePolicy *policy);
00238 
00239 char               **libhal_drive_find_all_volumes (LibHalContext *hal_ctx, 
00240                             LibHalDrive   *drive,
00241                             int       *num_volumes);
00242 
00243 
00244 char        *libhal_drive_policy_default_get_mount_root                (LibHalContext *hal_ctx);
00245 dbus_bool_t  libhal_drive_policy_default_use_managed_keyword           (LibHalContext *hal_ctx);
00246 char        *libhal_drive_policy_default_get_managed_keyword_primary   (LibHalContext *hal_ctx);
00247 char        *libhal_drive_policy_default_get_managed_keyword_secondary (LibHalContext *hal_ctx);
00248 
00249 
00250 typedef enum {
00251     LIBHAL_VOLUME_USAGE_MOUNTABLE_FILESYSTEM,
00252     LIBHAL_VOLUME_USAGE_PARTITION_TABLE,
00253     LIBHAL_VOLUME_USAGE_RAID_MEMBER,
00254     LIBHAL_VOLUME_USAGE_CRYPTO,
00255     LIBHAL_VOLUME_USAGE_UNKNOWN
00256 } LibHalVolumeUsage;
00257 
00258 typedef enum {
00259     LIBHAL_VOLUME_DISC_TYPE_CDROM       = 0x00,
00260     LIBHAL_VOLUME_DISC_TYPE_CDR         = 0x01,
00261     LIBHAL_VOLUME_DISC_TYPE_CDRW        = 0x02,
00262     LIBHAL_VOLUME_DISC_TYPE_DVDROM      = 0x03,
00263     LIBHAL_VOLUME_DISC_TYPE_DVDRAM      = 0x04,
00264     LIBHAL_VOLUME_DISC_TYPE_DVDR        = 0x05,
00265     LIBHAL_VOLUME_DISC_TYPE_DVDRW       = 0x06,
00266     LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR    = 0x07,
00267     LIBHAL_VOLUME_DISC_TYPE_DVDPLUSRW   = 0x08,
00268     LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR_DL = 0x09,
00269     LIBHAL_VOLUME_DISC_TYPE_BDROM       = 0x0a,
00270     LIBHAL_VOLUME_DISC_TYPE_BDR         = 0x0b,
00271     LIBHAL_VOLUME_DISC_TYPE_BDRE        = 0x0c,
00272     LIBHAL_VOLUME_DISC_TYPE_HDDVDROM    = 0x0d,
00273     LIBHAL_VOLUME_DISC_TYPE_HDDVDR      = 0x0e,
00274     LIBHAL_VOLUME_DISC_TYPE_HDDVDRW     = 0x0f
00275 } LibHalVolumeDiscType;
00276 
00277 LibHalVolume     *libhal_volume_from_udi                      (LibHalContext *hal_ctx, 
00278                                    const char *udi);
00279 LibHalVolume     *libhal_volume_from_device_file              (LibHalContext *hal_ctx, 
00280                                    const char *device_file);
00281 void              libhal_volume_free                          (LibHalVolume     *volume);
00282 dbus_uint64_t     libhal_volume_get_size                      (LibHalVolume     *volume);
00283 
00284 const char          *libhal_volume_get_udi                       (LibHalVolume     *volume);
00285 const char          *libhal_volume_get_device_file               (LibHalVolume     *volume);
00286 unsigned int         libhal_volume_get_device_major              (LibHalVolume     *volume);
00287 unsigned int         libhal_volume_get_device_minor              (LibHalVolume     *volume);
00288 const char          *libhal_volume_get_fstype                    (LibHalVolume     *volume);
00289 const char          *libhal_volume_get_fsversion                 (LibHalVolume     *volume);
00290 LibHalVolumeUsage    libhal_volume_get_fsusage                   (LibHalVolume     *volume);
00291 dbus_bool_t          libhal_volume_is_mounted                    (LibHalVolume     *volume);
00292 dbus_bool_t          libhal_volume_is_partition                  (LibHalVolume     *volume);
00293 dbus_bool_t          libhal_volume_is_disc                       (LibHalVolume     *volume);
00294 unsigned int         libhal_volume_get_partition_number          (LibHalVolume     *volume);
00295 const char          *libhal_volume_get_label                     (LibHalVolume     *volume);
00296 const char          *libhal_volume_get_mount_point               (LibHalVolume     *volume);
00297 const char          *libhal_volume_get_uuid                      (LibHalVolume     *volume);
00298 const char          *libhal_volume_get_storage_device_udi        (LibHalVolume     *volume);
00299 
00300 const char          *libhal_volume_crypto_get_backing_volume_udi (LibHalVolume     *volume);
00301 char                *libhal_volume_crypto_get_clear_volume_udi   (LibHalContext    *hal_ctx, LibHalVolume *volume);
00302 
00303 
00304 dbus_bool_t          libhal_volume_disc_has_audio             (LibHalVolume     *volume);
00305 dbus_bool_t          libhal_volume_disc_has_data              (LibHalVolume     *volume);
00306 dbus_bool_t          libhal_volume_disc_is_blank              (LibHalVolume     *volume);
00307 dbus_bool_t          libhal_volume_disc_is_rewritable         (LibHalVolume     *volume);
00308 dbus_bool_t          libhal_volume_disc_is_appendable         (LibHalVolume     *volume);
00309 LibHalVolumeDiscType libhal_volume_get_disc_type              (LibHalVolume     *volume);
00310 
00311 int               libhal_volume_get_msdos_part_table_type     (LibHalVolume     *volume);
00312 
00313 dbus_bool_t       libhal_volume_should_ignore                 (LibHalVolume     *volume);
00314 
00315 char             *libhal_volume_policy_compute_size_as_string (LibHalVolume     *volume);
00316 
00317 char             *libhal_volume_policy_compute_display_name   (LibHalDrive         *drive, 
00318                                    LibHalVolume        *volume, 
00319                                    LibHalStoragePolicy *policy);
00320 char             *libhal_volume_policy_compute_icon_name      (LibHalDrive         *drive, 
00321                                    LibHalVolume        *volume, 
00322                                    LibHalStoragePolicy *policy);
00323 
00324 dbus_bool_t       libhal_volume_policy_should_be_visible      (LibHalDrive         *drive, 
00325                                    LibHalVolume        *volume, 
00326                                    LibHalStoragePolicy *policy, 
00327                                    const char          *target_mount_point);
00328 
00329 dbus_bool_t       libhal_volume_policy_is_mountable     (LibHalDrive         *drive, 
00330                                  LibHalVolume        *volume, 
00331                                  LibHalStoragePolicy *policy);
00332 const char       *libhal_volume_policy_get_desired_mount_point  (LibHalDrive         *drive, 
00333                                  LibHalVolume        *volume, 
00334                                  LibHalStoragePolicy *policy);
00335 const char       *libhal_volume_policy_get_mount_options    (LibHalDrive         *drive, 
00336                                      LibHalVolume        *volume, 
00337                                      LibHalStoragePolicy *policy);
00338 const char       *libhal_volume_policy_get_mount_fs         (LibHalDrive         *drive, 
00339                                      LibHalVolume        *volume, 
00340                                      LibHalStoragePolicy *policy);
00341 
00344 #if defined(__cplusplus)
00345 }
00346 #endif
00347 
00348 #endif /* LIBHAL_STORAGE_H */

Generated on Sat Jun 17 12:01:19 2006 for HAL by  doxygen 1.4.6