summaryrefslogtreecommitdiff
path: root/src/exports.cc
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2014-12-14 12:11:30 -0500
committerAdrian Thurston <thurston@complang.org>2014-12-14 12:11:30 -0500
commit004cbe9e9c92932e62076f22a42f75e5332864af (patch)
tree70cb184435fa9dd2f544435106b71a9211baa871 /src/exports.cc
parent1ff234ec13503e4577a0ec8dce9727b2112bfc44 (diff)
downloadcolm-004cbe9e9c92932e62076f22a42f75e5332864af.tar.gz
eliminated more of the bools from ObjectField
Diffstat (limited to 'src/exports.cc')
-rw-r--r--src/exports.cc27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/exports.cc b/src/exports.cc
index 34c95f73..a50746d9 100644
--- a/src/exports.cc
+++ b/src/exports.cc
@@ -105,20 +105,11 @@ void Compiler::generateExports()
ObjFieldList *objFieldList = lel->objectDef->objFieldList;
for ( ObjFieldList::Iter ofi = *objFieldList; ofi.lte(); ofi++ ) {
ObjectField *field = ofi->value;
- if ( field->useOffset && field->typeRef != 0 ) {
+ if ( ( field->useOffset && field->typeRef != 0 ) || field->isRhsGet() ) {
UniqueType *ut = field->typeRef->resolveType( this );
- if ( ut != 0 && ut->typeId == TYPE_TREE ) {
+ if ( ut != 0 && ut->typeId == TYPE_TREE )
out << " " << ut->langEl->refName << " " << field->name << "();\n";
- }
- }
-
- if ( field->isRhsGet ) {
- UniqueType *ut = field->typeRef->resolveType( this );
-
- if ( ut != 0 && ut->typeId == TYPE_TREE ) {
- out << " " << ut->langEl->refName << " " << field->name << "();\n";
- }
}
}
}
@@ -206,18 +197,19 @@ void Compiler::generateExportsImpl()
UniqueType *ut = field->typeRef->resolveType( this );
if ( ut != 0 && ut->typeId == TYPE_TREE ) {
- out << ut->langEl->refName << " " << lel->declName << "::" << field->name <<
- "() { return " << ut->langEl->refName <<
- "( __prg, colm_get_attr( __tree, " << field->offset << ") ); }\n";
+ out << ut->langEl->refName << " " << lel->declName <<
+ "::" << field->name << "() { return " <<
+ ut->langEl->refName << "( __prg, colm_get_attr( __tree, " <<
+ field->offset << ") ); }\n";
}
}
- if ( field->isRhsGet ) {
+ if ( field->isRhsGet() ) {
UniqueType *ut = field->typeRef->resolveType( this );
if ( ut != 0 && ut->typeId == TYPE_TREE ) {
- out << ut->langEl->refName << " " << lel->declName << "::" << field->name <<
- "() { static int a[] = {";
+ out << ut->langEl->refName << " " << lel->declName <<
+ "::" << field->name << "() { static int a[] = {";
/* Need to place the array computing the val. */
out << field->rhsVal.length();
@@ -241,7 +233,6 @@ void Compiler::generateExportsImpl()
out << lel->repeatOf->refName << " " << lel->declName << "::" << " value"
"() { return " << lel->repeatOf->refName <<
"( __prg, colm_get_repeat_val( __tree ) ); }\n";
-
}
if ( lel->isList ) {