15 using System.CodeDom.Compiler;
 
   16 using System.Diagnostics;
 
   17 using System.Runtime.InteropServices;
 
   21 using VSOLE = Microsoft.VisualStudio.OLE.Interop;
 
   22 using Microsoft.VisualStudio;
 
   23 using Microsoft.VisualStudio.Shell;
 
   24 using Microsoft.VisualStudio.Shell.Interop;
 
   25 using Microsoft.VisualStudio.Designer.Interfaces;
 
   27 namespace SiliconStudio.Paradox.VisualStudio.CodeGenerator
 
   34         private object site = null;
 
   35         private CodeDomProvider codeDomProvider = null;
 
   36         private ServiceProvider serviceProvider = null;
 
   37         private ServiceProvider globalProvider = null;
 
   39         #region IObjectWithSite Members 
   46         void Microsoft.VisualStudio.OLE.Interop.IObjectWithSite.GetSite(ref Guid riid, out IntPtr ppvSite)
 
   50                 throw new COMException(
"object is not sited", VSConstants.E_FAIL);
 
   53             IntPtr pUnknownPointer = Marshal.GetIUnknownForObject(site);
 
   54             IntPtr intPointer = IntPtr.Zero;
 
   55             Marshal.QueryInterface(pUnknownPointer, ref riid, out intPointer);
 
   57             if (intPointer == IntPtr.Zero)
 
   59                 throw new COMException(
"site does not support requested interface", VSConstants.E_NOINTERFACE);
 
   69         void Microsoft.VisualStudio.OLE.Interop.IObjectWithSite.SetSite(
object pUnkSite)
 
   72             codeDomProvider = null;
 
   73             serviceProvider = null;
 
   81         protected ServiceProvider SiteServiceProvider
 
   85                 if (serviceProvider == null)
 
   87                     serviceProvider = 
new ServiceProvider(site as Microsoft.VisualStudio.OLE.Interop.IServiceProvider);
 
   88                     Debug.Assert(serviceProvider != null, 
"Unable to get ServiceProvider from site object.");
 
   90                 return serviceProvider;
 
   94         protected ServiceProvider GlobalServiceProvider
 
   98                 if (globalProvider == null)
 
  100                     var siteServiceProvider = this.SiteServiceProvider;
 
  101                     if (siteServiceProvider != null)
 
  103                         var service = siteServiceProvider.GetService(typeof(IVsHierarchy)) as IVsHierarchy;
 
  106                             VSOLE.IServiceProvider oleServiceProvider;
 
  107                             ErrorHandler.ThrowOnFailure(service.GetSite(out oleServiceProvider));
 
  108                             if (oleServiceProvider != null)
 
  109                                 this.globalProvider = 
new ServiceProvider(oleServiceProvider);
 
  113                 return this.globalProvider;
 
  124             return SiteServiceProvider.GetService(serviceGuid);
 
  134             return SiteServiceProvider.GetService(serviceType);
 
  144             if (codeDomProvider == null)
 
  147                 IVSMDCodeDomProvider provider = GetService(typeof(SVSMDCodeDomProvider)) as IVSMDCodeDomProvider;
 
  148                 if (provider != null)
 
  150                     codeDomProvider = provider.CodeDomProvider as CodeDomProvider;
 
  155                     codeDomProvider = CodeDomProvider.CreateProvider(
"C#");
 
  158             return codeDomProvider;
 
  167             CodeDomProvider codeDom = GetCodeProvider();
 
  168             Debug.Assert(codeDom != null, 
"CodeDomProvider is NULL.");
 
  169             string extension = codeDom.FileExtension;
 
  170             if (extension != null && extension.Length > 0)
 
  172                 extension = 
"." + extension.TrimStart(
".".ToCharArray());
 
  185             Debug.Assert(p != null, 
"Unable to get Project Item.");
 
  198             return GetProjectItem().ContainingProject;
 
  208             return (VSProjectItem)GetProjectItem().Object;
 
  221             return (VSProject)GetProject().Object;
 
object GetService(Guid serviceGuid)
Method to get a service by its GUID 
 
Base code generator with site implementation 
 
ProjectItem GetProjectItem()
Returns the EnvDTE.ProjectItem object that corresponds to the project item the code generator was cal...
 
Project GetProject()
Returns the EnvDTE.Project object of the project containing the project item the code generator was c...
 
VSProject GetVSProject()
Returns the VSLangProj.VSProject object of the project containing the project item the code generator...
 
object GetService(Type serviceType)
Method to get a service by its Type 
 
EnvDTE.ProjectItem ProjectItem
 
A managed wrapper for VS's concept of an IVsSingleFileGenerator which is a custom tool invoked at des...
 
VSProjectItem GetVSProjectItem()
Returns the VSLangProj.VSProjectItem object that corresponds to the project item the code generator w...
 
override string GetDefaultExtension()
Gets the default extension of the output file from the CodeDomProvider 
 
virtual CodeDomProvider GetCodeProvider()
Returns a CodeDomProvider object for the language of the project containing the project item the gene...
 
Microsoft.VisualStudio.OLE.Interop VSOLE