1 #ifndef MFILESCANNER_H_
2 #define MFILESCANNER_H_
6 #include "confscanner.h"
26 #define BUFSIZE 100*16384
28 #define stringify( name ) #name
36 print_fields(PRINT_FIELDS),
37 auto_add_fields(AUTO_ADD_FIELDS),
38 auto_add_params(AUTO_ADD_PARAMETERS),
39 auto_add_class_properties(AUTO_ADD_CLASS_PROPERTIES),
40 auto_add_class(AUTO_ADD_CLASSES),
41 copy_typified_field_docu(COPY_TYPIFIED_FIELD_DOCU),
42 remove_first_arg_in_abstract_methods(
43 REMOVE_FIRST_ARG_IN_ABSTRACT_METHODS),
44 parse_of_type(ENABLE_OF_TYPE_PARSING),
45 void_type_in_return_values(VOID_TYPE_IN_RETURN_VALUES),
46 print_return_value_name(PRINT_RETURN_VALUE_NAME),
47 generate_subfunction_documentation(
48 GENERATE_SUBFUNTION_DOCUMENTATION) {
58 std.string methodname;
63 bool auto_add_class_properties;
65 bool copy_typified_field_docu;
66 bool remove_first_arg_in_abstract_methods;
68 bool void_type_in_return_values;
69 int print_return_value_name;
70 bool generate_subfunction_documentation;
81 std.ostream & operator<<(std.ostream & os, MatlabAccessEnum & mae);
108 std.vector<std.pair<MatlabAccessEnum, std.string> > classMemberAccess;
109 MatlabAccessEnum state;
120 friend std.ostream & operator<<(std.ostream & os,
AccessStruct & as);
133 std.string ccprefix() {
135 return "static const ";
140 std.string print_list() {
141 std.ostringstream oss;
144 oss << pre <<
" Constant";
148 oss << pre <<
" Transient";
152 oss << pre <<
" Dependent";
156 oss << pre <<
" Hidden";
160 oss << pre <<
" setObservable";
164 oss << pre <<
" Abstract";
178 setObservable(
false),
184 friend std.ostream & operator<<(std.ostream & os,
PropParams & pp);
207 bool testMethodSetup;
208 bool testMethodTeardown;
210 std.string ccprefix() {
218 std.string ccpostfix() {
225 std.string print_list() {
226 std.ostringstream oss;
229 oss << pre <<
" Abstract";
233 oss << pre <<
" Static";
237 oss << pre <<
" Hidden";
241 oss << pre <<
" Sealed";
245 oss << pre <<
" Test";
248 if (testMethodSetup) {
249 oss << pre <<
" TestMethodSetup";
252 if (testMethodTeardown) {
253 oss << pre <<
" TestMethodTeardown";
268 testMethodSetup(
false),
269 testMethodTeardown(
false) {
273 friend std.ostream & operator<<(std.ostream & os,
MethodParams & mp);
280 typedef std.pair<std.string, ST> item;
281 typedef std.vector<item> base_type;
282 typedef typename base_type.iterator iterator;
283 typedef typename base_type.const_iterator const_iterator;
292 ST & operator[](
const std.string & key) {
293 iterator it = this->find(key);
294 if (it == this->end()) {
295 this->push_back(make_pair(key, ST()));
296 it = this->end() - 1;
301 iterator find(
const std.string & key) {
302 iterator it = this->begin();
303 for (; it != this->end(); ++it) {
304 if (it->first == key)
433 typedef std.vector<std.string> DocuBlock;
436 typedef std.map<std.string, DocuBlock> AltDocuList;
437 typedef std.map<std.string, AltDocuList> AltDocuListMap;
438 typedef std.set<std.string> GroupSet;
444 const std.string & filename,
const std.string & conffilename,
458 return methodparams_;
465 void extract_default_argument_of_inputparser(std.string & last_args);
466 void add_access_info(std.string);
467 void add_property_params_info();
468 void add_method_params_info();
469 void end_of_class_doc();
470 std.string access_specifier_string(AccessEnum & access);
471 void print_access_specifier(AccessEnum & access,
MethodParams & mp,
473 void print_pure_function_synopsis();
474 void print_function_synopsis();
475 void end_of_property_doc();
476 void end_of_enum_doc();
477 void get_typename(
const std.string &, std.string &, std.string voidtype =
479 void get_default(
const std.string &, std.string &);
480 void handle_param_list_for_varargin();
481 void extract_typen(DocuBlock & db, std.string & typen,
482 bool remove =
false);
483 const std.string & extract_default(DocuBlock &, std.string &);
484 void update_method_params(
const std.string & methodname);
488 std.string namespace_string();
491 void cout_docuheader(std.string,
bool clear =
true);
492 void cout_docubody();
493 void cout_docuextra();
494 const std.string & replace_underscore(std.string & s);
496 const std.string & escape_chars(std.string & s);
498 void print_warning(
const std.string &);
499 void write_docu_block(
const DocuBlock & block);
501 void write_docu_list(
const DocuList & list,
const std.string & item_text,
502 const AltDocuList & alternative,
bool,
const std.string separator,
503 const std.string docu_list_name);
505 void write_docu_listmap(
const DocuListMap & listmap,
506 const std.string & text,
const AltDocuListMap & altlistmap);
508 void debug_output(
const std.string & msg,
char * p);
510 void postprocess_unused_params(std.string &,
DocuList &);
515 const std.string filename_;
518 std.list<std.string> namespaces_;
527 bool extra_hold_in_cblock;
535 DocuBlock returnlist_;
537 DocuBlock docuheader_;
539 DocuBlock docuextra_;
540 DocuBlock paramlist_;
542 std.string cfuncname_;
545 bool is_first_function_;
549 std.string classname_;
550 std.string.size_type funcindent_;
551 ClassPart class_part_;
555 std.vector<std.string> property_list_;
557 std.string defaultprop_;
560 std.map<std.string, std.string> param_type_map_;
562 std.map<std.string, PropExtraInformation> specifier_;
564 std.string varargin_parser_candidate_;
566 std.ostringstream warning_buffer_;
570 extern const char * AccessEnumNames[];
572 extern const char * ClassPartNames[];