0571235728392ff1529bb8f4617ff0ec28ae4c47
[app.Builder.js] / src / Palete / VapiParser.vala
1
2
3 // valac VapiParser.vala --pkg libvala-0.24 --pkg posix -o /tmp/treebuilder
4
5 namespace Palete {
6          
7          
8          
9
10         public class VapiParser : Vala.CodeVisitor {
11                 Vala.CodeContext context;
12                 public VapiParser() {
13                         base();
14                         
15                 }
16                 public override void visit_namespace (Vala.Namespace element) {
17                         print("parsing namespace %s\n", element.name);
18                         element.accept_children (this);
19                 }
20                 
21                 public override void visit_class (Vala.Class element) {
22                         print("got class %s / %s\n", element.name, element.get_full_name());
23                         element.accept_children (this);
24                 }
25                 public override void visit_method (Vala.Method element) {
26                         print("got method %s / %s\n", element.name, element.get_full_name() ); 
27                         element.accept_children (this);
28                 }
29                 public override void visit_type_parameter (Vala.TypeParameter element) {
30                         print("got param %s\n", element.name); 
31                 }
32                 
33                 
34                 public void create_valac_tree( )
35                 {
36                         // init context:
37                         context = new Vala.CodeContext ();
38                         Vala.CodeContext.push (context);
39                 
40                         context.experimental = false;
41                         context.experimental_non_null = false;
42                         
43 #if VALA_0_28
44                         var ver=28;
45 #elif VALA_0_26 
46                         var ver=26;
47 #elif VALA_0_24
48                         var ver=24;
49 #elif VALA_0_22 
50                         var ver=22;
51 #endif
52                         
53                         for (int i = 2; i <= ver; i += 2) {
54                                 context.add_define ("VALA_0_%d".printf (i));
55                         }
56                         
57                          
58                         //var vapidirs = ((Project.Gtk)this.file.project).vapidirs();
59                         // what's the current version of vala???
60                         
61                         
62                         //vapidirs +=  Path.get_dirname (context.get_vapi_path("glib-2.0")) ;
63                          
64                                 
65                         
66                         // or context.get_vapi_path("glib-2.0"); // should return path..
67                         //context.vapi_directories = vapidirs;
68                         context.report.enable_warnings = true;
69                         context.metadata_directories = { };
70                         context.gir_directories = {};
71                         context.thread = true;
72                         
73                         
74                         //this.report = new ValaSourceReport(this.file);
75                         //context.report = this.report;
76                         
77                         
78                         context.basedir = "/tmp"; //Posix.realpath (".");
79                 
80                         context.directory = context.basedir;
81                 
82
83                         // add default packages:
84                         //if (settings.profile == "gobject-2.0" || settings.profile == "gobject" || settings.profile == null) {
85                         context.profile = Vala.Profile.GOBJECT;
86                          
87                         var ns_ref = new Vala.UsingDirective (new Vala.UnresolvedSymbol (null, "GLib", null));
88                         context.root.add_using_directive (ns_ref);
89  
90                         // default.. packages..
91                         context.add_external_package ("glib-2.0"); 
92                         context.add_external_package ("gobject-2.0");
93                         context.add_external_package ("gdk-3.0");
94                         context.add_external_package ("atk");
95                         context.add_external_package ("gdk-x11-3.0");
96                         context.add_external_package ("x11");
97                         
98                         // user defined ones..
99                         //context.add_package ("Gtk");
100                   
101                         var vfile = new Vala.SourceFile (context, Vala.SourceFileType.PACKAGE, "/usr/share/vala-0.26/vapi/gtk+-3.0.vapi");
102                         context.add_source_file (vfile);
103                          
104                         //context.add_external_package ("libvala-0.24");
105                         
106                          
107                 
108                         //add_documented_files (context, settings.source_files);
109                 
110                         Vala.Parser parser = new Vala.Parser ();
111                         parser.parse (context);
112                         //gir_parser.parse (context);
113                         if (context.report.get_errors () > 0) {
114                                 print("parse got errors");
115                                  
116                                 
117                                 Vala.CodeContext.pop ();
118                                 return ;
119                         }
120
121
122                         
123                         // check context:
124                         context.check ();
125                         if (context.report.get_errors () > 0) {
126                                 print("check got errors");
127                                  
128                                 Vala.CodeContext.pop ();
129                                  
130                                 return;
131                                 
132                         }
133                          
134                         Vala.CodeContext.pop ();
135                          
136                         context.accept(this);
137                         print("ALL OK?\n");
138                  
139                 }
140         //
141                 // startpoint:
142                 //
143          
144         }
145 }
146  
147 int main (string[] args) {
148
149         var a = new Palete.VapiParser( );
150         a.create_valac_tree();
151         return 0;
152 }
153  
154
155