cheader_filenames.add (cheader_filename);
}
+ /**
+ * Adds a C header filename of this namespace.
+ *
+ * @param cheader_filename header filename
+ */
+ public void add_cheader_filename (string cheader_filename) {
+ cheader_filenames.add (cheader_filename);
+ }
+
private void process_ccode_attribute (Attribute a) {
if (a.has_argument ("cprefix")) {
foreach (string name in a.get_string ("cprefix").split (","))
* Code visitor parsing all Vala source files.
*/
public class Vala.GirParser : CodeVisitor {
+ public string package_name { get; private set; }
+
MarkupReader reader;
CodeContext context;
SourceLocation end;
MarkupTokenType current_token;
+ string[] cheader_filenames;
+
HashMap<string,string> attributes_map = new HashMap<string,string> (str_hash, str_equal);
/**
}
} else if (reader.name == "include") {
parse_include ();
+ } else if (reader.name == "package") {
+ parse_package ();
+ } else if (reader.name == "c:include") {
+ parse_c_include ();
} else {
// error
Report.error (get_current_src (), "unknown child element `%s' in `repository'".printf (reader.name));
end_element ("include");
}
+ void parse_package () {
+ start_element ("package");
+ package_name = reader.get_attribute ("name");
+ next ();
+ end_element ("package");
+ }
+
+ void parse_c_include () {
+ start_element ("c:include");
+ cheader_filenames += reader.get_attribute ("name");
+ next ();
+ end_element ("c:include");
+ }
+
Namespace? parse_namespace () {
start_element ("namespace");
}
}
- string cheader = get_attribute (ns.name, "c:header-filename");
- if (cheader != null) {
- ns.set_cheader_filename (cheader);
+ foreach (string c_header in cheader_filenames) {
+ ns.add_cheader_filename (c_header);
}
next ();
while (current_token == MarkupTokenType.START_ELEMENT) {