{"name":"inheritsFrom","title":"inheritsFrom","type":"command","url":"https://community.bistudio.com/wiki/inheritsFrom","revid":349770,"updated":"2023-11-20T22:10:08Z","groups":["Config"],"status":"ok","games":{"arma1":"1.00","arma2":"1.00","arma2oa":"1.50","tkoh":"1.00","arma3":"0.50"},"since":"arma1 1.00","arma3_since":"0.50","description":"Returns base entry of config entry.","syntaxes":[{"syntax":"inheritsFrom config","params":[{"name":"config","type":"Config","type_expr":"Config"}],"returns":{"type":"Config","type_expr":"Config"},"form":"unary","right":{"text":"config"}}],"examples":[{"code":["_base = inheritsFrom (configFile >> \"CfgVehicles\" >> \"Car\"); // returns \"LandVehicle\" Config entry"]},{"text":"Print parent tree of given config class:\n\n```sqf\nfnc_printParents =\n{\n    disableSerialization;\n    if (!isClass _this) exitWith { hint \"Argument is not a config Class\" };\n\n    private _parents = [];\n\n    while { !isNull _this } do\n    {\n        _parents pushBack configName _this;\n        _this = inheritsFrom _this;\n    };\n\n    reverse _parents;\n\n    private _tv = findDisplay 46 createDisplay \"RscDisplayEmpty\" ctrlCreate [\"RscTree\", -1];\n    _tv ctrlSetPosition [0,0,1,1];\n    _tv ctrlSetBackgroundColor [0,0,0,0.5];\n    _tv ctrlCommit 0;\n\n    private _path = [];\n    {\n        _tv tvAdd [_path, _x];\n        _path pushBack 0;\n    }\n    forEach _parents;\n\n    tvExpandAll _tv;\n};\n\n// Example:\n(configFile >> \"CfgVehicles\" >> typeOf player) call fnc_printParents;\n```","code":["fnc_printParents =\n{\n\tdisableSerialization;\n\tif (!isClass _this) exitWith { hint \"Argument is not a config Class\" };\n\n\tprivate _parents = [];\n\n\twhile { !isNull _this } do\n\t{\n\t\t_parents pushBack configName _this;\n\t\t_this = inheritsFrom _this;\n\t};\n\n\treverse _parents;\n\n\tprivate _tv = findDisplay 46 createDisplay \"RscDisplayEmpty\" ctrlCreate [\"RscTree\", -1];\n\t_tv ctrlSetPosition [0,0,1,1];\n\t_tv ctrlSetBackgroundColor [0,0,0,0.5];\n\t_tv ctrlCommit 0;\n\n\tprivate _path = [];\n\t{\n\t\t_tv tvAdd [_path, _x];\n\t\t_path pushBack 0;\n\t}\n\tforEach _parents;\n\n\ttvExpandAll _tv;\n};\n\n// Example:\n(configFile >> \"CfgVehicles\" >> typeOf player) call fnc_printParents;"]}],"see_also":["configFile","a / b","configName","count","getArray","getText","getNumber","isArray","isClass","isNumber","isText","select","configHierarchy","isKindOf"],"notes":[{"user":"ffur2007slx2_5","date":"2014-04-02T17:11:00Z","text":"(A3 1.14) Use BIS_fnc_returnParents if a parents' collection of the given entry is needed.\n\n```sqf\n[configFile >> \"CfgVehicles\" >> \"Land_Atm_02_F\", true] call BIS_fnc_returnParents;\n// return: [\"Land_Atm_02_F\", \"House_Small_F\", \"House_F\", \"House\", \"HouseBase\", \"NonStrategic\", \"Building\", \"Static\", \"All\"]\n```\n\nNot all entries have parent, and please differ parents from path.\n\n```sqf\ninheritsFrom (configFile >> \"CfgUIColors\" >> \"IGUI\" >> \"Presets\" >> \"PresetA1\" >> \"Variables\");\n// return: Nothing\n```"}]}