@@ -19,26 +19,26 @@ OF_ASSUME_NONNULL_BEGIN @class OFArray OF_GENERIC(ObjectType); @class OFDate; +@class OFIRI; @class OFStream; -@class OFURI; /** - * @class OFURIHandler OFURIHandler.h ObjFW/OFURIHandler.h + * @class OFIRIHandler OFIRIHandler.h ObjFW/OFIRIHandler.h * - * @brief A handler for a URI scheme. + * @brief A handler for an IRI scheme. */ -@interface OFURIHandler: OFObject +@interface OFIRIHandler: OFObject { OFString *_scheme; - OF_RESERVE_IVARS(OFURIHandler, 4) + OF_RESERVE_IVARS(OFIRIHandler, 4) } /** - * @brief The scheme this OFURIHandler handles. + * @brief The scheme this OFIRIHandler handles. */ @property (readonly, nonatomic) OFString *scheme; /** * @brief Registers the specified class as the handler for the specified scheme. @@ -52,21 +52,21 @@ * same scheme is already registered, registration fails. */ + (bool)registerClass: (Class)class_ forScheme: (OFString *)scheme; /** - * @brief Returns the handler for the specified URI. + * @brief Returns the handler for the specified IRI. * - * @return The handler for the specified URI. - * @throw OFUnsupportedProtocolException The specified URI is not supported + * @return The handler for the specified IRI. + * @throw OFUnsupportedProtocolException The specified IRI is not supported */ -+ (OFURIHandler *)handlerForURI: (OFURI *)URI; ++ (OFIRIHandler *)handlerForIRI: (OFIRI *)IRI; /** - * @brief Opens the item at the specified URI. + * @brief Opens the item at the specified IRI. * - * @param URI The URI of the item which should be opened + * @param IRI The IRI of the item which should be opened * @param mode The mode in which the file should be opened.@n * Possible modes are: * @n * Mode | Description * ---------------|------------------------------------- @@ -81,28 +81,28 @@ * @n * The handler is allowed to not implement all modes and is also * allowed to implement additional, scheme-specific modes. * @return The opened stream if it was successfully opened * @throw OFOpenItemFailedException Opening the item failed - * @throw OFUnsupportedProtocolException The specified URI is not supported + * @throw OFUnsupportedProtocolException The specified IRI is not supported */ -+ (OFStream *)openItemAtURI: (OFURI *)URI mode: (OFString *)mode; ++ (OFStream *)openItemAtIRI: (OFIRI *)IRI mode: (OFString *)mode; - (instancetype)init OF_UNAVAILABLE; /** * @brief Initializes the handler for the specified scheme. * * @param scheme The scheme to initialize for - * @return An initialized URI handler + * @return An initialized IRI handler */ - (instancetype)initWithScheme: (OFString *)scheme OF_DESIGNATED_INITIALIZER; /** - * @brief Opens the item at the specified URI. + * @brief Opens the item at the specified IRI. * - * @param URI The URI of the item which should be opened + * @param IRI The IRI of the item which should be opened * @param mode The mode in which the file should be opened.@n * Possible modes are: * @n * Mode | Description * ---------------|------------------------------------- @@ -117,131 +117,131 @@ * @n * The handler is allowed to not implement all modes and is also * allowed to implement additional, scheme-specific modes. * @return The opened stream if it was successfully opened * @throw OFOpenItemFailedException Opening the item failed - * @throw OFUnsupportedProtocolException The specified URI is not supported by + * @throw OFUnsupportedProtocolException The specified IRI is not supported by * the handler */ -- (OFStream *)openItemAtURI: (OFURI *)URI mode: (OFString *)mode; +- (OFStream *)openItemAtIRI: (OFIRI *)IRI mode: (OFString *)mode; /** - * @brief Returns the attributes for the item at the specified URI. + * @brief Returns the attributes for the item at the specified IRI. * - * @param URI The URI to return the attributes for - * @return A dictionary of attributes for the specified URI, with the keys of + * @param IRI The IRI to return the attributes for + * @return A dictionary of attributes for the specified IRI, with the keys of * type @ref OFFileAttributeKey */ -- (OFFileAttributes)attributesOfItemAtURI: (OFURI *)URI; +- (OFFileAttributes)attributesOfItemAtIRI: (OFIRI *)IRI; /** - * @brief Sets the attributes for the item at the specified URI. + * @brief Sets the attributes for the item at the specified IRI. * * All attributes not part of the dictionary are left unchanged. * - * @param attributes The attributes to set for the specified URI - * @param URI The URI of the item to set the attributes for - */ -- (void)setAttributes: (OFFileAttributes)attributes ofItemAtURI: (OFURI *)URI; - -/** - * @brief Checks whether a file exists at the specified URI. - * - * @param URI The URI to check - * @return A boolean whether there is a file at the specified URI - */ -- (bool)fileExistsAtURI: (OFURI *)URI; - -/** - * @brief Checks whether a directory exists at the specified URI. - * - * @param URI The URI to check - * @return A boolean whether there is a directory at the specified URI - */ -- (bool)directoryExistsAtURI: (OFURI *)URI; - -/** - * @brief Creates a directory at the specified URI. - * - * @param URI The URI of the directory to create - */ -- (void)createDirectoryAtURI: (OFURI *)URI; - -/** - * @brief Returns an array with the URIs of the items in the specified + * @param attributes The attributes to set for the specified IRI + * @param IRI The IRI of the item to set the attributes for + */ +- (void)setAttributes: (OFFileAttributes)attributes ofItemAtIRI: (OFIRI *)IRI; + +/** + * @brief Checks whether a file exists at the specified IRI. + * + * @param IRI The IRI to check + * @return A boolean whether there is a file at the specified IRI + */ +- (bool)fileExistsAtIRI: (OFIRI *)IRI; + +/** + * @brief Checks whether a directory exists at the specified IRI. + * + * @param IRI The IRI to check + * @return A boolean whether there is a directory at the specified IRI + */ +- (bool)directoryExistsAtIRI: (OFIRI *)IRI; + +/** + * @brief Creates a directory at the specified IRI. + * + * @param IRI The IRI of the directory to create + */ +- (void)createDirectoryAtIRI: (OFIRI *)IRI; + +/** + * @brief Returns an array with the IRIs of the items in the specified * directory. * * @note `.` and `..` are not part of the returned array. * - * @param URI The URI to the directory whose items should be returned - * @return An array with the URIs of the items in the specified directory + * @param IRI The IRI to the directory whose items should be returned + * @return An array with the IRIs of the items in the specified directory */ -- (OFArray OF_GENERIC(OFURI *) *)contentsOfDirectoryAtURI: (OFURI *)URI; +- (OFArray OF_GENERIC(OFIRI *) *)contentsOfDirectoryAtIRI: (OFIRI *)IRI; /** - * @brief Removes the item at the specified URI. + * @brief Removes the item at the specified IRI. * - * If the item at the specified URI is a directory, it is removed recursively. + * If the item at the specified IRI is a directory, it is removed recursively. * - * @param URI The URI to the item which should be removed + * @param IRI The IRI to the item which should be removed */ -- (void)removeItemAtURI: (OFURI *)URI; +- (void)removeItemAtIRI: (OFIRI *)IRI; /** * @brief Creates a hard link for the specified item. * - * The destination URI must have a full path, which means it must include the + * The destination IRI must have a full path, which means it must include the * name of the item. * - * This method is not available for all URIs. + * This method is not available for all IRIs. * - * @param source The URI to the item for which a link should be created - * @param destination The URI to the item which should link to the source + * @param source The IRI to the item for which a link should be created + * @param destination The IRI to the item which should link to the source */ -- (void)linkItemAtURI: (OFURI *)source toURI: (OFURI *)destination; +- (void)linkItemAtIRI: (OFIRI *)source toIRI: (OFIRI *)destination; /** * @brief Creates a symbolic link for an item. * - * The destination URI must have a full path, which means it must include the + * The destination IRI must have a full path, which means it must include the * name of the item. * - * This method is not available for all URIs. + * This method is not available for all IRIs. * * @note On Windows, this requires at least Windows Vista and administrator * privileges! * - * @param URI The URI to the item which should symbolically link to the target + * @param IRI The IRI to the item which should symbolically link to the target * @param target The target of the symbolic link */ -- (void)createSymbolicLinkAtURI: (OFURI *)URI +- (void)createSymbolicLinkAtIRI: (OFIRI *)IRI withDestinationPath: (OFString *)target; /** * @brief Tries to efficiently copy an item. If a copy would only be possible * by reading the entire item and then writing it, it returns false. * - * The destination URI must have a full path, which means it must include the + * The destination IRI must have a full path, which means it must include the * name of the item. * * If an item already exists, the copy operation fails. This is also the case * if a directory is copied and an item already exists in the destination * directory. * * @param source The file, directory or symbolic link to copy - * @param destination The destination URI + * @param destination The destination IRI * @return True if an efficient copy was performed, false if an efficient copy * was not possible. Note that errors while performing a copy are * reported via exceptions and not by returning false! */ -- (bool)copyItemAtURI: (OFURI *)source toURI: (OFURI *)destination; +- (bool)copyItemAtIRI: (OFIRI *)source toIRI: (OFIRI *)destination; /** * @brief Tries to efficiently move an item. If a move would only be possible * by copying the source and deleting it, it returns false. * - * The destination URI must have a full path, which means it must include the + * The destination IRI must have a full path, which means it must include the * name of the item. * * If the destination is on a different logical device or uses a different * scheme, an efficient move is not possible and false is returned. * @@ -249,9 +249,9 @@ * @param destination The new name for the item * @return True if an efficient move was performed, false if an efficient move * was not possible. Note that errors while performing a move are * reported via exceptions and not by returning false! */ -- (bool)moveItemAtURI: (OFURI *)source toURI: (OFURI *)destination; +- (bool)moveItemAtIRI: (OFIRI *)source toIRI: (OFIRI *)destination; @end OF_ASSUME_NONNULL_END