name_conventions-russian.tex 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. \subsection{Соглашения по именам}
  2. \label{subsec:nameconventions}
  3. \index{соглашения по именам}%
  4. Для описания соглашений будут использованы следующие подстановки:
  5. \nopagebreak\par\bigskip
  6. {%
  7. \setlength{\leftskip}{0pt}\setlength{\parindent}{-\tabcolsep}%
  8. \SetLenVarWithWidth{\Acol}{\verbI{Action}}%
  9. \SetLenVarWithWidth{\Bcol}{--}%
  10. \begin{tabular}%
  11. {p{\Acol}p{\Bcol}p{\linewidth-\Acol-\Bcol-4\tabcolsep}}
  12. \verb|*|&--&последовательность символов любой длины;\\
  13. \verbI{Action}&--&смысловое название действия, например, <<Sync>> для
  14. синхронизации или <<Fill>> для заполнения;\\
  15. \verbI{Tname}&--&\textbf{t}ype \textbf{name}, смысловое название типа данных, не
  16. обязательно соответствует техническому названию структуры;\\
  17. \verbI{BTA}&--&\textbf{b}ase \textbf{t}ype \textbf{a}cronym, сокращение для
  18. базового типа данных, так в библиотеке уже задействованы акронимы:\\
  19. &&
  20. \begin{tabular}{lllllll}
  21. &&&\verb|i8| &(\verb|signed char|), &\verb|u8| &(\verb|unsigned char|),\\
  22. &&&\verb|i16|&(\verb|signed short|), &\verb|u16|&(\verb|unsigned short|),\\
  23. &&&\verb|i32|&(\verb|signed int|), &\verb|u32|&(\verb|unsigned int|),\\
  24. &&&\verb|i64|&(\verb|signed long int|),&\verb|u64|&(\verb|unsigned long int|),\\
  25. &&&\verb|f32|&(\verb|float|), &\verb|f64|&(\verb|double|).
  26. \end{tabular}
  27. \end{tabular}
  28. }
  29. \bigskip
  30. \begin{samepage}
  31. \noindent%
  32. При написании использованы следующие соглашения по именам сущностей:
  33. \nopagebreak\par
  34. {\NmCnvDescript\verb|__*|\\* сущности библиотеки для внутреннего использования
  35. начинаются с двух знаков подчёркивания <<\verb|__|>>~(underscore). При штатном
  36. использовании библиотеки обращение к таким сущностям не предполагается.\par}
  37. \end{samepage}
  38. \bigskip
  39. \begin{samepage}
  40. \centerline{\textbf{Макроопределения}}\nopagebreak\par
  41. {\NmCnvDescript\verb|_GHM_*|\\* \textbf{g}pgpu \textbf{h}ost \textbf{m}acro,
  42. инструкция препроцессора для компилятора программ CPU.\par}
  43. {\NmCnvDescript\verb|_GDM_*|\\* \textbf{g}pgpu \textbf{d}evice \textbf{m}acro,
  44. инструкция препроцессора только для компилятора программ OpenCL.\par}
  45. {\NmCnvDescript\verb|_GHDM_*|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
  46. \textbf{m}acro, инструкция препроцессора единая для компиляторов CPU и OpenCL.
  47. \par}
  48. \end{samepage}
  49. \bigskip
  50. \begin{samepage}
  51. \centerline{\textbf{Типы}}\nopagebreak\par
  52. {\NmCnvDescript\verb|_GHT_*|\\* \textbf{g}pgpu \textbf{h}ost \textbf{t}ype, тип
  53. данных для программ CPU.\par}
  54. {\NmCnvDescript\verb|_GDT_*|\\* \textbf{g}pgpu \textbf{d}evice \textbf{t}ype,
  55. тип данных для программ OpenCL.\par}
  56. {\NmCnvDescript\verb|_GHDT_*|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
  57. \textbf{t}ype, тип данных единый для программ CPU и OpenCL.\par}
  58. \end{samepage}
  59. \bigskip
  60. \begin{samepage}
  61. \centerline{\textbf{Перечисления}}\nopagebreak\par
  62. {\NmCnvDescript\verb|_GHE_*|\\* \textbf{g}pgpu \textbf{h}ost
  63. \textbf{e}numeration, перечисление для программ CPU.\par}
  64. {\NmCnvDescript\verb|_GDE_*|\\* \textbf{g}pgpu \textbf{d}evice
  65. \textbf{e}numeration, перечисление для программ OpenCL.\par}
  66. {\NmCnvDescript\verb|_GHDE_*|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
  67. \textbf{e}numeration, перечисление единое для программ CPU и OpenCL.\par}
  68. \end{samepage}
  69. \bigskip
  70. \begin{samepage}
  71. \centerline{\textbf{Функции}}\nopagebreak\par
  72. {\NmCnvDescript\verb|_ghf_*()|\\* \textbf{g}pgpu \textbf{h}ost
  73. \textbf{f}unction, функция библиотеки доступная для использования только в
  74. программах CPU.\par}
  75. {\NmCnvDescript\verb|_gdf_*()|\\* \textbf{g}pgpu \textbf{d}evice
  76. \textbf{f}unction, функция библиотеки доступная для использования только в
  77. программах OpenCL.\par}
  78. {\NmCnvDescript\verb|_ghdf_*()|\\* \textbf{g}pgpu \textbf{h}ost-\textbf{d}evice
  79. \textbf{f}unction, функция единая для программ CPU и OpenCL.\par}
  80. \end{samepage}
  81. \bigskip
  82. \begin{samepage}
  83. {\NmCnvDescript\verb|*_wdc*()|\\* \textbf{w}ith \textbf{d}ata \textbf{c}leaner,
  84. особый тип функции. Если при выполнении такой функции возникнет ошибка, то будет
  85. выполнена функция обратного вызова (callback), которая освобождает память и
  86. обнуляет структуры из поля пользовательских данных рабочей конфигурации
  87. (workset). Подробнее~см.~п.\ref{subsec:workset}.\par}
  88. \end{samepage}
  89. \bigskip
  90. \begin{samepage}
  91. {\NmCnvDescript%
  92. \verb|*_decl|\verbI{Tname}\verb|()|\nopagebreak\par
  93. \verb|*_decl|\verbI{Tname}\verb|_|\verbI{BTA}\verb|()|\\*
  94. \textbf{decl}arator, функция возвращает структуру с полями (членами)
  95. инициализированными значениями по умолчанию. При этом не производится выделение
  96. памяти, а полям-указателям присваивается значение \verb|NULL|. Присвоение
  97. значения возвращаемого такой функцией существующей структуре может привести к
  98. утечке памяти, в связи с чем функции \verb|*_decl*()| вызываются только при
  99. объявлении структуры.\par}
  100. \end{samepage}
  101. \bigskip
  102. \begin{samepage}
  103. {\NmCnvDescript%
  104. \verb|*_genr|\verbI{Tname}\verb|()|\nopagebreak\par
  105. \verb|*_genr|\verbI{Tname}\verb|_|\verbI{BTA}\verb|()|\\*
  106. \textbf{gen}e\textbf{r}ator, функция выделяет память для всех
  107. полей-указателей структуры \verbI{Tname}, указатель на которую получен из
  108. аргументов. Затем заполняет поля структуры и выделенную память в соответствии со
  109. своими аргументами. Аналог конструктора. При возникновении ошибки возвращает
  110. значение \verb|int| отличное от ноля и полностью освобождает память создаваемой
  111. структуры \verbI{Tname} включая поля-структуры. \verbI{Tname}~--~смысловое
  112. название, которое может не соответствовать техническому обозначению структуры.
  113. \par
  114. \begin{ImpNote}
  115. если функции \verb|*_genr*()| передан
  116. указатель на существующую структуру, то структура будет корректно пересоздана с
  117. удалением всех предыдущих данных и освобождением соответствующей памяти, включая
  118. поля-структуры.
  119. \end{ImpNote}
  120. }
  121. \end{samepage}
  122. \bigskip
  123. \begin{samepage}
  124. {\NmCnvDescript%
  125. \verb|*_is|\verbI{Tname}\verb|_Valid()|\nopagebreak\par
  126. \verb|*_is|\verbI{Tname}\verb|_|\verbI{BTA}\verb|_Valid()|\\*
  127. функция проводит минимальную проверку целостности данных структуры и возвращает
  128. значение \verb|int|. Если данные структуры целостны, функция
  129. \verb|*_is*_Valid()| вернёт 1, в ином случае будет возвращён 0.\par}
  130. \end{samepage}
  131. \bigskip
  132. \begin{samepage}
  133. {\NmCnvDescript%
  134. \verb|*|\verbI{ActionTname}\verb|()|\nopagebreak\par
  135. \verb|*|\verbI{ActionTname}\verb|_|\verbI{BTA}\verb|()|\\*
  136. функция производит действие \verbI{Action} с типом \verbI{Tname}. При
  137. возникновении ошибки возвращает значение \verb|int| отличное от ноля и полностью
  138. освобождает память структуры \verbI{Tname} включая поля-структуры.
  139. \verbI{Tname}~--~смысловое название, которое может не соответствовать
  140. техническому обозначению структуры.\par}
  141. \end{samepage}
  142. \bigskip
  143. \begin{samepage}
  144. {\NmCnvDescript%
  145. \verb|*_wipe|\verbI{Tname}\verb|()|\nopagebreak\par
  146. \verb|*_wipe|\verbI{Tname}\verb|_|\verbI{BTA}\verb|()|\\*
  147. функция полностью освобождает память, занимаемую полями структуры \verbI{Tname}
  148. включая поля-структуры, присваивает всем полям структуры значения по умолчанию,
  149. а полям-указателям значение \verb|NULL|. После применения функции
  150. \verb|*_wipe*()| состояние структуры аналогично возвращённому функцией
  151. \verb|*_decl*()| и память занимаемая структурой может быть освобождена или снова
  152. применена функция \verb|*_genr*()|. \verbI{Tname}~--~смысловое название, которое
  153. может не соответствовать техническому обозначению структуры.\par}
  154. \end{samepage}
  155. \bigskip
  156. \begin{samepage}
  157. {\NmCnvDescript\verb|*_get|\verbI{Tname}\Verb|()|\\* функция непрямого доступа к
  158. данным, при вызове возвращает значение \verbI{Tname} полученное из аргументов
  159. функции. \verbI{Tname}~--~смысловое название, которое может не соответствовать
  160. техническому обозначению структуры.\par}
  161. \end{samepage}
  162. \bigskip
  163. \begin{samepage}
  164. \centerline{\textbf{Файлы}}\nopagebreak\par
  165. {\NmCnvDescript\Verb|*.clc|\\* файл с исходным кодом OpenCL программы на языке
  166. OpenCL C.\par}
  167. {\NmCnvDescript\Verb|*.clh|\\* заголовочный файл (header) с исходным кодом
  168. OpenCL заголовка на языке OpenCL C.\par}
  169. {\NmCnvDescript\Verb|*.clo|\\* скомпилированный объект (object) OpenCL. Имеет
  170. смысл только для OpenCL-устройств одной архитектуры.\par}
  171. {\NmCnvDescript\Verb|*.clso|\\* скомпонованная библиотека (shared
  172. object/library) OpenCL. Имеет смысл только для OpenCL-устройств одной
  173. архитектуры.\par}
  174. {\NmCnvDescript\Verb|*.clexe|\\* скомпонованный исполняемый файл (executable)
  175. OpenCL. Имеет смысл только для OpenCL-устройств одной архитектуры.\par}
  176. {\NmCnvDescript\Verb|*.clout|\\* файл OpenCL, содержание которого средствами
  177. библиотеки установить не удалось.\par}
  178. {\NmCnvDescript\verb|*.log|\\* файл-журнал.\par}
  179. \end{samepage}