1. C# / Говнокод #19279

    −108

    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
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    public static class EscapeSequenceChecker {
    		public class Result {
    			public bool Success;
    			public string UnknownEscapeSequence;
    		}
    
    
    		public static Result Check(ConstValue value) {
    			return Check(value.Value);
    		}
    
    
    		public unsafe static Result Check(String str) {
    			int length = str.Length;
    			char errorChar = '\0';
    
    			fixed(char* checkStr = str) {
    				bool success = false;
    
    				for(int i = 0; i < length; i++) {
    					
    					if(checkStr[i] == SPECIAL_CHARS.PREFIX) {
    						if(i >= length-1) {
    							errorChar = '\0';
    							goto FAIL;
    						}
    
    						success = false;
    						int allSpecialCharsLength = SPECIAL_CHARS.ALL.Length;
    							for(int sc = 0; sc < allSpecialCharsLength; sc++) {
    								if(checkStr[i+1] == SPECIAL_CHARS.ALL[sc]) {
    									success = true;
    									break;
    								}
    							}
    						if(!success) {
    							errorChar = checkStr[i+1];
    							goto FAIL;
    						}
    					}
    
    				}
    			}
    
    			SUCCESS:
    				return new Result{ UnknownEscapeSequence="", Success=true };
    			FAIL:
    				return new Result{ UnknownEscapeSequence=new String(SPECIAL_CHARS.PREFIX,1) + errorChar, Success=false };
    		}
    
    
    
    	}

    о я-я! я уметь готу и указатели)

    Запостил: glauberov, 04 Января 2016

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

    • В сишарпе нет нормальных callback-ов (указателей на функции). Вместо них какое-то говно под названием "делегат"
      Ответить
      • Ну уж делегат то понормальнее, чем указатель на функцию... Хоть и неудобно, что его надо описывать под каждый случай.
        Ответить
        • Есть же func и action
          Ответить
          • Ну это ж просто готовый набор делегатов.
            Ответить
            • я к тому что не обязательно прописывать все делегаты как
              public delegate int PerformCalculation(int x, int y);
              Ответить
              • Но иногда лучше прописать, для наглядности. Например ClickHandler вместо Action. В общем-то я и в крестах порой пишу typedef вместо std::function<void ()>.
                Ответить
                • Если это архитектурно важно естественно лучше прописать. А если это где то на дне морском - можно не заморачиваться
                  Ответить
                  • Ну если это какой-то Map или Filter - то похуй, конечно. Там и общий Func сойдёт.
                    Ответить
    • Это говнокод уже по количеству отступов
      Ответить
      • Предлагаете писать без отступов? Или может лучше http://govnokod.ru/18087 ?
        :)
        Ответить
      • Это просто табы (за это я и не люблю их).
        Ответить
    • - Дай подумать. Смотреть, как огребает мой парень, или огрести вместе с ним за компанию? Даже не знаю, что выбрать.
      Ответить

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