C ++将类型映射到其头文件

时间:2013-05-18 13:20:54

标签: c++ types header xtext

我目前正在开发一种简单的编程语言,可以轻松创建C ++项目。它允许您输入一些简短的C ++代码并自动生成.h和.cpp文件。

我需要一些方法来映射类型,例如从标准库到其相应的头文件。这样就可以只使用我的语言中的类型,并自动推断出要包含在生成的代码中的标题。

这是现在的语言示例:

class Car {
    std::string print()

    members:
        int i, j
        std::array<Wheel, 4> wheels
}

处理此代码时,我发现需要映射到其头文件的类型std::stringstd::array如何实现此映射?

是否可以公开提供数据库?我当然不想自己解析所有标题(我假设IDE是如何做的)。

除了支持标准库之外,能够支持其他库当然也很有用,但这只是次要目标。

1 个答案:

答案 0 :(得分:1)

有一些很好的参考资料可以用来构建自己的数据库。由于标准变化缓慢,您可以使用引用为它们生成映射。这是一个很好的c++ reference

很难简单地在头文件中搜索,因为它们通常是使用您不希望在代码中使用的后端位构建的,并且您无法区分它们。

如果我要构建它,我将使用标准库引用构建基本映射,而不是通过头文件解析;例如,在上面的Car示例中,您应#include <string>对吗?

如果要为给定的编译器解析头文件<string>,您可能会发现它只由后端位组成,后端又包含其他文件;

在g ++版本4.6 <string>中看起来像这样:

// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
// 2005, 2006, 2007, 2009, 2010, 2011
// Free Software Foundation, Inc.
// GPL version 3.1 or later ... etc...

#ifndef _GLIBCXX_STRING
#define _GLIBCXX_STRING 1

#pragma GCC system_header

#include <bits/c++config.h>
#include <bits/stringfwd.h>
#include <bits/char_traits.h>  // NB: In turn includes stl_algobase.h
#include <bits/allocator.h>
#include <bits/cpp_type_traits.h>
#include <bits/localefwd.h>    // For operators >>, <<, and getline.
#include <bits/ostream_insert.h>
#include <bits/stl_iterator_base_types.h>
#include <bits/stl_iterator_base_funcs.h>
#include <bits/stl_iterator.h>
#include <bits/stl_function.h> // For less
#include <ext/numeric_traits.h> 
#include <bits/stl_algobase.h> 
#include <bits/range_access.h>
#include <bits/basic_string.h>
#include <bits/basic_string.tcc> 

#endif /* _GLIBCXX_STRING */

现在问题变得明显了。例如<string>规范是std::ios_base? 有很多想法,我稍后可能会有其他一些想法。