File: SCDoc.h

package info (click to toggle)
supercollider 1%3A3.13.0%2Brepack-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 80,296 kB
  • sloc: cpp: 476,363; lisp: 84,680; ansic: 77,685; sh: 25,509; python: 7,909; makefile: 3,440; perl: 1,964; javascript: 974; xml: 826; java: 677; yacc: 314; lex: 175; objc: 152; ruby: 136
file content (41 lines) | stat: -rw-r--r-- 1,161 bytes parent folder | download | duplicates (4)
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
#pragma once

#include <stdint.h>
#include <string.h>
#include <string>

#define SCDOC_PARSE_FULL 0
#define SCDOC_PARSE_PARTIAL 1
#define SCDOC_PARSE_METADATA 2

extern const char* NODE_TEXT;
extern const char* NODE_NL;

typedef struct DocNode {
    const char* id;
    char* text;
    int n_childs;
    struct DocNode** children;
} DocNode;

char* strmerge(char* a, char* b);

DocNode* doc_node_make_take_children(const char* id, char* text, DocNode* src);
DocNode* doc_node_make(const char* id, char* text, DocNode* child);
DocNode* doc_node_add_child(DocNode* n, DocNode* child);
DocNode* doc_node_create(const char* id);
void doc_node_free_tree(DocNode* n);

/**
 * \brief Parses a .schelp file and generates a help file parse tree
 *
 * \arg fn A UTF-8 string, the filename to be parsed
 * \arg mode The mode to parse, should be one of SCDOC_PARSE_FULL, PARTIAL, or METADATA
 * \returns A parse tree pointer, or nullptr if the file count not be opened or parsed.
 */
DocNode* scdoc_parse_file(const std::string& fn, int mode);

/// Dumps a DocNode to stdout as a human-readable tree.
void doc_node_dump(DocNode* n);

extern const char* scdoc_current_file;