рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рдмреАрдЪ рдХрд╛рдлреА рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧ рд╣реИрдВред рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд░реБрдЪрд┐ рджрд┐рдЦрд╛рдПрдВ, рдЗрд╕ рдорд╛рд╣реМрд▓ рдореЗрдВ рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ рднреА рд╡рд┐рд╢реЗрд╖ рдХрд┐рддрд╛рдмреЗрдВ рдФрд░ рдлрд╝реЛрд░рдо рдкрдврд╝реЗрдВ, рдпрджрд┐ рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рдЗрддрдирд╛ рдирд┐рдореНрди-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреНрдпреЛрдВ рд╣реИ? рдпрд╣ рдХреИрд╕реЗ рд╣реИ рдХрд┐ рдПрдХ рдЫрд╛рддреНрд░, рдЬрд▓рддреА рд╣реБрдИ рдЖрдБрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреА рдХрдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рджрд░реНрдЬрди рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рдЕрдЪрд╛рдирдХ рдПрдХ рдЦрд░рд╛рдм-рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реИ? рдЕрдкрдиреЗ рдХрд░рд┐рдпрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рд╛рд▓-рджрд░-рд╕рд╛рд▓ред
рд╣рд╛рдВ, рдЖрдк рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдо-рдХреБрд╢рд▓ рдХрд░реНрдорд┐рдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рд╡реЗрддрди рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдмрд┐рдирд╛ рдкрд▓рдХ рдЭрдкрдХрд╛рдП рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореЙрдирд┐рдЯрд░ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдРрд╕реЗ рдХрд░реНрдордЪрд╛рд░реА рд╣реИрдВред рд╡рд╛рд╕реНрддреБрдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреА рдпреЛрдЧреНрдпрддрд╛ рдХрдо рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрдорд╛рд░рддреЛрдВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд "рдкреИрдЪ" рдХреЗ рдмрд┐рдирд╛ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рджреЛ рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИрдВред рдкрд╣рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдпрд╣ рд╕рдордп рд╣реИ, рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВ, рдирд┐рд░рдВрддрд░ рдкрд░рд┐рд╡рд░реНрддрдиред рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рднрд▓реЗ рд╣реА рд╡рд╣ рдЧреНрд░рд╛рд╣рдХ рдХреА рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реЛ, рдЖрдЧреЗ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЕрдХреНрд╕рд░ рдареЗрдХреЗрджрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рддред рд╡реЗ рд▓рдЧрднрдЧ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИрдВ рдФрд░ рд╣рдореЗрд╢рд╛ рд╕рд┐рд╕реНрдЯрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдордп рдХреЗ рд╕рд╛рде, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рд╕рд░ рдЕрдиреБрдкрдпреЛрдЧреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдордп рдиреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдФрд░ рднреА рдмрдбрд╝рд╛ рдХрд░ рджрд┐рдпрд╛ - рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред
рджреВрд╕рд░рд╛ рдХрд╛рд░рдг рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреЗрд╢реЗрд╡рд░ рд╣реИред Trifles рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдирд╛рдХрд╛рдиреАред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВред рдФрд░ рдЯреАрдо рдЬрд┐рддрдиреА рдЫреЛрдЯреА рд╣реЛрдЧреА, рдкреНрд░рднрд╛рд╡ рдЙрддрдирд╛ рд╣реА рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред рдмреЗрд╢рдХ, рдорд▓реНрдЯреАрдорд┐рдереЛрдбреНрд╕ [1] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ trifles рдХрд╛ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдердорд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдордп рдФрд░ рдмрдЬрдЯ рд╕реАрдорд┐рдд рд╣реИ ...
рдпрд╣ рдмреЗрд╣рддрд░ рднреА рдирд┐рдХрд▓рд╛ред рдпрд╣ рдПрдХ рдиреАрдВрд╡ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдШрд░ рдХреА рддрд░рд╣ рд╣реИред рдЧреНрд░рд╛рд╣рдХ рдиреЗ рд╡рд┐рд╢рд╛рд▓ рдХрдорд░реЗ, рдПрдХ рд▓рд┐рдлреНрдЯ, рдкреНрд░рддреНрдпреЗрдХ рдордВрдЬрд┐рд▓ рдкрд░ рдПрдХ рдмрд╛рдерд░реВрдо рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ - рд╡рд╣ рд╢рд╛рдпрдж рдиреАрдВрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдПрдХ рдЧреБрдгрд╡рддреНрддрд╛ рдиреАрдВрд╡ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдФрд░ рдХрд▓рд╛рдХрд╛рд░реЛрдВ, рд╡рд╛рд╕реНрддреБрдХрд╛рд░ рд╕реЗ рд▓реЗрдХрд░ рдмрд┐рд▓реНрдбрд░ рддрдХ, рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдЗрд╕рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рд░рдВрддрд░ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдореИрдВ рдПрдХ рдЫрд╛рдпрд╛рджрд╛рд░, рд▓реЗрдХрд┐рди рдореМрд▓рд┐рдХ рдФрд░ рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрддрдВрддреНрд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдпрд╣ рд▓реЙрдЧрд┐рдВрдЧ рд╣реИред рдХрдИ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрдЪрд┐рдд рдзреНрдпрд╛рди рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред
рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓реЙрдЧрд┐рдВрдЧ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдХрдИ рдХрд╖реНрдЯрдкреНрд░рдж рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдкрд▓ рдореЗрдВ рджреЛрд╖ рдФрд░ рдкрд░рд┐рдЪрдп рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдордп рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдЧрд▓рддреА рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдХрд╛рдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдпрд╛рдж рдХреА рдЧрдИ рдереА, рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕реНрдиреЛрдмреЙрд▓ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЙрд╕рдХреЗ рддрд╣рдд рд╕рднреА рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЛ рджрдлрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреА рд╣реИред
рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдХреИрд╕реЗ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬреЛ рдзреНрдпрд╛рди рд╕реЗ рд╡рдВрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВред
- рдкреВрд░реНрдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕
- рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо
- рдЖрдИрдбреАрдИ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛
- рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА
- рдбреЗрд╡рд▓рдкрд░ рдЙрдкрдХрд░рдг
рдкреВрд░реНрдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓реЙрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдгрддрд╛ (рддреНрд░реБрдЯрд┐, рдЪреЗрддрд╛рд╡рдиреА, рд╕реВрдЪрдирд╛) рдХреА рдбрд┐рдЧреНрд░реА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдкрд╣рд▓реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрджреЗрд╢ рджреЗрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЕрд▓рдЧрд╛рд╡ рд╢реБрд░реВ рдХрд░рдирд╛ - рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рд▓реЛрдЧреЛрдВ рдХреЛ рд╣рд░ рдЪреАрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдХрд╛рдо рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд░реЗрдВрдЧреЗ рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рддреБрд░рдВрдд рдХрд░реЗрдВрдЧреЗред
рдЕрдХреНрд╕рд░ рдПрдХ рд╣рдлреНрддреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╡рд╣ рдХрд┐рд╕реА рдФрд░ рдХрд╛ рд╣реЛред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХрдИ рдорд╣реАрдиреЛрдВ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХрдИ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдорд╛рдореВрд▓реА рдЖрдХрд╕реНрдорд┐рдХрддрд╛ рд╣реИ) рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЦреЛ рдЬрд╛рдПрдЧреАред
рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдоред рд▓реЙрдЧрд┐рдВрдЧ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрдм рд╕рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред IOS рдкрд░ рдЬреЛ рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдмреЗрд╢рдХ, рд╕рдВрджреЗрд╢ рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡реЗ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╢реНрд░рдо рд▓рд╛рдЧрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░, рдЪрд╛рд╣реЗ рд╡рд╣ рдиреИрддрд┐рдХ рд╣реЛ рдпрд╛ рдирд╣реАрдВ, рдЕрдХреНрд╕рд░ рд╡реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЛ рди рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдиреНрдпреВрдирддрдо рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдПрдХ рдЖрджрд░реНрд╢ рдХрд╛ рд╕рдкрдирд╛ рджреЗрдЦрдирд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдФрд░ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдИрдбреАрдИ рдХрдВрд╕реЛрд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрджреЗрд╢ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ "рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдЯреЛрд░реЗрдЬ (рдлрд╛рдЗрд▓ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕) рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛" рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд▓реЙрдЧ рд╕реЗ рдХрдИ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рддрд░рд╣ рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╡рд┐рднрд╛рдЧ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рджреА рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред
рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рд╕рдХрддреА рд╣реИ - рдпрд╣ рд╕рдм рд╕рдордп рдбреЗрд╡рд▓рдкрд░реНрд╕ "рдЕрдкрдиреЗ рд░рд╕ рдореЗрдВ рдкрдХрд╛рдирд╛" рд╣реЛрдЧрд╛ред рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИ, рдЖрдкрдиреЗ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рдХреБрдЫ рд╕реЗрдХрдВрдб рдпрд╛ рд╣рдлреНрддреЛрдВ рдмрд╛рдж рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦрд╛ред
рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреАред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдПрдХ рдЖрд▓рд╕реА рдкреНрд░рд╛рдгреА рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдЖрдХрд╛рд░ рдХреА рдПрдХ рдЫрд╡рд┐ 100 рд╕реЗ 120 рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрдмрдХрд┐ рд╡рд░реНрддрдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ 128 рдХреЗ рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ рдкрд░ 128 рддрдХ рдПрдХ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рд▓ рд░реЗрдЦрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рдЖрдЙрдЯрдкреБрдЯ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рдирдВрдмрд░ рдбрд╛рд▓реЗ
- рдкреНрд░рд╛рдкреНрдд рднрд╛рдЧреЛрдВ рд╕реЗ рдПрдХ рд░реЗрдЦрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ
- рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрди рдкрд╛рд╕ рдХрд░реЗрдВ
рднрд▓реЗ рд╣реА рднрд╛рд╖рд╛ рдПрдХ рд╕реНрд╡рд░реВрдкрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдкреНрд░рд┐рдВрдЯрдл [2] рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧрд╕реНрдЯреНрд░реАрдо [3]) рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдордзреНрдпрд╡рд░реНрддреА рдЪрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░рдирд╛, рдореБрдЦреНрдп рддрд░реНрдХ рдХреЛ рдирд╖реНрдЯ рдХрд░рдирд╛ ... рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рдХреЛ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓реЙрдЧ рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ "рдЕрдорд╛рдиреНрдп рдЫрд╡рд┐ рдЖрдХрд╛рд░" рд╣реИред "рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп" рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде, рдЗрд╕рд▓рд┐рдП рдЕрдм рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рджреЛ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреЛ рдЬрд╛рдПрдЧрд╛ред рдирддреАрдЬрддрди, рдбрд┐рдЬрд╛рдЗрдирд░ рдиреЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рддрд╕реНрд╡реАрд░ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рд▓реЙрдЧрд┐рдВрдЧ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реНрд╡рд░реВрдкрдг рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдореВрд▓ рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдП рдмрд┐рдирд╛ред рдпрд╣рд╛рдБ C ++ рдореЗрдВ рджреЛ рджрд┐рд╢рд╛рдПрдБ рд╕рдВрднрд╡ рд╣реИрдВред
рдкрд╣рд▓реЗ рд╕реА рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рд╣реИред рдкреИрдЯрд░реНрди рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рдирд╛ред рдпрд╛рдиреА рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЯ рдХреЗ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реНрд╡рд╛рдж рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрд╕рдВрдЧрдд рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рд╡рд┐рд╖рдо рдлрд╝рдВрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╛рдиреА рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд░рд▓реАрдХреГрдд, рдореИрдиреБрдЕрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореМрдЬреВрдж рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ% i рдХреЗ рдмрдЬрд╛рдп% u рд╕реНрд╡рд░реВрдкрдг рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдпрд╛рдж рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдЬрдм рд╕рд┐рд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реЛред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдпрд╛рд╡реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬрдм рдХреЛрдбрд┐рдВрдЧ рдХреЗ рдХреЛрдб (рдХреНрд░рдо, рдкреНрд░рдХрд╛рд░) рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд╣реИред рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╕рдорд╛рдзрд╛рди рдХреА рд╕рднреА рдХрдорд┐рдпреЛрдВ рд╕реЗ рд╡рдВрдЪрд┐рдд рд╣реИ: рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА, рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдлрд╝рд░реНрд╕, рдХрд╛рд╕реНрдЯ рдкреНрд░рдХрд╛рд░ рдЖрджрд┐ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЪрд░ рдХреЗ рд╕рдорд╛рд╡реЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рд▓рд╛рдЗрди рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ - рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реНрдЯреНрд░реАрдо рд╕реНрдЯреНрд░реАрдорд╕реНрдЯреНрд░реАрдо [3] рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВред
рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдзрдиред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡реНрдпрд╕реНрдд рд╣реИред рдпрд╣ рдЖрдИрдбреАрдИ рдЖрдЙрдЯрдкреБрдЯ рдХрдВрд╕реЛрд▓ рдореЗрдВ рднреА рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдмрд╛рджрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдЦреЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓реЙрдЧ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрддрд░ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред" рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ - рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп-рд╕рдордп рдкрд░ рдЯреНрдпреВрдирд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡реНрдпрд╕реНрдд рд╣реИред
рдпрд╣рд╛рдВ рд╡рд┐рд╢реЗрд╖ рдореБрдЦрд░ рдореИрдХреНрд░реЛ [4] рдЖрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ рд╣реИ - рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдФрд░ рдПрдХ рдбрд░рд╛рд╡рдиреА рдЖрд╡рд╛рдЬрд╝ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, Xcode рдзреНрд╡рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╡рд╛рдЬрд╝ рдХреЛ рдбрд░рд╛рддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдзреНрдпрд╛рди рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢ рдЦреБрдж рдЖрдИрдбреАрдИ рдЖрдЙрдЯрдкреБрдЯ рдХрдВрд╕реЛрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрдВрд╕реЛрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЕрдХреНрд╕рд░ рд╕реНрдЯреЙрдк рдХреЗ рдХрд╛рд░рдг рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЪрд┐рддреНрд░рд╛ 1. рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╡реНрдпрд╡рдзрд╛рди
рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдмрд╕ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдФрд░ рдкреНрд░рднрд╛рд╡ рдХреЛ рдХрдо рдХрд░рдХреЗ рдЖрдВрдХрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рди рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрджреЗрд╢ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддреЗрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЗрд╕рдХреА рдкрд╣рдЪрд╛рди рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЛ рднреА рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓реЙрдЧрд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рдХреЗ рдореВрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рджреЗрдЦреЗрдВред
class Log { public:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд▓реЙрдЧ рд╡рд┐рд╡рд░рдг рдХреЗ рдЪрд╛рд░ рд╕реНрддрд░реЛрдВ (рдШреЛрд╖рдгрд╛ рдХреЗ рдХреНрд░рдо рдореЗрдВ) рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВ:
- рдХрд┐рд╕реА рд▓реЙрдЧ рдХрд╛ рдкреВрд░реНрдг рд╢рдЯрдбрд╛рдЙрди
- рдЖрдЙрдЯрдкреБрдЯ рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реИрдВ
- рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
- рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ
enum DebugLevel { DEBUG_LEVEL_DISABLED = 0, DEBUG_LEVEL_ERROR = 1, DEBUG_LEVEL_WARNING = 2, DEBUG_LEVEL_MESSAGE = 3, };
рддрджрдиреБрд╕рд╛рд░, рд╣рдо рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рддреАрди рдФрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рд╕реВрдЪрдирд╛рддреНрдордХ рд╕рдВрджреЗрд╢, рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рддреНрд░реБрдЯрд┐ред
enum MessageType { MESSAGE_INFO, MESSAGE_WARNING, MESSAGE_ERROR, };
рдирд┐рдореНрди рд╡рд┐рдзрд┐ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдирд┐рд░реНрдорд╛рдг рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд░рдЦрдиреЗ рд╕реЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрдорд╛рдг рдирд┐рд╖рд┐рджреНрдз рд╣реИред
static void createInstance();
рдЕрдВрддрд┐рдо рдЙрдкрд▓рдмреНрдз рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ рд▓реЙрдЧ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕реНрддрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИред рдмрд╛рдХреА рд╕рдм рдмрдВрдж рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЙрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ - рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕рд╛ рд╣реИред
void setDebugLevel(DebugLevel level); protected:
рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреНрд╖реЗрддреНрд░ рдХрд╛ рд╡рд╛рджрд╛ рдирд┐рдЬреА рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Log();
рдПрдХрдорд╛рддреНрд░ рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐ IDE рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдирд┐рд░реНрднрд░ рдЬрд╛рдирдХрд╛рд░реА рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИ
virtual void writeIDEDebugString(const std::string& message, MessageType type) = 0; private:
рдирд┐рдореНрди рддреАрди рд╡рд┐рдзрд┐рдпрд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд▓рд░реНрдЯ рдХреЛ рд╕реАрдзреЗ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░реЗрдВрдЧреАред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЧрд▓рддреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдХрдХреНрд╖рд╛ рдХреЗ рдПрдХ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЫрд┐рдкреЗ рд╣реБрдП рд╣реИрдВред
void writeMessage(const std::string& message); void writeWarning(const std::string& message); void writeError(const std::string& message);
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рд╡рд┐рдзрд┐ред рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рд▓реЗрдЦ рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рдХреЛрдИ рд╕реАрдзрд╛ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред
void appendToFile(const std::string& message);
рдЦреИрд░, рдЖрдкрдХреЛ рдбрд┐рдмрдЧ рд╕рдВрджреЗрд╢ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЖрдорддреМрд░ рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдореЗрдВ рдПрдХ рд╕рдордп рдЯрд┐рдХрдЯ рдФрд░ рд▓рд╛рдЗрди рдХреЗ рдорд╣рддреНрд╡ рдХреЗ рд╕реНрддрд░ рдХрд╛ рд╕рдВрдХреЗрдд рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
void writeMessage(const std::string& message, MessageType type);
рд╡рд░реНрдЧ рдбреЗрдЯрд╛ рд╕реЗ, рд╣рдореЗрдВ рд▓реЙрдЧ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рдЙрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕реНрддрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
DebugLevel mDebugLevel; static Log* sInstance; };
рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
рд╕рдВрджреЗрд╢ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рдмрд╕реЗ рдкреВрд░реНрдг рдорд╛рдирддреЗ рд╣реБрдП рдЦреБрдж рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
void Log::writeError(const std::string& message) { if (mDebugLevel >= DEBUG_LEVEL_ERROR) { writeMessage(getLogString(message, "error"), MESSAGE_ERROR); } #ifdef _DEBUG assert(0); #endif exit(EXIT_FAILURE); }
рддреЛ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рд╕реНрддрд░ рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдлрд┐рд░ рд░рд╛рдЗрдЯрдореИрд╕реЗрдЬ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрджреНрдзрддрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рдВрджреЗрд╢ рдФрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛
рддреНрд░реБрдЯрд┐: [рд╕рдВрджреЗрд╢]рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рднрд▓реЗ рд╣реА рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдЕрдХреНрд╖рдо рд╣реЛ, рдореБрдЦрд░ рдореИрдХреНрд░реЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрд╡реЗрджрди рд╕рдмрд░реВрдЯреАрди рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╢рд╛рдпрдж рд╣реА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рдПрдХ рддреНрд░реБрдЯрд┐ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдЬреЛ рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИред
рдЪреЗрддрд╛рд╡рдиреА рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЖрд╡реЗрджрди рдХреА рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдмрд┐рдирд╛ред рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдореБрдЦрд░ рд╡реНрдпрд╡рдзрд╛рди рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдмрджрд▓реЗ рдореЗрдВ, рд░рд╛рдЗрдЯрдореИрд╕реЗрдЬ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ
void Log::writeMessage(const std::string& message, MessageType type) { std::string text(message); std::replace(text.begin(), text.end(), '\n', ' '); appendToFile(text); #ifdef _DEBUG writeIDEDebugString(text, type); #endif }
рдЗрд╕рдХреА рднреВрдорд┐рдХрд╛ рд╕рдВрджреЗрд╢ рд╕реЗ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд▓реЙрдЧ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реЛ, рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдФрд░, рдпрджрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЛрдб рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдЖрдИрдбреАрдИ рдХрдВрд╕реЛрд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯред
рдбреАрдмрдЧ рдореЛрдб _DEBUG рдореИрдХреНрд░реЛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИред
рдЪрд┐рддреНрд░ 2. Xcode рдХреЗ рд▓рд┐рдП рдбреАрдмрдЧ рдореИрдХреНрд░реЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП, рд░рд╛рдЗрдЯ-рдХреНрд▓рд╛рд╕ рдПрдХ рд╕реЗ рд▓реА рдЧрдИ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд▓реЙрдЧ рдХреНрд▓рд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд░рд╛рдЗрдЯрдбреЗрдбрдмрдЧрд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрджреНрдзрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдеред рдореИрдВ рдХреБрдЫ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред
рд╡рд┐рдВрдбреЛрдЬ (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ)
void Log_Windows::writeIDEDebugString(const std::string& message, MessageType type) { OutputDebugStringA(message.c_str()); OutputDebugStringA("\n"); }
Android (рдЧреНрд░рд╣рдг)
void Log_Android :: writeIDEDEDugugString (const рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рд╕рдВрджреЗрд╢, MessageType рдкреНрд░рдХрд╛рд░)
{ switch(type){ case MESSAGE_INFO: __android_log_print(ANDROID_LOG_INFO, "", message.c_str()); break; case MESSAGE_WARNING: __android_log_print(ANDROID_LOG_WARN, "", message.c_str()); break; case MESSAGE_ERROR: __android_log_print(ANDROID_LOG_ERROR, "", message.c_str()); break; } }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдкрд╖реНрдЯрддрд╛ рдорд┐рд▓рддреА рд╣реИ: рд╡рд┐рднрд┐рдиреНрди рд░рдВрдЧреЛрдВ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛ рднрд╛рдЧрдиреЗ рдХреА рдмрд╣реБрдд рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрд┐рдирд╛ рдЬреЛрд░ рд▓рдЧрд╛рдП рднреАред
рдЪрд┐рддреНрд░рд╛ 3. рдЧреНрд░рд╣рдг рдореЗрдВ рдЯрд╛рдЗрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рдВрдЧ рд╕рдВрджреЗрд╢
MacOS рдФрд░ iOS (Xcode)
void Log_Mac::writeIDEDebugString(const std::string& message, MessageType type) { NSLog(@"%s", message.c_str()); }
рд╣рдордиреЗ рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛, рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдХреИрд╕реЗ рдареАрдХ рд╕реЗ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдордиреЗ рд╕рднреА рдирд┐рдХрд╛рд╕реА рдХреЗ рддрд░реАрдХреЗ рдмрдВрдж рдХрд░ рджрд┐рдП рд╣реИрдВред
рдкрд╣рд▓реЗ, рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВред C ++ рд╕реНрдЯреНрд░реАрдо рдЖрдЙрдЯрдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрд╕реА рддрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдЙрдирдХреЗ рдкрд╛рд╕ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрджреЗрд╢ рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
std::cout << std::uppercase << "test" << '\n';
рдпрд╣рд╛рдБ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд┐рд╢реНрд░рдг рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
Log::error<<"text"<<std::endl; Log::warning<<"text"<<std::endl; Log::message<<"text"<<std::endl;
рдпрд╛рдиреА рд╕рдВрджреЗрд╢ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕реНрдЯреНрд░реАрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реА рд╣реЛрдЧреАред рдмреЗрд╢рдХ, рд╕реНрдЯреИрдб :: рдЕрдкрд░рдХреЗрд╕ рдЬреИрд╕реА рдорд╛рдирдХ рд╕реНрдЯреНрд░реАрдо рдкреИрд░рд╛рдореАрдЯрд░ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рд╕реНрдЯреНрд░реАрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИред
class Streamer : public std::ostream { public: Streamer(MessageType messageType); ~Streamer(); private: class StringBuffer : public std::stringbuf { public: Buffer(MessageType messageType); ~Buffer(); virtual int sync(); private: MessageType mMessageType; }; };
рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╡рд╕реНрддреБ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдирд┐рд░реНрдорд╛рддрд╛ рдореИрд╕реЗрдЬ рдЯрд╛рдЗрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЙрдЯрдкреБрдЯ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╣реА рд╣рдореЗрдВ std :: ostream [5] рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдиреЗрд╕реНрдЯреЗрдб рдХреНрд▓рд╛рд╕ StringBuffer рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ std :: stringbuf [6] рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢ рдХреЗ рдЧрдарди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ
рд╕рд┐рдВрдХ рд╡рд┐рдзрд┐ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗред рдЖрдк рдмрдлрд░ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдлреНрд▓рд╢ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ
Log::message<<"text"; Log::message.flush();
рдпрд╛ рд╕рд┐рд░реНрдл
std :: endl рдХреЛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЬреЛрдбрд╝рдирд╛
Log::message<<"text"<<std::endl;
рдЖрдкрдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдлрд░ рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕рдВрдмрджреНрдз рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Log::Streamer::Streamer(Log::MessageType messageType) : std::ostream(new StringBuffer(messageType)) { }
рддрджрдиреБрд╕рд╛рд░, рд╡рд┐рдирд╛рд╢ рд╣реЛрдиреЗ рдкрд░, рдмрдлрд░ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
Log::Streamer::~Streamer() { delete rdbuf(); }
рдмрдлрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕рдВрджреЗрд╢ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ
Log::Streamer::StringBuffer:: StringBuffer(Log::MessageType messageType) : mMessageType(messageType) { }
рдЬрдм рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЗрд╕рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВ - рдпрд╣ рд╕рдВрджреЗрд╢ "рдЧрд╛рдпрдм" рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХреЗрдЧрд╛ рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдлреНрд▓рд╢ рдпрд╛ рдПрдВрдбрд▓ рдХреЙрд▓ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИред
Log::Streamer::Buffer::~Buffer() { pubsync(); }
рддрд╛рдХрд┐ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд▓реЙрдЧ рдХреНрд▓рд╛рд╕ рдХреЗ рдореБрдЦреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛ, рдЬреЛ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реИ, рд╣рдо рдЗрд╕реЗ рдЕрдВрджрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ
class Log { public: ... class Streamer : public std::ostream { ... }; static Streamer message; static Streamer warning; static Streamer error; ...
рд╕рдВрджреЗрд╢ рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдб рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╣реИрдВред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЙрдирдХреЗ рдкрд╛рд╕ рдЧрдпрд╛
Log::Streamer Log::message(Log::MESSAGE_INFO); Log::Streamer Log::warning(Log::MESSAGE_WARNING); Log::Streamer Log::error(Log::MESSAGE_ERROR);
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╕реНрдЯреНрд░реАрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдлрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
int Log::Streamer::StringBuffer::sync() { if (Log::sInstance == NULL) { return 0; } std::string text(str()); if (text.empty()) { return 0; } str(""); switch (mMessageType) { case MESSAGE_INFO: Log::sInstance->writeMessage(text); break; case MESSAGE_WARNING: Log::sInstance->writeWarning(text); break; case MESSAGE_ERROR: Log::sInstance->writeError(text); break; } return 0; }
рдиреЗрд╕реНрдЯреЗрдб рдХреНрд▓рд╛рд╕
рд▓реЙрдЧ рдХреЗ рд░реВрдк рдореЗрдВ :: рд╕реНрдЯреАрдорд░ :: рдмрдлрд╝рд░ рдХреА
рд▓реЙрдЧ рдХреЗ рдПрдХ рдирд┐рдЬреА (рдирд┐рдЬреА) рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрд╣реБрдБрдЪ рд╣реИред
рдХреЗрд╡рд▓ str () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ std :: stringbuf рд╡рд░реНрдЧ рдХреА рдПрдХ рдЕрдЬреАрдм рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЖрдкрдХреЛ рдмрдлрд░ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рджреЛрдиреЛрдВ рд░реВрдкреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдкрд╣рд▓рд╛, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдореЗрдВ рдмрдлрд░ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд┐рд▓рддреА рд╣реИ, рдФрд░ рдлрд┐рд░
str ("") рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ
рд╣рдо рдмрдлрд░ рдХреЛ рд╕рд╛рдл рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣реА рд╣реИ, рдЕрдм
рд╕реНрдЯреАрдорд░ рд╡рд░реНрдЧ
рд▓реЙрдЧ рдХрд╛ "рдЖрдзрд┐рдХрд╛рд░рд┐рдХ" рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрди рдЧрдпрд╛ рд╣реИред рд╕рдордЧреНрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "i (6) рдХреА рд╕реАрдорд╛ [1..5] рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП", рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ
Log::warning << "i (" << i << ") should be in range [" << I_MIN << ".." << I_MAX << "]" << std::endl;
рдпрд╣ рд▓рдЧрднрдЧ рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдЕрд╕реНрдкрд╖реНрдЯ "рдЧрд▓рдд i" рд╣реЛ рд░рд╣рд╛ рд╣реИ
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдлреА рд╕рд░рд▓ рдИрд╡реЗрдВрдЯ рд▓реЙрдЧрд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордпрдмрджреНрдз рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬрдм рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдордирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рд╕рд╛рдВрд╕ рд▓реЗрдиреЗ, рдпрд╛ рд╕реЛрдиреЗ рдХреЗ рд▓рд┐рдП) рдХрд╛рдлреА рдЗрд╕рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ред
[рез]
en.wikipedia.org/wiki/Multiple_dispatch[реи]
www.cplusplus.com/reference/cstdio/sprintf[рей]
www.cplusplus.com/reference/sstream/stringstream[рек]
www.cplusplus.com/reference/cassert/assert[рел]
www.cplusplus.com/reference/ostream/ostream[рем]
www.cplusplus.com/reference/sstream/stringbuf