<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://composer.telemidia.puc-rio.br/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://composer.telemidia.puc-rio.br/feed.php">
        <title> en:dev</title>
        <description></description>
        <link>http://composer.telemidia.puc-rio.br/</link>
        <image rdf:resource="http://composer.telemidia.puc-rio.br/lib/tpl/bootstrap3/images/favicon.ico" />
       <dc:date>2026-05-19T13:40:18-03:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/dev/code_style"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/dev/contributing"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/dev/project_file"/>
                <rdf:li rdf:resource="http://composer.telemidia.puc-rio.br/doku.php/en/dev/submitting_patches"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://composer.telemidia.puc-rio.br/lib/tpl/bootstrap3/images/favicon.ico">
        <title></title>
        <link>http://composer.telemidia.puc-rio.br/</link>
        <url>http://composer.telemidia.puc-rio.br/lib/tpl/bootstrap3/images/favicon.ico</url>
    </image>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/dev/code_style">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:17-03:00</dc:date>
        <title>C/C++ Code Style for NCL Composer</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/dev/code_style</link>
        <description>&lt;div class=&quot;notewarning&quot;&gt;This page is a draft!

&lt;/div&gt;
&lt;h3 class=&quot;sectionedit1&quot; id=&quot;cc_code_style_for_ncl_composer&quot;&gt;C/C++ Code Style for NCL Composer&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
As any project, keep code standard is important to improve the quality of the software, improve reusability and a software which is easier to maintain.
&lt;/p&gt;

&lt;p&gt;
The &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer Code style is similar to most of the C++ projects. So, you will easily navigate through the source code. Here, we will discuss some issues of our code style.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;class_template&quot;&gt;Class Template&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
The following code shows a template that should be followed when defining a class:
&lt;/p&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; composer &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; core &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; model &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/*!
 \brief Description of the class
 */&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; MyClass
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Class Content&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//end namespace&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
It is recommended to keep the final comment informing that line is finishing the namespace.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;C/C++ Code Style for NCL Composer&quot; [46-] --&gt;
&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/a/a627fd9a4ecb9077a3df07e425405b3f.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/dev/contributing">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:17-03:00</dc:date>
        <title>Contributing</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/dev/contributing</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;contributing&quot;&gt;Contributing&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer is an open source project, so we are always open to any kind of contribution.
&lt;/p&gt;

