-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcoding-convention.html
executable file
·263 lines (226 loc) · 10.4 KB
/
coding-convention.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
<!DOCTYPE html>
<html lang="en">
<head>
<base href=".">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Coding Convention</title>
<link rel="stylesheet" href="assets/css/dark-frontend.css" type="text/css" title="dark">
<link rel="alternate stylesheet" href="assets/css/light-frontend.css" type="text/css" title="light">
<link rel="stylesheet" href="assets/css/bootstrap-toc.min.css" type="text/css">
<link rel="stylesheet" href="assets/css/jquery.mCustomScrollbar.min.css">
<link rel="stylesheet" href="assets/js/search/enable_search.css" type="text/css">
<link rel="stylesheet" href="assets/css/extra_frontend.css" type="text/css">
<link rel="stylesheet" href="assets/css/prism-tomorrow.css" type="text/css" title="dark">
<link rel="alternate stylesheet" href="assets/css/prism.css" type="text/css" title="light">
<script src="assets/js/mustache.min.js"></script>
<script src="assets/js/jquery.js"></script>
<script src="assets/js/bootstrap.js"></script>
<script src="assets/js/scrollspy.js"></script>
<script src="assets/js/typeahead.jquery.min.js"></script>
<script src="assets/js/search.js"></script>
<script src="assets/js/compare-versions.js"></script>
<script src="assets/js/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="assets/js/bootstrap-toc.min.js"></script>
<script src="assets/js/jquery.touchSwipe.min.js"></script>
<script src="assets/js/anchor.min.js"></script>
<script src="assets/js/tag_filtering.js"></script>
<script src="assets/js/language_switching.js"></script>
<script src="assets/js/styleswitcher.js"></script>
<script src="assets/js/lines_around_headings.js"></script>
<script src="assets/js/prism-core.js"></script>
<script src="assets/js/prism-autoloader.js"></script>
<script src="assets/js/prism_autoloader_path_override.js"></script>
<script src="assets/js/trie.js"></script>
<link rel="icon" type="image/png" href="assets/images/nnstreamer_logo.png">
</head>
<body class="no-script
">
<script>
$('body').removeClass('no-script');
</script>
<nav class="navbar navbar-fixed-top navbar-default" id="topnav">
<div class="container-fluid">
<div class="navbar-right">
<a id="toc-toggle">
<span class="glyphicon glyphicon-menu-right"></span>
<span class="glyphicon glyphicon-menu-left"></span>
</a>
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-wrapper" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span title="light mode switch" class="glyphicon glyphicon-sunglasses pull-right" id="lightmode-icon"></span>
<form class="navbar-form pull-right" id="navbar-search-form">
<div class="form-group has-feedback">
<input type="text" class="form-control input-sm" name="search" id="sidenav-lookup-field" placeholder="search" disabled>
<span class="glyphicon glyphicon-search form-control-feedback" id="search-mgn-glass"></span>
</div>
</form>
</div>
<div class="navbar-header">
<a id="sidenav-toggle">
<span class="glyphicon glyphicon-menu-right"></span>
<span class="glyphicon glyphicon-menu-left"></span>
</a>
<a id="home-link" href="index.html" class="hotdoc-navbar-brand">
<img src="assets/images/nnstreamer_logo.png" alt="Home">
</a>
</div>
<div class="navbar-collapse collapse" id="navbar-wrapper">
<ul class="nav navbar-nav" id="menu">
<li class="dropdown">
<a class="dropdown-toggle" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
API References<span class="caret"></span>
</a>
<ul class="dropdown-menu" id="modules-menu">
<li>
<a href="doc-index.html">NNStreamer doc</a>
</li>
<li>
<a href="gst/nnstreamer/README.html">NNStreamer Elements</a>
</li>
<li>
<a href="nnstreamer-example/index.html">NNStreamer Examples</a>
</li>
<li>
<a href="API-reference.html">API reference</a>
</li>
</ul>
</li>
<li>
<a href="doc-index.html">Documents</a>
</li>
<li>
<a href="gst/nnstreamer/README.html">Elements</a>
</li>
<li>
<a href="tutorials.html">Tutorials</a>
</li>
<li>
<a href="API-reference.html">API reference</a>
</li>
</ul>
<div class="hidden-xs hidden-sm navbar-text navbar-center">
</div>
</div>
</div>
</nav>
<main>
<div data-extension="core" data-hotdoc-in-toplevel="True" data-hotdoc-project="NNStreamer" data-hotdoc-ref="coding-convention.html" class="page_container" id="page-wrapper">
<script src="assets/js/utils.js"></script>
<div class="panel panel-collapse oc-collapsed" id="sidenav" data-hotdoc-role="navigation">
<script src="assets/js/full-width.js"></script>
<div id="sitenav-wrapper">
<iframe src="hotdoc-sitemap.html" id="sitenav-frame"></iframe>
</div>
</div>
<div id="body">
<div id="main">
<div id="page-description" data-hotdoc-role="main">
<h1 id="coding-convention">Coding Convention</h1>
<p>In general, NNStreamer follows <a href="https://gstreamer.freedesktop.org/documentation/frequently-asked-questions/developing.html#what-is-the-coding-style-for-gstreamer-code">The Coding Style of GStreamer</a> for coding convention.</p>
<h2 id="c-codes-c-sources">C codes (.c sources)</h2>
<p>All C codes of NNStreamer are required to use K&R with 2-space indenting. Just follow what's already there and you'll be fine. We only require .c files to be indented, headers may be indented differently for better readability. Please use spaces for indenting, not tabs, even in header files.</p>
<p>When you push your commits, apply <code>gst-indent</code> to .c files before you submit a commit with style change.
If there is a change due to code style issues, make two separate commits: (Please do not include other codes' style change in the same commit)</p>
<ul>
<li>commit with style change only (i.e., commit gst-indent-formatted original code - not your code change)</li>
<li>commit with your code change only (i.e., contents only).</li>
</ul>
<pre><code>$ ./tools/development/gst-indent <file-name>
</code></pre>
<h2 id="c-headers-h">C headers (.h)</h2>
<p>You may indent differently from what gst-indent does. You may also break the 80-column rule with header files.</p>
<p>Except the two, you are required to follow the general coding styles mandated by gst-indent</p>
<h2 id="c-files-cc">C++ files (.cc)</h2>
<p>Do not use .cpp extensions, use .cc extensions for C++ sources. Use .h for headers.</p>
<p>Please try to stick with the same indentation rules (2 spaces) and refer to .clang-format, which mandates the coding styles via CI.</p>
<h2 id="other-files">Other files</h2>
<ul>
<li>[Java] TBD</li>
<li>[Python] TBD</li>
<li>[Bash] TBD</li>
</ul>
<h1 id="file-locations">File Locations</h1>
<h2 id="directory-structure-of-nnstreamergit">Directory structure of nnstreamer.git</h2>
<ul>
<li>
<strong>debian</strong>: Debian/Ubuntu packaging files</li>
<li>
<strong>Documentation</strong>: Documentations</li>
<li>
<strong>ext/nnstreamer</strong>: NNStreamer plugins and subplugins that depend on optional or non-standard external packages. Components in this directory can be built and included optionally.
<ul>
<li>
<strong>android_source</strong>: Plugins required to support Android/JAVA APIs.</li>
<li>
<strong>tensor_decoder</strong>: Decoder subplugins</li>
<li>
<strong>tensor_filter</strong>: Filter subplugins</li>
<li>
<strong>tensor_source</strong>: Source elements that provide tensor/tensors streams. We do not have subplugin architectures for sources.</li>
<li>Potentially we can add <strong>tensor_converter</strong> here later for converter subplugins. We do not have converter subplugins released, yet.</li>
</ul>
</li>
<li>
<strong>gst/nnstreamer</strong>: All core nnstreamer codes are located here.
<ul>
<li>**tensor_* **: Plugins of nnstreamer.</li>
</ul>
</li>
<li>
<strong>jni</strong>: Android/Java build scripts.</li>
<li>
<strong>packaging</strong>: Tizen RPM build scripts. OpenSUSE/Redhat Linux may reuse this.</li>
<li>
<strong>tests</strong>: Unit test cases. We have SSAT test cases and GTEST test cases. There are a lot of subdirectories, which are groups of unit test cases.</li>
<li>
<strong>tools</strong>: Various developmental tools and scripts of NNStreamer.</li>
</ul>
<h2 id="related-git-repositories">Related git repositories</h2>
<ul>
<li><a href="https://github.com/nnstreamer/nntrainer">NNTrainer, the on-device AI training framework</a></li>
<li><a href="https://github.com/nnstreamer/nnstreamer-example">NNStreamer Example Applications & Documents</a></li>
<li><a href="https://github.com/nnstreamer/TAOS-CI">TAOS-CI, CI Service for On-Device AI Systems</a></li>
<li><a href="https://github.com/nnstreamer/api">Machine Learning APIs</a></li>
<li><a href="https://github.com/nnstreamer/nnstreamer-edge">NNStreamer-Edge, among-device AI support</a></li>
<li><a href="https://github.com/nnstreamer/nnstreamer-ros">NNStreamer ROS (Robot OS) Support</a></li>
<li>
<a href="https://github.com/nnstreamer/nnstreamer-android-resource">NNStreamer Android Build Resource</a>: additional files required by Android builds.</li>
<li>
<a href="https://github.com/nnstreamer/meta-neural-network">NNStreamer Yocto/OpenEmbedded Layer</a>: refer to <a href="https://layers.openembedded.org/layerindex/branch/master/layer/meta-neural-network/">Openembedded layer page</a>
</li>
<li><a href="https://github.com/nnstreamer/homebrew-neural-network">NNStreamer Homebrew for MacOS</a></li>
<li>
<a href="https://github.com/nnstreamer/nnstreamer.github.io">NNStreamer Web Page</a>: WIP</li>
<li>**tizenport-* **: Tizen-ROS support. Refer to <a href="https://build.tizen.org/project/show/devel:AIC:Tizen:5.0:nnsuite">build.tizen.org</a>
</li>
</ul>
<h2 id="related-external-git-repositories">Related external git repositories</h2>
<ul>
<li><a href="https://git.tizen.org/cgit/platform/upstream/nnstreamer/">NNStreamer mirror in Tizen.org</a></li>
</ul>
</div>
</div>
<div id="search_results">
<p>The results of the search are</p>
</div>
<div id="footer">
</div>
</div>
<div id="toc-column">
<div class="edit-button">
</div>
<div id="toc-wrapper">
<nav id="toc"></nav>
</div>
</div>
</div>
</main>
<script src="assets/js/navbar_offset_scroller.js"></script>
</body>
</html>