Changeset 641


Ignore:
Timestamp:
Jun 14, 2016, 11:12:30 AM (5 years ago)
Author:
roman
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DirectShowSpy/Common.h

    r617 r641  
    544544};
    545545
    546 
    547 ////////////////////////////////////////////////////////////
    548 // CCommandLineArguments
    549 
    550 class CCommandLineArguments
    551 {
    552 public:
    553 
    554         ////////////////////////////////////////////////////////
    555         // CArgument
    556 
    557         class CArgument
    558         {
    559         public:
    560                 BOOL m_bSwitch;
    561                 CString m_sSwitchName;
    562                 CString m_sSwitchValue;
    563                 BOOL m_bIntegerSwitchValueAvailable;
    564                 INT m_nIntegerSwitchValue;
    565                 CString m_sValue;
    566 
    567         public:
    568         // CArgument
    569                 CArgument() :
    570                         m_bSwitch(FALSE),
    571                         m_bIntegerSwitchValueAvailable(FALSE)
    572                 {
    573                 }
    574                 VOID Initialize()
    575                 {
    576                         m_bSwitch = FALSE;
    577                         m_sSwitchName.Empty();;
    578                         m_sSwitchValue.Empty();;
    579                         m_bIntegerSwitchValueAvailable = FALSE;
    580                         m_sValue.Empty();
    581                 }
    582         };
    583 
    584 private:
    585         SIZE_T m_argc;
    586         TCHAR** m_argv;
    587         SIZE_T m_nIndex;
    588 
    589 public:
    590 // CCommandLineArguments
    591         CCommandLineArguments(SIZE_T argc, TCHAR* argv[]) :
    592                 m_argc(argc),
    593                 m_argv(argv),
    594                 m_nIndex(1)
    595         {
    596         }
    597         CCommandLineArguments(LPCWSTR pszCommandLine, SIZE_T nIndex = 1) :
    598                 m_nIndex(nIndex)
    599         {
    600                 INT nArgumentCount = 0;
    601                 LPWSTR* pszArguments = CommandLineToArgvW(pszCommandLine, &nArgumentCount);
    602                 m_argc = nArgumentCount;
    603                 m_argv = pszArguments;
    604         }
    605         BOOL Next(CArgument& Argument)
    606         {
    607                 if(m_nIndex >= m_argc)
    608                         return FALSE;
    609                 CString sArgument = m_argv[m_nIndex++];
    610                 _A(!sArgument.IsEmpty());
    611                 Argument.Initialize();
    612                 if(_tcschr(_T("-/"), sArgument[0]))
    613                 {
    614                         Argument.m_bSwitch = TRUE;
    615                         sArgument.Delete(0);
    616                         const INT nSeparatorPosition = sArgument.Find(_T(':'));
    617                         if(nSeparatorPosition > 0)
    618                         {
    619                                 Argument.m_sSwitchName = sArgument.Left(nSeparatorPosition);
    620                                 Argument.m_sSwitchValue = sArgument.Mid(nSeparatorPosition + 1);
    621                                 if(!Argument.m_sSwitchValue.IsEmpty())
    622                                         Argument.m_bIntegerSwitchValueAvailable =  AtlStringToInteger(Argument.m_sSwitchValue, Argument.m_nIntegerSwitchValue);
    623                         } else
    624                                 Argument.m_sSwitchName = sArgument;
    625                         return TRUE;
    626                 }
    627                 if(sArgument.GetLength() >= 2 && sArgument[0] == _T('"') && sArgument[sArgument.GetLength() - 1] == _T('"'))
    628                         sArgument = sArgument.Mid(1, sArgument.GetLength() - 2);
    629                 Argument.m_sValue = sArgument;
    630                 return TRUE;
    631         }
    632 };
    633 
    634546#if defined(DIRECTSHOWSPY)
    635547
Note: See TracChangeset for help on using the changeset viewer.