00001 /* Part of the culibs project, <http://www.eideticdew.org/culibs/>. 00002 * Copyright (C) 2005--2007 Petter Urkedal <urkedal@nbi.dk> 00003 * 00004 * This program is free software: you can redistribute it and/or modify 00005 * it under the terms of the GNU General Public License as published by 00006 * the Free Software Foundation, either version 3 of the License, or 00007 * (at your option) any later version. 00008 * 00009 * This program is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU General Public License 00015 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00016 */ 00017 00018 #ifndef CUOO_PROPERTIES_H 00019 #define CUOO_PROPERTIES_H 00020 00021 #include <cuoo/fwd.h> 00022 #include <cuoo/prop.h> 00023 00024 CU_BEGIN_DECLARATIONS 00025 /*!\defgroup cuoo_properties_h cuoo/properties.h: Predefined Properties 00026 * @{ \ingroup cuoo_mod */ 00027 00028 extern struct cuoo_prop cuooP_raw_c_name_prop; 00029 extern struct cuoo_prop cuooP_sref_prop; 00030 00031 /* The C name of a type or function, if defined. Contains only stored 00032 * names, so it will not synthesise names for constructs such as 00033 * pointers and prototypes. */ 00034 CU_SINLINE cuoo_prop_t cuoo_raw_c_name_prop() 00035 { return &cuooP_raw_c_name_prop; } 00036 00037 CU_SINLINE cu_idr_t cuoo_raw_c_name(cuex_t ex) 00038 { return (cu_idr_t)cuoo_prop_get_ptr(cuoo_raw_c_name_prop(), ex); } 00039 00040 /* Source references. */ 00041 CU_SINLINE cuoo_prop_t cuoo_sref_prop() 00042 { return &cuooP_sref_prop; } 00043 00044 CU_SINLINE cu_sref_t cuoo_sref(cuex_t ex) 00045 { return (cu_sref_t)cuoo_prop_get_ptr(cuoo_sref_prop(), ex); } 00046 00047 void cuoo_sref_push(cuex_t ex, cu_sref_t head); 00048 00049 cu_bool_t cuoo_raw_print(cuex_t ex, FILE *out) CU_ATTR_DEPRECATED; 00050 00051 /*!@}*/ 00052 CU_END_DECLARATIONS 00053 00054 #endif