Lines Matching full:self
70 def __init__(self):
73 self.out_mode = self.OUTPUT_ALL
74 self.enable_lineno = None
75 self.nosymbol = {}
76 self.symbol = None
77 self.function_table = None
78 self.config = None
79 self.no_doc_sections = False
81 self.data = ""
83 def set_config(self, config):
88 self.config = config
90 def set_filter(self, export, internal, symbol, nosymbol, function_table,
100 self.enable_lineno = enable_lineno
101 self.no_doc_sections = no_doc_sections
102 self.function_table = function_table
105 self.out_mode = self.OUTPUT_INCLUDE
107 self.out_mode = self.OUTPUT_EXPORTED
109 self.out_mode = self.OUTPUT_INTERNAL
111 self.out_mode = self.OUTPUT_ALL
114 self.nosymbol = set(nosymbol)
117 def highlight_block(self, block):
122 for r, sub in self.highlights:
127 def out_warnings(self, args):
133 self.config.warning(log_msg)
135 def check_doc(self, name, args):
138 if self.no_doc_sections:
141 if name in self.nosymbol:
144 if self.out_mode == self.OUTPUT_ALL:
145 self.out_warnings(args)
148 if self.out_mode == self.OUTPUT_INCLUDE:
149 if name in self.function_table:
150 self.out_warnings(args)
155 def check_declaration(self, dtype, name, args):
161 if name in self.nosymbol:
164 if self.out_mode == self.OUTPUT_ALL:
165 self.out_warnings(args)
168 if self.out_mode in [self.OUTPUT_INCLUDE, self.OUTPUT_EXPORTED]:
169 if name in self.function_table:
172 if self.out_mode == self.OUTPUT_INTERNAL:
174 self.out_warnings(args)
177 if name not in self.function_table:
178 self.out_warnings(args)
183 def msg(self, fname, name, args):
188 self.data = ""
193 self.out_doc(fname, name, args)
194 return self.data
196 if not self.check_declaration(dtype, name, args):
197 return self.data
200 self.out_function(fname, name, args)
201 return self.data
204 self.out_enum(fname, name, args)
205 return self.data
208 self.out_var(fname, name, args)
209 return self.data
212 self.out_typedef(fname, name, args)
213 return self.data
216 self.out_struct(fname, name, args)
217 return self.data
220 self.config.log.warning("doesn't know how to output '%s' block",
225 def output_symbols(self, fname, symbols):
229 self.set_symbols(symbols)
233 m = self.msg(fname, arg.name, arg)
239 self.config.log.warning("%s:%d Can't handle %s",
248 def set_symbols(self, symbols):
251 def out_doc(self, fname, name, args):
254 def out_function(self, fname, name, args):
257 def out_enum(self, fname, name, args):
260 def out_var(self, fname, name, args):
263 def out_typedef(self, fname, name, args):
266 def out_struct(self, fname, name, args):
302 def __init__(self):
311 self.lineprefix = ""
313 def print_lineno(self, ln):
316 if self.enable_lineno and ln is not None:
318 self.data += f".. LINENO {ln}\n"
320 def output_highlight(self, args):
323 the self.highlights variable.
358 if self.sphinx_literal.match(line) or self.sphinx_cblock.match(line):
361 output += self.highlight_block(block)
366 output += self.highlight_block(block)
370 self.data += self.lineprefix + line + "\n"
372 def out_section(self, args, out_docblock=False):
382 if section in self.nosymbol:
386 if not self.out_mode == self.OUTPUT_INCLUDE:
387 self.data += f".. _{section}:\n\n"
388 self.data += f'{self.lineprefix}**{section}**\n\n'
390 self.data += f'{self.lineprefix}**{section}**\n\n'
392 self.print_lineno(args.sections_start_lines.get(section, 0))
393 self.output_highlight(text)
394 self.data += "\n"
395 self.data += "\n"
397 def out_doc(self, fname, name, args):
398 if not self.check_doc(name, args):
400 self.out_section(args, out_docblock=True)
402 def out_function(self, fname, name, args):
404 oldprefix = self.lineprefix
431 self.print_lineno(ln)
433 self.data += f".. c:macro:: {name}\n\n"
436 self.data += " **Typedef**: "
437 self.lineprefix = ""
438 self.output_highlight(args.get('purpose', ""))
439 self.data += "\n\n**Syntax**\n\n"
440 self.data += f" ``{signature}``\n\n"
442 self.data += f"``{signature}``\n\n"
444 self.data += f".. c:function:: {signature}\n\n"
447 self.print_lineno(ln)
448 self.lineprefix = " "
449 self.output_highlight(args.get('purpose', ""))
450 self.data += "\n"
454 self.lineprefix = " "
457 self.data += ".. container:: kernelindent\n\n"
458 self.data += f"{self.lineprefix}**Parameters**\n\n"
465 self.data += f"{self.lineprefix}``{dtype}``\n"
467 self.data += f"{self.lineprefix}``{parameter}``\n"
469 self.print_lineno(args.parameterdesc_start_lines.get(parameter_name, 0))
471 self.lineprefix = " "
475 self.output_highlight(args.parameterdescs[parameter_name])
476 self.data += "\n"
478 self.data += f"{self.lineprefix}*undescribed*\n\n"
479 self.lineprefix = " "
481 self.out_section(args)
482 self.lineprefix = oldprefix
484 def out_enum(self, fname, name, args):
486 oldprefix = self.lineprefix
489 self.data += f"\n\n.. c:enum:: {name}\n\n"
491 self.print_lineno(ln)
492 self.lineprefix = " "
493 self.output_highlight(args.get('purpose', ''))
494 self.data += "\n"
496 self.data += ".. container:: kernelindent\n\n"
497 outer = self.lineprefix + " "
498 self.lineprefix = outer + " "
499 self.data += f"{outer}**Constants**\n\n"
502 self.data += f"{outer}``{parameter}``\n"
505 self.output_highlight(args.parameterdescs[parameter])
507 self.data += f"{self.lineprefix}*undescribed*\n\n"
508 self.data += "\n"
510 self.lineprefix = oldprefix
511 self.out_section(args)
513 def out_var(self, fname, name, args):
514 oldprefix = self.lineprefix
520 self.lineprefix = " "
522 self.data += f"\n\n.. c:macro:: {name}\n\n{self.lineprefix}``{full_proto}``\n\n"
524 self.print_lineno(ln)
525 self.output_highlight(args.get('purpose', ''))
526 self.data += "\n"
529 self.data += f'{self.lineprefix}**Initialization**\n\n'
530 self.output_highlight(f'default: ``{args.other_stuff["default_val"]}``')
532 self.out_section(args)
534 def out_typedef(self, fname, name, args):
536 oldprefix = self.lineprefix
539 self.data += f"\n\n.. c:type:: {name}\n\n"
541 self.print_lineno(ln)
542 self.lineprefix = " "
544 self.output_highlight(args.get('purpose', ''))
546 self.data += "\n"
548 self.lineprefix = oldprefix
549 self.out_section(args)
551 def out_struct(self, fname, name, args):
558 self.data += f"\n\n.. c:{dtype}:: {name}\n\n"
560 self.print_lineno(ln)
562 oldprefix = self.lineprefix
563 self.lineprefix += " "
565 self.output_highlight(purpose)
566 self.data += "\n"
568 self.data += ".. container:: kernelindent\n\n"
569 self.data += f"{self.lineprefix}**Definition**::\n\n"
571 self.lineprefix = self.lineprefix + " "
573 declaration = declaration.replace("\t", self.lineprefix)
575 self.data += f"{self.lineprefix}{dtype} {name}" + ' {' + "\n"
576 self.data += f"{declaration}{self.lineprefix}" + "};\n\n"
578 self.lineprefix = " "
579 self.data += f"{self.lineprefix}**Members**\n\n"
589 self.print_lineno(args.parameterdesc_start_lines.get(parameter_name, 0))
591 self.data += f"{self.lineprefix}``{parameter}``\n"
593 self.lineprefix = " "
594 self.output_highlight(args.parameterdescs[parameter_name])
595 self.lineprefix = " "
597 self.data += "\n"
599 self.data += "\n"
601 self.lineprefix = oldprefix
602 self.out_section(args)
661 def modulename(self, args):
662 if self._modulename:
663 return self._modulename
667 def emit_th(self, name, args):
670 module = self.modulename(args)
672 self.data += f'.TH "{title}" {self.section} "{self.date}" '
673 self.data += f'"{module}" "{self.manual}"\n'
675 def __init__(self, modulename=None, section="9", manual="Kernel API Manual"):
685 self._modulename = modulename
686 self.section = section
687 self.manual = manual
689 self.symbols = []
694 for fmt in self.date_formats:
704 self.date = dt.strftime("%B %Y")
706 def arg_name(self, args, name):
720 # return os.path.basename(self.modulename(args))
727 def set_symbols(self, symbols):
734 self.symbols = symbols
736 def out_tail(self, fname, name, args):
740 self.data += f'.SH "SEE ALSO"' + "\n.PP\n"
741 self.data += (f"Kernel file \\fB{args.fname}\\fR\n")
742 if len(self.symbols) >= 2:
743 cur_name = self.arg_name(args, name)
746 for arg in self.symbols:
747 out_name = self.arg_name(arg, arg.name)
754 self.data += ",\n".join(related) + "\n"
759 def msg(self, fname, name, args):
766 self.out_tail(fname, name, args)
768 return self.data
770 def emit_table(self, colspec_row, rows):
797 def grid_table(self, lines, start):
839 return i, self.emit_table(colspec_row, rows)
841 def simple_table(self, lines, start):
888 return i, self.emit_table(colspec_row, rows)
890 def code_block(self, lines, start):
949 def output_highlight(self, block):
952 self.highlights variable using troff syntax.
955 contents = self.highlight_block(block)
970 i, text = self.grid_table(lines, i)
971 self.data += text
975 i, text = self.simple_table(lines, i)
976 self.data += text
980 i, text = self.code_block(lines, i)
981 self.data += text
985 self.data += "\\&" + line + "\n"
999 self.data += line + "\n"
1001 def out_doc(self, fname, name, args):
1002 if not self.check_doc(name, args):
1005 out_name = self.arg_name(args, name)
1007 self.emit_th(out_name, args)
1010 self.data += f'.SH "{section}"' + "\n"
1011 self.output_highlight(text)
1013 def out_function(self, fname, name, args):
1015 out_name = self.arg_name(args, name)
1017 self.emit_th(out_name, args)
1019 self.data += ".SH NAME\n"
1020 self.data += f"{name} \\- {args['purpose']}\n"
1022 self.data += ".SH SYNOPSIS\n"
1024 self.data += f'.B "{args["functiontype"]}" {name}' + "\n"
1026 self.data += f'.B "{name}' + "\n"
1039 self.data += f'".BI "{parenth}{function_pointer.group(1)}" " ") ({function_pointer.group(2)}){post}"' + "\n"
1043 self.data += f'.BI "{parenth}{dtype}" "{post}"' + "\n"
1048 self.data += ".SH ARGUMENTS\n"
1053 self.data += f'.IP "{parameter}" 12' + "\n"
1054 self.output_highlight(args.parameterdescs.get(parameter_name, ""))
1057 self.data += f'.SH "{section.upper()}"' + "\n"
1058 self.output_highlight(text)
1060 def out_enum(self, fname, name, args):
1061 out_name = self.arg_name(args, name)
1063 self.emit_th(out_name, args)
1065 self.data += ".SH NAME\n"
1066 self.data += f"enum {name} \\- {args['purpose']}\n"
1068 self.data += ".SH SYNOPSIS\n"
1069 self.data += f"enum {name}" + " {\n"
1073 self.data += f'.br\n.BI " {parameter}"' + "\n"
1075 self.data += "\n};\n"
1077 self.data += ", \n.br\n"
1081 self.data += ".SH Constants\n"
1085 self.data += f'.IP "{parameter}" 12' + "\n"
1086 self.output_highlight(args.parameterdescs.get(parameter_name, ""))
1089 self.data += f'.SH "{section}"' + "\n"
1090 self.output_highlight(text)
1092 def out_var(self, fname, name, args):
1093 out_name = self.arg_name(args, name)
1096 self.emit_th(out_name, args)
1098 self.data += ".SH NAME\n"
1099 self.data += f"{name} \\- {args['purpose']}\n"
1101 self.data += ".SH SYNOPSIS\n"
1102 self.data += f"{full_proto}\n"
1105 self.data += f'.SH "Initialization"' + "\n"
1106 self.output_highlight(f'default: {args.other_stuff["default_val"]}')
1109 self.data += f'.SH "{section}"' + "\n"
1110 self.output_highlight(text)
1112 def out_typedef(self, fname, name, args):
1113 module = self.modulename(args)
1115 out_name = self.arg_name(args, name)
1117 self.emit_th(out_name, args)
1119 self.data += ".SH NAME\n"
1120 self.data += f"typedef {name} \\- {purpose}\n"
1123 self.data += f'.SH "{section}"' + "\n"
1124 self.output_highlight(text)
1126 def out_struct(self, fname, name, args):
1127 module = self.modulename(args)
1130 out_name = self.arg_name(args, name)
1132 self.emit_th(out_name, args)
1134 self.data += ".SH NAME\n"
1135 self.data += f"{args.type} {name} \\- {purpose}\n"
1141 self.data += ".SH SYNOPSIS\n"
1142 self.data += f"{args.type} {name} " + "{" + "\n.br\n"
1143 self.data += f'.BI "{declaration}\n' + "};\n.br\n\n"
1145 self.data += ".SH Members\n"
1155 self.data += f'.IP "{parameter}" 12' + "\n"
1156 self.output_highlight(args.parameterdescs.get(parameter_name))
1159 self.data += f'.SH "{section}"' + "\n"
1160 self.output_highlight(text)