&lt;p&gt;
As well pointed by &lt;em&gt;Andy Lester&lt;/em&gt; in &lt;a href=&quot;http://blog.smartbear.com/programming/14-ways-to-contribute-to-open-source-without-being-a-programming-genius-or-a-rock-star/&quot; class=&quot;urlextern&quot; title=&quot;http://blog.smartbear.com/programming/14-ways-to-contribute-to-open-source-without-being-a-programming-genius-or-a-rock-star/&quot; rel=&quot;nofollow&quot;&gt;14 Ways to Contribute to Open Source without Being a Programming Genius or a Rock Star&lt;/a&gt; blog post, you do not need to be a Genius Programmer to contribute to any open source project (including &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer). So, if you want to contribute: &lt;em&gt;Do not hesitate!!!&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
If you are not a programmer, you can contribute to &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer, through:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/reporting_bugs&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:reporting_bugs&quot;&gt;Reporting BUGs&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/reporting_bugs&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:reporting_bugs&quot;&gt;Suggesting new features&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/contact&quot; class=&quot;wikilink1&quot; title=&quot;en:contact&quot;&gt;Helping us to write user manuals and tutorials&lt;/a&gt; (&lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/start#by_the_community&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:start&quot;&gt;see some examples&lt;/a&gt;).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/contact&quot; class=&quot;wikilink1&quot; title=&quot;en:contact&quot;&gt;Translating the user interface and documentation&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Promoting the project&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
If you are a programmer you can contribute with the things above, and also with &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer&amp;#039;s source code. See the following pages for more information:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://redmine.telemidia.puc-rio.br:8080/redmine/projects/composer3/roadmap&quot; class=&quot;urlextern&quot; title=&quot;http://redmine.telemidia.puc-rio.br:8080/redmine/projects/composer3/roadmap&quot; rel=&quot;nofollow&quot;&gt;Roadmap for the next versions&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_build_ncl_composer_from_source_code&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:tutorial:how_to_build_ncl_composer_from_source_code&quot;&gt;Building and Testing the NCL Composer on your system and report us&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/dev/code_style&quot; class=&quot;wikilink1&quot; title=&quot;en:dev:code_style&quot;&gt;Code Styles&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/dev/submitting_patches&quot; class=&quot;wikilink1&quot; title=&quot;en:dev:submitting_patches&quot;&gt;Submitting Patches&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
You can extend &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/docs/tutorial/how_to_create_a_plugin_to_ncl_composer_0.2.x&quot; class=&quot;wikilink1&quot; title=&quot;en:docs:tutorial:how_to_create_a_plugin_to_ncl_composer_0.2.x&quot;&gt;Developing your own plugin&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
If you have created (or are creating) a plug-in to &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer, let us know to include at the &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/plugins/start&quot; class=&quot;wikilink1&quot; title=&quot;en:plugins:start&quot;&gt;plug-ins page&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/8/8fdbdf4ec3607c04942427679efc63bb.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/dev/project_file">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:17-03:00</dc:date>
        <title>NCL Composer project file specification</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/dev/project_file</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ncl_composer_project_file_specification&quot;&gt;NCL Composer project file specification&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
In its current version (0.1.x) a project file in &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer is a unique file with extension &lt;em&gt;.cpr&lt;/em&gt;. This file is a text file, compressed through a ZIP algorithm.
&lt;/p&gt;

&lt;p&gt;
The file is composed of a set of sections. Each section delimiter is started with &lt;em&gt;#SECTION_NAME&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
The first section (the header of the file) is the &lt;em&gt;#COMPOSER_PROJECT&lt;/em&gt; section.
&lt;/p&gt;

&lt;p&gt;
The second section is the &lt;em&gt;#COMPOSER_MODEL&lt;/em&gt; section, that will contain a serialized version of the internal model of the &lt;abbr title=&quot;Nested Context Language&quot;&gt;NCL&lt;/abbr&gt; Composer.
&lt;/p&gt;

&lt;p&gt;
Following this, there will be N &lt;em&gt;#COMPOSER_PLUGIN_DATA&lt;/em&gt; sections. Each &lt;em&gt;#COMPOSER_PLUGIN_DATA&lt;/em&gt; will contain specific data of the plug-in.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#COMPOSER_PROJECT name=&amp;quot;project-example&amp;quot; version=&amp;quot;0.1&amp;quot;
#COMPOSER_MODEL
...
#END_COMPOSER_MODEL
#COMPOSER_PLUGIN_DATA &amp;quot;br.puc-rio.telemidia.textual&amp;quot;
..
#END_COMPOSER_PLUGIN_DATA
...&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT1 SECTION &quot;NCL Composer project file specification&quot; [1-884] --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;plug-in_api&quot;&gt;Plug-in API&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The IPlugin &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt; defines a signal that can be called when a plug-in wants to save some data. This way, when creating a plugin, developers can call the core to save its specific data through a code similar to:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  QByteArray data;
  ...
  // Fill data variable
  ...
  emit setPluginData(data); // call core to save the specific plug-in data.&lt;/pre&gt;

&lt;p&gt;
Moreover, when a project is closed, the core will call a specific slot from the plugin &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  bool saveSubsession();&lt;/pre&gt;

&lt;p&gt;
You need to re-implement this method if you want to save the specific plug-in data when the project associated to that plug-in is closed.
&lt;/p&gt;

&lt;p&gt;
I typical implementation of this method is:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  bool MyPlugin::saveSubsession()
  {
    QByteArray data;
    ...
    // Fill specific plug-in data in the data variable
    ...
    emit setPluginData(data); // call core to save the specific plug-in data.
  }&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;Plug-in API&quot; [885-] --&gt;
&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/4/4174f4d3e37e80474425b017e9200f06.xhtml used --&gt;
</description>
    </item>
    <item rdf:about="http://composer.telemidia.puc-rio.br/doku.php/en/dev/submitting_patches">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-03T16:31:17-03:00</dc:date>
        <title>Submitting a patch to NCL Composer</title>
        <link>http://composer.telemidia.puc-rio.br/doku.php/en/dev/submitting_patches</link>
        <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;submitting_a_patch_to_ncl_composer&quot;&gt;Submitting a patch to NCL Composer&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
You can submit a patch directly to our Mailing List (go to &lt;a href=&quot;http://composer.telemidia.puc-rio.br/doku.php/en/contact&quot; class=&quot;wikilink1&quot; title=&quot;en:contact&quot;&gt;contact page&lt;/a&gt; for more information). 
&lt;/p&gt;

&lt;p&gt;
The easiest way to create a patch is using the git features. We recommend you create a new branch and hack whatever you want in this local branch. This way, you can commit your changes locally and even keep track of your local changes easily.
&lt;/p&gt;

&lt;p&gt;
Let&amp;#039;s say you want to changes some code in the composer-core project. First you need to clone the repository and then create your own local branch:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ git clone git://git.telemidia.puc-rio.br/composer-core.git
$ cd composer-core
$ git checkout -b myfix_to_composer&lt;/pre&gt;

&lt;p&gt;
Now, you can change whatever you want and commit your changes to your &lt;em&gt;myfix_to_composer&lt;/em&gt; local branch.
&lt;/p&gt;

&lt;p&gt;
When you are done, you can create a new patch with the following command:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ git format-patch master --stdout &amp;gt; mypatch.patch&lt;/pre&gt;

&lt;p&gt;
Now, send us this &lt;em&gt;mypatch.patch&lt;/em&gt; file.
&lt;/p&gt;

&lt;p&gt;
You can also, send this patch directly from git, using &lt;em&gt;git send-email&lt;/em&gt; command:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ git send-email --to=composer-dev@telemidia.puc-rio.br mypatch.patch&lt;/pre&gt;

&lt;/div&gt;

&lt;!-- cachefile /var/www/composer.telemidia.puc-rio.br/public_html/data/cache/3/3c701a277b596559462d819357fbff36.xhtml used --&gt;
</description>
    </item>
</rdf:RDF>
