1. C++ / Говнокод #14213

    +6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    class Log
    {
    
    	ReverseStruct<std::list<std::string> > _logList;
    	semafor semafor;
    	Log()
    	{
    		std::list<std::string> right , left;
    		std::shared_ptr<std::list<std::string> > ptrRight=std::shared_ptr<std::list<std::string> >(*right);
    		std::shared_ptr<std::list<std::string> > ptrLeft=std::shared_ptr<std::list<std::string> >(*left);
    		_logList=TReverseStruct<std::list<std::string> >(ptrRight,ptrLeft);
    	}
    
    
    	void writeMessage(std::string message, Level level ){_logList.getWriteStorage.push_back( currentTime+level+messge); semafor.signal();}
    	void body()
    	{
    		try
    		{
    			semafor.wait();
    			_logList.revers();
    			for (std::list<std::string>::iterator i =_logList.getReadStorage->begin(); i != _logList.getReadStorage->end(); ++i)
    			{
    			fixedBufferString<7000, '\0'> stringLog;
    			stringLog.append(*i);
    			FileDevice flashInternal(FLASHINTERNAL);
    			const DriveErrors::E WriteResult = flashInternal.writeFile("log.iso", (byte*)stringLog.content(), stringLog.length());
    			}
    		}
    		catch()
    		{}
    	}
    }

    Запостил: laMer007, 11 Декабря 2013

    Комментарии (3) RSS

    • > как тебе идея?
      Мне отправили код с выше с этим вопросом.
      На всякий случай пришлю и ReverseStruct
      struct DefaultReadFunction {};
      struct DefaultWriteFunction {};
      template<typename T>
      class ReverseStruct
      {
      private:
      	std::shared_ptr<T> _firstSorage;
      	std::shared_ptr<T> _secondSorage;
      	boost::function2<bool ,std::shared_ptr<T>, std::shared_ptr<T> > _functionReverseOnRead;
      	boost::function2<bool ,std::shared_ptr<T>, std::shared_ptr<T> > _functionReverseOnWrite;
      	bool _reverse;
      	static bool defaultFunctionReverseOnRead(std::shared_ptr<T> read,std::shared_ptr<T> write){return false};
      	static bool defaultFunctionReverseOnWrite(std::shared_ptr<T> write,std::shared_ptr<T> read){return false};
      	std::shared_ptr<T> getStorageByRevers(bool revers)const
      	{
      		if(revers) return _firstSorage;
      		return _secondSorage;
      	};
      public:
      	ReverseStruct(std::shared_ptr<T> firstSorage, std::shared_ptr<T> secondSorage):_firstSorage(firstSorage),_secondSorage(secondSorage)	{
      			_functionReverseOnRead=defaultFunctionReverseOnRead;
      			_functionReverseOnWrite=_functionReverseOnWrite;
      	};
      Ответить
      • ReverseStruct(std::shared_ptr<T> firstSorage, std::shared_ptr<T> secondSorage, DefaultReadFunction, std::shared_ptr<T> write):_firstSorage(firstSorage),_secondSorage(secondSorage)	{
        			_functionReverseOnRead=defaultFunctionReverseOnRead;
        			_functionReverseOnWrite=write;
        	};
        	ReverseStruct(std::shared_ptr<T> firstSorage, std::shared_ptr<T> secondSorage, std::shared_ptr<T> read, DefaultWriteFunction):_firstSorage(firstSorage),_secondSorage(secondSorage)	{
        			_functionReverseOnRead=read;
        			_functionReverseOnWrite=_functionReverseOnWrite;
        	};
        	ReverseStruct(std::shared_ptr<T> firstSorage, std::shared_ptr<T> secondSorage, std::shared_ptr<T> read, std::shared_ptr<T> write):_firstSorage(firstSorage),_secondSorage(secondSorage)	{
        			_functionReverseOnRead=read;
        			_functionReverseOnWrite=write;
        	};
        	~ReverseStruct(){};
        	void revers(void){_reverse=!_reverse;}
        
        	std::shared_ptr<T> getReadStorage(void)	{
        		if (_functionReverseOnRead(getStorageByRevers(!_reverse),getStorageByRevers(_reverse)))
        			revers();
        		
        		return getStorageByRevers(!_reverse);
        	};
        	std::shared_ptr<T> getWriteStorage(void)	{
        		if (_functionReverseOnWrite(getStorageByRevers(_reverse),getStorageByRevers(!_reverse)))
        			revers();
        		return getStorageByRevers(_reverse);
        	};
        	/* data */
        };
        Собственно как вам идея то?
        Ответить
        • Ну как мне идея? Идея скажем не компилируется.
          std::make_shared не асилен.
          typedef не асилен.
          English не асилен.
          foreach не асилен.
          синхронизация многопоточности не асилена.
          Что делает ReverseStruct - даже разбираться не стал. Абсракция ради абосракции.
          Ответить

    Добавить комментарий