#include <iostream>

namespace cocos2d {
	
class TMXTilesetInfo {
public:
	std::string _sourceImage = "Test Image Name";
};

class TMXLayer {
	
 TMXTilesetInfo* _tileSet = new TMXTilesetInfo();
	
public:
	TMXTilesetInfo* getTileSet() const { return _tileSet; }
};

}

void loadCollisionsDescription(std::string descriptionFileName) {
	std::cout << descriptionFileName;
}

class PhysicsProcessorPrivate {
	cocos2d::TMXLayer *m_terrainLayer;
public:
	void setTerrainLayer(cocos2d::TMXLayer *const layer);
};


void PhysicsProcessorPrivate::setTerrainLayer(cocos2d::TMXLayer *const layer) {
    m_terrainLayer = layer;
   
    if (layer) {
        const auto tileSet = layer->getTileSet();
       
        if (tileSet) {
            auto sourceImageName = tileSet->_sourceImage;
   
            if (!sourceImageName.empty()) {
                auto descriptionFileName = sourceImageName + ".collisions.xml";
                loadCollisionsDescription(descriptionFileName);
            }
        }
    }
}
 
/** Далее - cocos2d::TMXLayer::getTileSet() **/
//TMXTilesetInfo* getTileSet() const { return _tileSet; }




int main() {
	// your code goes here
	PhysicsProcessorPrivate pp;
	cocos2d::TMXLayer l;
	
	pp.setTerrainLayer(&l);
	
	return 0;
}