# Application Structure

##### <a class="anchor" id="bkmrk--3"></a>Introduction

This section gives a rough information of how this application is set up and where to find what.

##### <a class="anchor" id="bkmrk--4"></a>Main folder structure

The main folder shown here is &lt;cgi-studio-root&gt;/cgi\_studio\_player/src.  
It contains the C++ core application, the C#-CGIPanel for a communication UI and sample behaviors.  
Additionally a command exists to generate files out of associated xhcdl files. These files are used for data binding and message generation.

<div drawio-diagram="7781"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-01/drawing-4-1736921585.png" alt=""/></div>

##### <a class="anchor" id="bkmrk--6"></a>The Player Application

The core application has folders for the logical main parts of the application:

<div drawio-diagram="7782"><img src="https://doc316en.candera.eu/uploads/images/drawio/2025-01/drawing-4-1736921606.png" alt=""/></div>

<div class="contents" id="bkmrk-appplatform%3A-contain"><div class="textblock">- **AppPlatform**: contains target/OS specific content. It defines the default input handler, asset type and location and can influence the display initialization.
- **Features**: contains all the Player specific features. They are not required for a running courier application but define the Player application.
- **Xhcdl**: contains the definitions for messages and databinding. With the generate.cmd in the main folder, these description files will be compiled into c++ header and source files.
- **Generated**: contains the generated files of the xhcdl files.
- **Logging**: contains content regarding logging. It is directly linked to the logging feature.
- **Sample Components**: contains sample implementations of different CGIStudio related features and samples.
- **Main folder**: represents the blank application. The Player related content has been reduced so that a generic courier application workflow can be derived.

</div></div>---