<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.cdt.core" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.cdt.core" id="EFSFileSystemUtilityProvider" name="EFSFileSystemUtilityProvider"/>
      </appInfo>
      <documentation>
         This extension point allows one to contribute a class that provides supplementary support for an EFS filesystem in the form of a provider of a set of utility methods.  In particular, the class can extract meaningful information from the filesystem and its resources, and provide useful operations relating to such resources.
      </documentation>
   </annotation>
   <element name="extension">
      <annotation>
         <appInfo>
            <meta.element />
         </appInfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="EFSExtensionProvider"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>
   <element name="EFSExtensionProvider">
      <annotation>
         <documentation>
            An instance of an EFS Extension Provider.  EFS Extension Providers are mapped to a URI scheme corresponding to an EFS filesystem for which they provide support.  These extensions are consulted by CDT in order to extract path information from the filesystem and manipulate filesystem resources.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="scheme" type="string" use="required">
            <annotation>
               <documentation>
                  The URI scheme of an EFS filesystem this utility provides support for.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  Java class which extends from org.eclipse.cdt.core.EFSFileSystemSupplementarySupportProvider to provide support for the filesystem.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.cdt.core.EFSExtensionProvider:"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>
   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         5.2
      </documentation>
   </annotation>
   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         A default implementation is supplied by org.eclipse.cdt.core.EFSFileSystemUtilityProvider that assumes that URIs for the given filesystem map directly to resources in the physical filesystem, and that the path component of the URI is a direct representation of the absolute path to the file in the physical filesystem.  Clients can extend this implementation and override its behaviour as needed.
      </documentation>
   </annotation>
</schema>
