option_list
read_data_cfg
ํจ์ ์ด๋ฆ: read_data_cfg
์ ๋ ฅ:
filename (char *): ์ฝ์ ํ์ผ์ ์ด๋ฆ
๋์:
์ง์ ๋ ํ์ผ์์ ๋ฐ์ดํฐ ๊ตฌ์ฑ ํ์ผ์ ์ฝ์ด๋ค์ด๊ณ ๊ฐ ์ค์ ์ต์ ์ ๊ตฌ๋ฌธ ๋ถ์ํ์ฌ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๋ฐํํ๋ค.
์ค๋ช :
์ง์ ๋ ํ์ผ์ ์ด๊ณ ํ์ผ์ ์ฑ๊ณต์ ์ผ๋ก ์ด์ง ๋ชปํ ๊ฒฝ์ฐ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ผ์์ ํ ์ค์ฉ ์ฝ์ผ๋ฉฐ ๊ฐ ์ค์ ์ฒซ ๋ฌธ์๋ฅผ ํ์ธํ์ฌ ์ต์ ์ ๊ตฌ๋ฌธ ๋ถ์ํ๋ค.
์ฝ์ ์ต์ ์ ์ต์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๊ณ ์ด๋ฅผ ๋ฐํํ๋ค.
get_metadata
ํจ์ ์ด๋ฆ: get_metadata
์ ๋ ฅ:
char *file (๋ฉํ๋ฐ์ดํฐ ํ์ผ ์ด๋ฆ)
๋์:
์ง์ ๋ ๋ฉํ๋ฐ์ดํฐ ํ์ผ์ ์ฝ๊ณ , ์ด๋ฆ ๋๋ ๋ ์ด๋ธ ๋ชฉ๋ก์ ์ฐพ์์ ๊ฐ์ ธ์์ metadata ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฐํํจ.
์ค๋ช :
ํจ์๋ metadata ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฐํํ๋ฉฐ, ์ด ๊ตฌ์กฐ์ฒด๋ ํด๋์ค ์์ ๋ ์ด๋ธ ์ด๋ฆ์ ์ ์ฅํจ.
ํจ์๋ ์ง์ ๋ ๋ฉํ๋ฐ์ดํฐ ํ์ผ์ ์ฝ์ด๋ค์ด๊ณ , "names" ๋๋ "labels" ํ๋์์ ๋ ์ด๋ธ ์ด๋ฆ์ ์ฐพ์.
๋ ์ด๋ธ ์ด๋ฆ์ ์ผํ(,)๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋๋ฉฐ, get_labels() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์คํธ๋ก ๋ณํํจ.
ํจ์๋ "classes" ํ๋์์ ํด๋์ค ์๋ฅผ ์ฐพ์.
ํจ์๋ ๋ฉํ๋ฐ์ดํฐ ํ์ผ์์ ์ฝ์ ๋ชจ๋ ํ๋๋ฅผ ํด์ ํจ.
read_option
ํจ์ ์ด๋ฆ: read_option
์ ๋ ฅ:
char ํฌ์ธํฐ s (์ค์ ํ์ผ์์ ์ฝ์ ํ ์ค์ ๋ฌธ์์ด)
list ํฌ์ธํฐ options (์ค์ ๊ฐ์ ์ ์ฅํ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ)
๋์:
์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋ฌธ์์ด s๋ฅผ key-value ์์ผ๋ก ๋ถ๋ฆฌํ๊ณ , key์ value๋ฅผ options ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค.
์ค๋ช :
s ๋ฌธ์์ด์์ '=' ๋ฌธ์๋ฅผ ์ฐพ์ ๊ทธ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก key์ value๋ฅผ ๊ตฌ๋ถํ๋ค.
key์ value๋ฅผ options ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค.
์ค์ ํ์ผ์์ ํ ์ค์ ์๋ชป ์ฝ๊ฑฐ๋ '=' ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ 0์ ๋ฐํํ์ฌ ์ค๋ฅ๋ฅผ ๋ํ๋ธ๋ค.
option_insert
ํจ์ ์ด๋ฆ: option_insert
์ ๋ ฅ:
l: option_insert๋ฅผ ์ํํ list ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ
key: ์ฝ์ ํ key ๋ฌธ์์ด ํฌ์ธํฐ
val: ์ฝ์ ํ value ๋ฌธ์์ด ํฌ์ธํฐ
๋์:
์ฃผ์ด์ง key์ val์ ์๋ก์ด kvp ๊ตฌ์กฐ์ฒด์ ์ ์ฅํ๊ณ , used๋ 0์ผ๋ก ์ด๊ธฐํํ ๋ค, list l์ ์๋ก์ด kvp ๊ตฌ์กฐ์ฒด๋ฅผ ์ฝ์ ํ๋ค.
์ค๋ช :
option_insert ํจ์๋ key์ value๋ฅผ ๊ฐ๋ ์๋ก์ด kvp ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํ์ฌ, ์ ๋ ฅ๋ฐ์ list l์ ์ฝ์ ํ๋ ํจ์์ด๋ค.
kvp ๊ตฌ์กฐ์ฒด๋ key์ val, ๊ทธ๋ฆฌ๊ณ ์ด kvp๊ฐ ์ฌ์ฉ๋์๋์ง๋ฅผ ๋ํ๋ด๋ used ํ๋๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
option_insert ํจ์๋ ์ฃผ์ด์ง key์ val๋ก ์๋ก์ด kvp ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํ๊ณ , used๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ ๋ค, ์ด๋ฅผ list l์ ์ฝ์ ํ๋ค.
option_unused
ํจ์ ์ด๋ฆ: option_unused
์ ๋ ฅ:
list ํฌ์ธํฐ l
๋์:
l ๋ฆฌ์คํธ์ ์๋ ๋ชจ๋ kvp(key-value pair)๋ค ์ค์ ์ฌ์ฉ๋์ง ์์ kvp๋ค์ ์ฐพ์์ stderr๋ก ์ถ๋ ฅํ๋ค.
์ค๋ช :
์ด ํจ์๋ list l์ ์๋ kvp๋ค ์ค์ ์ฌ์ฉ๋์ง ์์ kvp๋ค์ ์ฐพ์์ ์ถ๋ ฅํ๋ ํจ์์ด๋ค.
l์ linked list ๊ตฌ์กฐ์ฒด์ ํฌ์ธํฐ์ด๋ค.
kvp ๊ตฌ์กฐ์ฒด๋ key-value pair๋ฅผ ๋ํ๋ด๋ ๊ตฌ์กฐ์ฒด๋ก key์ val๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
n์ linked list์์ ํ์ฌ ๊ฒ์ฌ ์ค์ธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ด๋ค.
while๋ฌธ์ linked list์ ๋ชจ๋ ๋ ธ๋๋ฅผ ๊ฒ์ฌํ๋ค.
p๋ ํ์ฌ ๋ ธ๋์ kvp๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ด๋ค.
๋ง์ฝ ํ์ฌ kvp๊ฐ ์ฌ์ฉ๋์ง ์์์ผ๋ฉด, ํด๋น kvp์ key์ val์ stderr๋ก ์ถ๋ ฅํ๋ค.
n์ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ก ์ ๋ฐ์ดํธ๋๋ค.
option_find
ํจ์ ์ด๋ฆ: option_find
์ ๋ ฅ:
list ํฌ์ธํฐ l
char ํฌ์ธํฐ key
๋์:
์ฃผ์ด์ง key๋ก list l์์ kvp ๊ตฌ์กฐ์ฒด์ key์ ๋น๊ตํ์ฌ ์ผ์นํ๋ key๋ฅผ ์ฐพ๊ณ ํด๋นํ๋ kvp ๊ตฌ์กฐ์ฒด์ val ํฌ์ธํฐ๋ฅผ ๋ฐํํ๊ณ , ์ฌ์ฉ๋ kvp ๊ตฌ์กฐ์ฒด์ used ๊ฐ์ 1๋ก ์ค์ ํ๋ค.
์ค๋ช :
option_find ํจ์๋ ์ฃผ์ด์ง key์ ํด๋นํ๋ ๊ฐ(val)์ ์ฐพ๋ ํจ์๋ก, ์ด๋ฅผ ์ํด key-value pair(kvp) ๊ตฌ์กฐ์ฒด๋ฅผ ํ์ฉํ๋ค.
l์ kvp ๊ตฌ์กฐ์ฒด๋ฅผ ๋ชจ์๋ list๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ด๋ฉฐ, key๋ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ key๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ด๋ค.
๋ฐํ๊ฐ์ ์ฐพ์ ๊ฐ(val)์ ํฌ์ธํฐ์ด๋ฉฐ, ํด๋นํ๋ key๊ฐ ์์ ๊ฒฝ์ฐ 0์ ๋ฐํํ๋ค.
option_find_str
ํจ์ ์ด๋ฆ: option_find_str
์ ๋ ฅ:
list *l: ์ต์ ๋ฆฌ์คํธ
char *key: ๊ฒ์ํ ์ต์ ํค
char *def: ์ต์ ์ด ์์ ๊ฒฝ์ฐ ๋ฐํํ ๊ธฐ๋ณธ๊ฐ
๋์:
์ฃผ์ด์ง ๋ฆฌ์คํธ์์ ์ฃผ์ด์ง ํค๋ฅผ ๊ฒ์ํ๊ณ ํด๋นํ๋ ๊ฐ์ด ์๋ค๋ฉด ๋ฐํํ๋ค.
๊ฐ์ด ์๋ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ๊ฐ(def)์ ๋ฐํํ๊ณ ํด๋นํ๋ ํค์ ๊ธฐ๋ณธ๊ฐ์ ์๋ฌ ๋ฉ์์ง๋ก ์ถ๋ ฅํ๋ค.
์ค๋ช :
์ด ํจ์๋ ์ฃผ์ด์ง ๋ฆฌ์คํธ์์ ํน์ ์ต์ ์ ๊ฐ์ ๊ฒ์ํ๋ ํจ์์ด๋ค.
๋ง์ฝ ํด๋นํ๋ ์ต์ ์ ๊ฐ์ด ์๋ค๋ฉด ๋ฌธ์์ด ํํ๋ก ๋ฐํํ๋ค.
์ต์ ์ด ์๋ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ๊ฐ(def)์ ๋ฐํํ๊ณ ํด๋นํ๋ ํค์ ๊ธฐ๋ณธ๊ฐ์ ์๋ฌ ๋ฉ์์ง๋ก ์ถ๋ ฅํ๋ค.
์ด ํจ์๋ YOLO์ ๊ฐ์ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์์ ์ฌ์ฉ๋๋ ์ต์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉ๋๋ค.
option_find_int
ํจ์ ์ด๋ฆ: option_find_int
์ ๋ ฅ:
list *l: ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํฌ์ธํฐ
char *key: ์ฐพ์ผ๋ ค๋ ์ต์ ํค ๋ฌธ์์ด ํฌ์ธํฐ
int def: ๊ธฐ๋ณธ๊ฐ
๋์:
์ ๋ ฅ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ์ฃผ์ด์ง ์ต์ ํค๋ฅผ ์ฐพ์ ํด๋น ๊ฐ์ ์ ์ํ์ ๋ฐํํ๋ค.
ํด๋น ์ต์ ํค๊ฐ ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋ฐํํ๊ณ ํ์ค ์ค๋ฅ ์ถ๋ ฅ์ ํด๋น ์ต์ ํค์ ๊ธฐ๋ณธ๊ฐ์ ์ถ๋ ฅํ๋ค.
์ค๋ช :
์ ๋ ฅ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ต์ ํค์ ๊ฐ์ ์์ ์ ์ฅํ๊ณ ์๋ค.
option_find ํจ์๋ฅผ ์ด์ฉํด ์ฃผ์ด์ง ์ต์ ํค์ ํด๋นํ๋ ๊ฐ ๋ฌธ์์ด ํฌ์ธํฐ๋ฅผ ์ฐพ๋๋ค.
์ฐพ์ ๋ฌธ์์ด ํฌ์ธํฐ๋ฅผ atoi ํจ์๋ฅผ ์ด์ฉํด ์ ์ํ์ผ๋ก ๋ณํํ๊ณ ๋ฐํํ๋ค.
ํด๋น ์ต์ ํค๊ฐ ์์ ๊ฒฝ์ฐ ํ์ค ์ค๋ฅ ์ถ๋ ฅ์ ํด๋น ์ต์ ํค์ ๊ธฐ๋ณธ๊ฐ์ ์ถ๋ ฅํ๊ณ ๊ธฐ๋ณธ๊ฐ์ ๋ฐํํ๋ค.
option_find_int_quiet
ํจ์ ์ด๋ฆ: option_find_int_quiet
์ ๋ ฅ:
list *l: ์ค์ ํ์ผ์์ ์ฝ์ด์จ ์ค์ ๋ค์ด ์ ์ฅ๋ list ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ
char *key: ์ฝ์ด์ฌ ์ค์ ์ ์ด๋ฆ
int def: ์ค์ ํ์ผ์์ ํด๋น key์ ๋ํ ๊ฐ์ ์ฐพ์ง ๋ชปํ์ ๊ฒฝ์ฐ ์ฌ์ฉํ ๊ธฐ๋ณธ๊ฐ
๋์:
์ ๋ ฅ์ผ๋ก ๋ฐ์ key์ ํด๋นํ๋ ๊ฐ์ ์ค์ ํ์ผ์์ ์ฐพ์ต๋๋ค.
ํด๋น ๊ฐ์ด ์กด์ฌํ ๊ฒฝ์ฐ int ํํ๋ก ๋ณํํ์ฌ ๋ฐํํฉ๋๋ค.
ํด๋น ๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ def๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ถ๋ ฅ์ ํ์ง ์์ต๋๋ค.
์ค๋ช :
์ด ํจ์๋ ์ค์ ํ์ผ์์ int ํํ์ ๊ฐ์ ์ฝ์ด์ค๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์ ๋ ฅ์ผ๋ก ๋ฐ์ ์ค์ ํ์ผ(list ๊ตฌ์กฐ์ฒด)์์ key์ ํด๋นํ๋ ๊ฐ์ ์ฐพ์ต๋๋ค.
์ฐพ์ ๊ฐ์ atoi ํจ์๋ฅผ ์ด์ฉํ์ฌ int ํํ๋ก ๋ณํํฉ๋๋ค.
๋ง์ฝ key์ ํด๋นํ๋ ๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ def๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ํจ์๋ ์ค์ ํ์ผ์์ ์ฝ์ด์จ int ๊ฐ์ ๋ฐํํฉ๋๋ค.
๋ง์ฝ ์ค์ ํ์ผ์์ ํด๋น key์ ๋ํ ๊ฐ์ ์ฐพ์ง ๋ชปํ์ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ๊ฐ def๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ํจ์๋ ์ถ๋ ฅ์ ํ์ง ์์ต๋๋ค.
option_find_float_quiet
ํจ์ ์ด๋ฆ: option_find_float_quiet
์ ๋ ฅ:
list *l: ์ค์ ํ์ผ์์ ์ฝ์ด์จ ์ค์ ๋ค์ด ์ ์ฅ๋ list ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ
char *key: ์ฝ์ด์ฌ ์ค์ ์ ์ด๋ฆ
float def: ์ค์ ํ์ผ์์ ํด๋น key์ ๋ํ ๊ฐ์ ์ฐพ์ง ๋ชปํ์ ๊ฒฝ์ฐ ์ฌ์ฉํ ๊ธฐ๋ณธ๊ฐ
๋์:
์ ๋ ฅ์ผ๋ก ๋ฐ์ key์ ํด๋นํ๋ ๊ฐ์ ์ค์ ํ์ผ์์ ์ฐพ์ต๋๋ค.
ํด๋น ๊ฐ์ด ์กด์ฌํ ๊ฒฝ์ฐ float ํํ๋ก ๋ณํํ์ฌ ๋ฐํํฉ๋๋ค.
ํด๋น ๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ def๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ถ๋ ฅ์ ํ์ง ์์ต๋๋ค.
์ค๋ช :
์ด ํจ์๋ ์ค์ ํ์ผ์์ float ํํ์ ๊ฐ์ ์ฝ์ด์ค๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์ ๋ ฅ์ผ๋ก ๋ฐ์ ์ค์ ํ์ผ(list ๊ตฌ์กฐ์ฒด)์์ key์ ํด๋นํ๋ ๊ฐ์ ์ฐพ์ต๋๋ค.
์ฐพ์ ๊ฐ์ atof ํจ์๋ฅผ ์ด์ฉํ์ฌ float ํํ๋ก ๋ณํํฉ๋๋ค.
๋ง์ฝ key์ ํด๋นํ๋ ๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ def๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ํจ์๋ ์ค์ ํ์ผ์์ ์ฝ์ด์จ float ๊ฐ์ ๋ฐํํฉ๋๋ค.
๋ง์ฝ ์ค์ ํ์ผ์์ ํด๋น key์ ๋ํ ๊ฐ์ ์ฐพ์ง ๋ชปํ์ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ๊ฐ def๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ํจ์๋ ์ถ๋ ฅ์ ํ์ง ์์ต๋๋ค.
option_find_float
ํจ์ ์ด๋ฆ: option_find_float
์ ๋ ฅ:
list *l: ์ค์ ํ์ผ์์ ์ฝ์ด์จ ์ค์ ๋ค์ด ์ ์ฅ๋ list ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ
char *key: ์ฝ์ด์ฌ ์ค์ ์ ์ด๋ฆ
float def: ์ค์ ํ์ผ์์ ํด๋น key์ ๋ํ ๊ฐ์ ์ฐพ์ง ๋ชปํ์ ๊ฒฝ์ฐ ์ฌ์ฉํ ๊ธฐ๋ณธ๊ฐ
๋์:
์ ๋ ฅ์ผ๋ก ๋ฐ์ key์ ํด๋นํ๋ ๊ฐ์ ์ค์ ํ์ผ์์ ์ฐพ์ต๋๋ค.
ํด๋น ๊ฐ์ด ์กด์ฌํ ๊ฒฝ์ฐ float ํํ๋ก ๋ณํํ์ฌ ๋ฐํํฉ๋๋ค.
ํด๋น ๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ def๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ค๋ช :
์ด ํจ์๋ ์ค์ ํ์ผ์์ float ํํ์ ๊ฐ์ ์ฝ์ด์ค๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์ ๋ ฅ์ผ๋ก ๋ฐ์ ์ค์ ํ์ผ(list ๊ตฌ์กฐ์ฒด)์์ key์ ํด๋นํ๋ ๊ฐ์ ์ฐพ์ต๋๋ค.
์ฐพ์ ๊ฐ์ atof ํจ์๋ฅผ ์ด์ฉํ์ฌ float ํํ๋ก ๋ณํํฉ๋๋ค.
๋ง์ฝ key์ ํด๋นํ๋ ๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ def๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ํจ์๋ ์ค์ ํ์ผ์์ ์ฝ์ด์จ float ๊ฐ์ ๋ฐํํฉ๋๋ค.
๋ง์ฝ ์ค์ ํ์ผ์์ ํด๋น key์ ๋ํ ๊ฐ์ ์ฐพ์ง ๋ชปํ์ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ๊ฐ def๋ฅผ ์ฌ์ฉํ๊ณ ์ฌ์ฉํ ๊ฐ์ stderr์ ์ถ๋ ฅํฉ๋๋ค.
Last updated
Was this helpful?