home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / ADDONINC.PAK / COMHELP.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  3.0 KB  |  128 lines

  1. /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2.  
  3.     comhelp.cpp
  4.     Created: 10/20/95
  5.     Copyright (c) 1995, Borland International
  6.     $Header:   Y:\admin\bride\addon\deliver\interfac\comhelp.cpv   1.20   18 Nov 1996 11:29:14   JDOUGLAS  $
  7.     $Revision:   1.20  $
  8.  
  9.    Helper Functions
  10.     
  11. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/    
  12.  
  13. #include <assert.h>
  14.  
  15. #include <ideaddon\comhelp.h>
  16.  
  17. static IIdeServer * g_IdeServer = NULL;
  18.  
  19. //.............................................................................
  20. void SetIdeServer( IIdeServer * pIdeServer )
  21.     {
  22.     g_IdeServer = pIdeServer;
  23.     }
  24.  
  25. //.............................................................................
  26. IIdeServer * GetIdeServer()
  27.     {
  28.     if ( g_IdeServer )
  29.         {
  30.         g_IdeServer->AddRef();
  31.         } 
  32.     return g_IdeServer;
  33.     }
  34.  
  35. //.............................................................................
  36. void ReleaseIdeServer()
  37.     {
  38.     if ( g_IdeServer )
  39.         {
  40.         g_IdeServer->Release();
  41.         g_IdeServer = NULL;
  42.         } 
  43.     }
  44.  
  45. //.............................................................................
  46. IUnknown * GetInterface ( REFCLSID rclsid )
  47.     {
  48.     IUnknown * pi = NULL;
  49.     if ( g_IdeServer )
  50.         {
  51.         HRESULT hRes = g_IdeServer->QueryInterface( rclsid, (void **) &pi );
  52.         if ( hRes != NOERROR )
  53.             pi = NULL;
  54.         }
  55.     return pi;
  56.     }
  57.  
  58. //.............................................................................
  59. IPolyString * CreatePolyString()
  60.     {
  61.     IPolyString *polystr = NULL;
  62.     IIdeServer * pIdeSrvr = ::GetIdeServer();
  63.     if ( pIdeSrvr )
  64.         {
  65.         polystr = pIdeSrvr->CreatePolyString();
  66.         pIdeSrvr->Release();
  67.         }
  68.     return polystr;
  69.     }
  70.  
  71. //.............................................................................
  72. IVirtualFile * CreateVirtualFile()
  73.     {
  74.     IVirtualFile *vfile = NULL;
  75.     IIdeServer * pIdeSrvr = ::GetIdeServer();
  76.     if ( pIdeSrvr )
  77.         {
  78.         vfile = pIdeSrvr->CreateVirtualFile();
  79.         pIdeSrvr->Release();
  80.         }
  81.     return vfile;
  82.     }
  83.  
  84. //.............................................................................
  85. IViewType * CreateViewType()
  86.     {
  87.     IViewType *viewtype = NULL;
  88.     IIdeServer * pIdeSrvr = ::GetIdeServer();
  89.     if ( pIdeSrvr )
  90.         {
  91.         viewtype = pIdeSrvr->CreateViewType();
  92.         pIdeSrvr->Release();
  93.         }
  94.     return viewtype;
  95.     }
  96.  
  97. //.............................................................................
  98. IPolyString *MakePolyString (const char *cstr)
  99.     {
  100.     IPolyString *polystr = ::CreatePolyString();
  101.     if ( polystr != NULL )
  102.         {
  103.         polystr->SetCstr( cstr );
  104.         } 
  105.     return polystr;
  106.     }
  107.  
  108. //.............................................................................
  109. // Spit out a copy of the c string in a polystr. Release the polystr.
  110. char *PolyCstrDup ( IPolyString *polystr )
  111.     {
  112.     char *newCstr = NULL;
  113.     if ( polystr != NULL )
  114.         {
  115.         const char *oldCstr = polystr->GetCstr();
  116.         if ( oldCstr != NULL )
  117.             {
  118.             newCstr = new char[ strlen( oldCstr ) + 1 ];
  119.             if ( newCstr != NULL )
  120.                 {
  121.                 strcpy( newCstr, oldCstr );
  122.                 }
  123.             }
  124.         polystr->Release();
  125.         }
  126.     return newCstr;
  127.     }
  128.