ScorpioT1000
Работаем
online
Опыт: отключен
|
[cJass] IFDEBUG library
Лолшто?Вспомогательная отладочная build-time библиотека, наподобие Assert.h
Выводит информацию о месте вызова(функции) и условии на экран. Лолгде?Решил замутить всетаки тред, остальное, что выложил в пабе, скрою.
1 теперь не Assert, а Ifdebug как Van Damm предлагал) 2 перегружены вызовы с возвратом и без возврата 3 теперь не надо передавать имя ф-ций, спасибо Адику.. 3 методы выводятся красиво ! спасибо Адику :)
» ЛолКОД !
IFDEBUG( ARGUMENT ) with condition, to all players
IFDEBUG( ARGUMENT, RET ) with condition and return, to all players IFDEBUGP( ARGUMENT, DEST_PLAYER ) with condition, to one player IFDEBUGP( ARGUMENT, DEST_PLAYER, RET ) with condition and return, to one player Лолкак?Вставляете внутри любой функции IFDEBUG или IFDEBUGP(если вывести требуется для одного игрока).
В аргументах указываете условие и (если после этой ошибки нужно завершить ф-цию) возвращаемое значение. Если ф-ция типа void(returns nothing) то указываете пробел, типа: IFDEBUG(mybool, ) тогда он подставит просто return. Для случая IFDEBUGP, требуется указать игрока как 2 аргумент.
» ЛолПРИМЕРЫ !
Пример 1:
Если u равен null, выведет:
Пример 2:
Если u равен null, выведет:
и ф-ция вернет false Пример 3:
Если dur меньше 5, выведет для игрока 6:
Отредактировано ScorpioT1000, 14.12.2009 в 00:20. |
01.10.2009, 04:40 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Van Damm
wait... what?
offline
Опыт:
22,268Активность: |
Мб всё же добавить сюда аналоги, работающие как assert? Ну то есть которые выдают мессаги если условие не истинно. |
01.10.2009, 11:09 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
а че в cJass нет конструкции типа for (i=0;i<10;i++) ???
переменную i и пару строк кода можно выкинуть нафиг т.о.
ну и, возможно, elseif вообще можно выкинуть заменив на else и принудительно whichPlayer = -1
NETRAT добавил:
хм, нафиг изврат с оверлодами - значения по default для аргументов не поддерживаются? Ifdebug_debug_msg(string message, integer whichPlayer = -1) NETRAT добавил: полноценный assert крут тем что выдается номер строки в коде, иначе он ничем не отличается от debugMsg |
01.10.2009, 11:31 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Van Damm
wait... what?
offline
Опыт:
22,268Активность: |
будет =) пока нет здесь тоже можно выдавать номер строки в war3map.j, это тебе чем-то поможет? |
01.10.2009, 13:02 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
конечно, а чем еще примечателен ассерт? |
01.10.2009, 15:43 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Van Damm
wait... what?
offline
Опыт:
22,268Активность: |
Просто здесь для определения строки юзеру надо было бы лезть в war3map_parsed.j, плюс к тому ск сделал мессаги с юзероопределяемым текстом, так что более-менее понятно будет наверное |
01.10.2009, 16:46 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
гм, не, надо что бы номер строки был в исходном коде а не в отпарсенном - видимо надо во время парсинга эти номера проставлять, если, конечно, вообще нужен assert, ибо for и значения по умолчанию первоочереднее |
01.10.2009, 16:57 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
ты же знаешь какие функции пишешь начерта тебе еще и номер строк? |
01.10.2009, 17:07 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
всмысле? что бы в коде найти тот самый ассерт, или ты прямо в ассерте пишеш "assert #151 line #522"? обычно это делается так - получаешь номер строки, клацаешь ctrl+G вбиваешь туда номер и вот тебе проверка |
01.10.2009, 17:10 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
там имя ф-ции вобщето выводится)
ScorpioT1000 добавил: иначе зачем все это надо.. |
01.10.2009, 17:10 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
где? какой функции?
NETRAT добавил:
в функции не может быть много строк или мы о разных вещах говорим? NETRAT добавил: btw assert - отладочная функция, выдавать assertion failed юзеру - моветон |
01.10.2009, 17:12 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
пример:
выведет "Debug(all): myfunc: a == 0" тоесть имя ф-ции ты узнаешь и поймешь где ошибка в коде |
01.10.2009, 17:18 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
а если в твоей функции 100 строк кода, 20 из которых состоят из подобных проверок?
это не программирование, а атмта получается автоподстановка имени функции это круто, парсер это делает или что? Отредактировано ScorpioT1000, 03.10.2009 в 15:13. |
01.10.2009, 17:22 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
да емае там же условия еще выводятся... неужели неразобрать
ScorpioT1000 добавил: я сам думал о line просто адик не сделал еще. что ты то хочешь ? ну сделай чтото лучше, я лично не вижу пока лучшего решения Отредактировано ScorpioT1000, 01.10.2009 в 17:44. |
01.10.2009, 17:25 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
ну так интересно стало чем ща народ в сJass занимается, решил посмотреть, откомментить значит atm все круто |
01.10.2009, 17:38 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
врядли, говорю сразу у меня в голове крутяться сложные мысли про какие то фичи, но выразить я их пока немогу) что то с COUNTER, но что именно - я пока сказать несмогу
НТ с номером строки отпадает, там фича в том, что мы работаем с war3map.j, а не с war3map.wct, т.е. туда сам редактор еще кучу кода напишет
теперь, имхо стоит сделать только один макрос, точнее с одним именем, например:
второе - по моему есть смысл использовать системный макрос DEBUG, который обьвляется, если включен дебаг мод в жасс хелпере. круто же будет! |
01.10.2009, 19:58 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Van Damm
wait... what?
offline
Опыт:
22,268Активность: |
что-то вроде
|
01.10.2009, 20:46 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
ну тут вопрос не в технике, а в идее) |
01.10.2009, 21:02 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
нет, я вобще против вжасс дебаг моде .. а про why? ты не можешь узнать, что это метод а не ф-ция и вписать имя класса? |
02.10.2009, 06:54 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
хм... да вообще то могу) хм, ну я подумаю над этим, ок?) ADOLF добавил:
что то вроде этого) |
02.10.2009, 15:24 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|