Commit 8209b358 authored by Roberto Raggi's avatar Roberto Raggi

Fun with the binding pass.

parent 4168a5da
QT = #
macx:CONFIG -= app_bundle
TARGET = cplusplus0
*-g++*:QMAKE_CXXFLAGS += -fno-rtti -fno-exceptions -O2
# Input
SOURCES += main.cpp
unix {
debug:OBJECTS_DIR = $${OUT_PWD}/.obj/debug-shared
release:OBJECTS_DIR = $${OUT_PWD}/.obj/release-shared
debug:MOC_DIR = $${OUT_PWD}/.moc/debug-shared
release:MOC_DIR = $${OUT_PWD}/.moc/release-shared
RCC_DIR = $${OUT_PWD}/.rcc/
UI_DIR = $${OUT_PWD}/.uic/
me=$(dirname $0)
t=$(mktemp -t c++)
echo "Generating $t"
${CPP-gcc} -xc++ -E -include $me/conf.c++ $* > $t
echo "Parsing $t"
$me/cplusplus0 $t
#define __extension__
#define __context__
#define __range__
#define __asm(a...)
#define __asm__(a...)
#define restrict
#define __restrict
#define __weak
** This file is part of Qt Creator
** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (
** Non-Open Source Usage
** Licensees may use this file in accordance with the Qt Beta Version
** License Agreement, Agreement version 2.2 provided with the Software or,
** alternatively, in accordance with the terms contained in a written
** agreement between you and Nokia.
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License versions 2.0 or 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the packaging
** of this file. Please review the following information to ensure GNU
** General Public Licensing requirements will be met:
** and
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt GPL Exception
** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
#include <AST.h>
#include <ASTVisitor.h>
#include <Control.h>
#include <Scope.h>
#include <Semantic.h>
#include <TranslationUnit.h>
#include <PrettyPrinter.h>
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <iostream>
#include <fstream>
#include <sstream>
static int usage()
std::cerr << "cplusplus0: no input files" << std::endl;
int main(int argc, char *argv[])
if (argc == 1)
return usage();
std::fstream in(argv[1]);
if (! in)
return usage();
in.seekg(0, std::ios::end);
const size_t size = in.tellg();
in.seekp(0, std::ios::beg);
std::vector<char> source(size + 1);[0], size);
source[size] = '\0';
Control control;
StringLiteral *fileId = control.findOrInsertFileName(argv[1]);
TranslationUnit unit(&control, fileId);
unit.setSource(&source[0], source.size());
if (! unit.ast())
TranslationUnitAST *ast = unit.ast()->asTranslationUnit();
assert(ast != 0);
Scope globalScope;
Semantic sem(&control);
for (DeclarationAST *decl = ast->declarations; decl; decl = decl->next) {
sem.check(decl, &globalScope);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment