Ignore:
Timestamp:
Jan 15, 2016, 4:22:49 AM (7 years ago)
Author:
roman
Message:

Added ability to flush media sample trace data to file via command line

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DirectShowSpy/Common.h

    r545 r569  
    544544};
    545545
     546
     547////////////////////////////////////////////////////////////
     548// CCommandLineArguments
     549
     550class CCommandLineArguments
     551{
     552public:
     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
     584private:
     585        SIZE_T m_argc;
     586        TCHAR** m_argv;
     587        SIZE_T m_nIndex;
     588
     589public:
     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
    546634////////////////////////////////////////////////////////////
    547635// DIRECTSHOWSPY_NAMESPACE_PREFIX
Note: See TracChangeset for help on using the changeset viewer.