1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 /* 3 * am-scanner.h 4 * Copyright (C) Sébastien Granjoux 2009 <seb.sfo@free.fr> 5 * 6 * main.c is free software: you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License as published by the 8 * Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * main.c is distributed in the hope that it will be useful, but 12 * WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 * See the GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License along 17 * with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef _AM_SCANNER_H_ 21 #define _AM_SCANNER_H_ 22 23 #include "am-project.h" 24 25 #include "libanjuta/anjuta-token.h" 26 #include "libanjuta/anjuta-token-file.h" 27 28 #include <glib.h> 29 #include <gio/gio.h> 30 31 G_BEGIN_DECLS 32 33 //#define YYSTYPE AnjutaToken* 34 #define YYLTYPE AnjutaToken* 35 #define YYSTYPE AnjutaToken* 36 37 typedef struct _AmpAmScanner AmpAmScanner; 38 39 AmpAmScanner *amp_am_scanner_new (AmpProject *project, AmpGroupNode *group); 40 void amp_am_scanner_free (AmpAmScanner *scanner); 41 42 AnjutaToken *amp_am_scanner_parse_token (AmpAmScanner *scanner, AnjutaToken *root, AnjutaToken *content, GFile *filename, GError **error); 43 44 void amp_am_scanner_set_am_variable (AmpAmScanner *scanner, AnjutaToken *variable); 45 void amp_am_scanner_include (AmpAmScanner *scanner, AnjutaToken *name); 46 void amp_am_scanner_update_variable (AmpAmScanner *scanner, AnjutaToken *variable); 47 48 void amp_project_set_am_variable (AmpProject* project, AmpGroupNode* group, AnjutaToken *variable, GHashTable *orphan_properties); 49 50 void amp_am_scanner_parse_variable (AmpAmScanner *scanner, AnjutaToken *variable); 51 void amp_am_scanner_parse_ac_variable (AmpAmScanner *scanner, AnjutaToken *variable); 52 53 void amp_am_yyerror (YYLTYPE *loc, AmpAmScanner *scanner, char const *s); 54 55 typedef enum 56 { 57 /* Order is important as the backend will try to follow it */ 58 AM_TOKEN_FIRST_ORDERED_MACRO = ANJUTA_TOKEN_USER, 59 AM_TOKEN_SUBDIRS, 60 AM_TOKEN_DIST_SUBDIRS, 61 AM_TOKEN__DATA, 62 AM_TOKEN__HEADERS, 63 AM_TOKEN__LIBRARIES, 64 AM_TOKEN__LISP, 65 AM_TOKEN__LTLIBRARIES, 66 AM_TOKEN__MANS, 67 AM_TOKEN__PROGRAMS, 68 AM_TOKEN__PYTHON, 69 AM_TOKEN__SCRIPTS, 70 AM_TOKEN__TEXINFOS, 71 AM_TOKEN__JAVA, 72 AM_TOKEN_DIR, 73 AM_TOKEN__LDFLAGS, 74 AM_TOKEN__CPPFLAGS, 75 AM_TOKEN__CFLAGS, 76 AM_TOKEN__CXXFLAGS, 77 AM_TOKEN__JAVACFLAGS, 78 AM_TOKEN__VALAFLAGS, 79 AM_TOKEN__FCFLAGS, 80 AM_TOKEN__OBJCFLAGS, 81 AM_TOKEN__LFLAGS, 82 AM_TOKEN__YFLAGS, 83 84 AM_TOKEN_FIRST_ORDERED_TARGET_MACRO, 85 AM_TOKEN__SOURCES, 86 AM_TOKEN_TARGET_CPPFLAGS, 87 AM_TOKEN_TARGET_CFLAGS, 88 AM_TOKEN_TARGET_CXXFLAGS, 89 AM_TOKEN_TARGET_OBJCFLAGS, 90 AM_TOKEN_TARGET_VALAFLAGS, 91 AM_TOKEN_TARGET_JAVACFLAGS, 92 AM_TOKEN_TARGET_LFLAGS, 93 AM_TOKEN_TARGET_YFLAGS, 94 AM_TOKEN_TARGET_FCFLAGS, 95 AM_TOKEN_TARGET_LDFLAGS, 96 AM_TOKEN_TARGET_LIBADD, 97 AM_TOKEN_TARGET_LDADD, 98 AM_TOKEN_TARGET_DEPENDENCIES, 99 AM_TOKEN_LAST_ORDERED_TARGET_MACRO, 100 101 AM_TOKEN_LAST_ORDERED_MACRO, 102 103 } AmTokenType; 104 105 G_END_DECLS 106 107 #endif 108