/* * Copyright (C) 2007-2012 Xagasoft, All rights reserved. * * This file is part of the libgats library and is released under the * terms of the license contained in the file LICENSE. */ #include "treetogats.h" #include #include Gats::Object *treeToGats( QTreeWidgetItem *pRoot ) { QString sType = pRoot->text( 1 ); QByteArray baDat = pRoot->text( 2 ).toAscii(); if( sType == "int" ) { return new Gats::Integer( strtoll( baDat.constData(), NULL, 10 ) ); } else if( sType == "str" ) { return new Gats::String( baDat.constData(), baDat.size() ); } else if( sType == "float" ) { return new Gats::Float( strtod( baDat.constData(), NULL ) ); } else if( sType == "bool" ) { return new Gats::Boolean( baDat == "true" ); } else if( sType == "list" ) { Gats::List *pRet = new Gats::List(); for( int j = 0; j < pRoot->childCount(); j++ ) { pRet->append( treeToGats( pRoot->child( j ) ) ); } return pRet; } else if( sType == "dict" ) { Gats::Dictionary *pRet = new Gats::Dictionary(); for( int j = 0; j < pRoot->childCount(); j++ ) { QTreeWidgetItem *pChild = pRoot->child( j ); pRet->insert( pChild->text( 0 ).toAscii().constData(), treeToGats( pChild ) ); } return pRet; } throw Bu::ExceptionBase("Unhandled type found."); }