2007-05-24 06:07:11 +02:00
|
|
|
/*
|
2019-09-24 00:17:31 +02:00
|
|
|
* Copyright (c) 2007-2019 Stephen Williams (steve@icarus.com)
|
2007-05-24 06:07:11 +02:00
|
|
|
*
|
|
|
|
|
* This source code is free software; you can redistribute it
|
|
|
|
|
* and/or modify it in source code form under the terms of the GNU
|
|
|
|
|
* General Public License as published by the Free Software
|
|
|
|
|
* Foundation; either version 2 of the License, or (at your option)
|
|
|
|
|
* any later version.
|
|
|
|
|
*
|
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
|
* along with this program; if not, write to the Free Software
|
2012-08-29 03:41:23 +02:00
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2007-05-24 06:07:11 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# include "pform_types.h"
|
2012-01-08 00:37:30 +01:00
|
|
|
|
|
|
|
|
data_type_t::~data_type_t()
|
|
|
|
|
{
|
|
|
|
|
}
|
2012-06-18 03:22:50 +02:00
|
|
|
|
2019-09-24 00:17:31 +02:00
|
|
|
PNamedItem::SymbolType data_type_t::symbol_type() const
|
|
|
|
|
{
|
|
|
|
|
return TYPE;
|
|
|
|
|
}
|
|
|
|
|
|
2012-06-18 03:22:50 +02:00
|
|
|
string_type_t::~string_type_t()
|
|
|
|
|
{
|
|
|
|
|
}
|
2012-08-03 05:14:55 +02:00
|
|
|
|
2022-03-12 21:10:19 +01:00
|
|
|
atom_type_t size_type (atom_type_t::INT, true);
|
2019-09-24 00:17:31 +02:00
|
|
|
|
|
|
|
|
PNamedItem::SymbolType enum_type_t::symbol_type() const
|
|
|
|
|
{
|
|
|
|
|
return ENUM;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PNamedItem::SymbolType class_type_t::symbol_type() const
|
|
|
|
|
{
|
|
|
|
|
return CLASS;
|
|
|
|
|
}
|
2022-04-23 15:05:53 +02:00
|
|
|
|
|
|
|
|
bool typedef_t::set_data_type(data_type_t *t)
|
|
|
|
|
{
|
|
|
|
|
if (data_type.get())
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
data_type.reset(t);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
2022-03-31 15:08:51 +02:00
|
|
|
|
|
|
|
|
bool typedef_t::set_basic_type(enum basic_type bt)
|
|
|
|
|
{
|
|
|
|
|
if (bt == ANY)
|
|
|
|
|
return true;
|
|
|
|
|
if (basic_type != ANY && bt != basic_type)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
basic_type = bt;
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::ostream& operator<< (std::ostream&out, enum typedef_t::basic_type bt)
|
|
|
|
|
{
|
|
|
|
|
switch (bt) {
|
|
|
|
|
case typedef_t::ANY:
|
|
|
|
|
out << "any";
|
|
|
|
|
break;
|
|
|
|
|
case typedef_t::ENUM:
|
|
|
|
|
out << "enum";
|
|
|
|
|
break;
|
|
|
|
|
case typedef_t::STRUCT:
|
|
|
|
|
out << "struct";
|
|
|
|
|
break;
|
|
|
|
|
case typedef_t::UNION:
|
|
|
|
|
out << "union";
|
|
|
|
|
break;
|
|
|
|
|
case typedef_t::CLASS:
|
|
|
|
|
out << "class";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return out;
|
|
|
|
|
}
|