vector<int> Set::ConvertToVector(Set& set2,TNode* root){
   vector<int>vec;
   if(root!=NULL)
    {
        if(root->left)
            ConvertToVector(set2,root->left);
        vec.push_back(root->data);
        if(root->right)
            ConvertToVector(set2,root->right);
    }
    return vec;
}
void SchedViz::Visit_Msg( const Semantics::Msg &message, TVTrace* trace ) {
	std::string messageName = message.name();
	DBGOUT("\tMessage: " << messageName << " -> ")

	// Create a new schedulable in the traceViz
	TVSchedulable* sched = new TVSchedulable( Message, messageName, true );
	// Determine the sending task
	Semantics::Transmits transmits = message.msgTransmitter();
	Semantics::Task sendingTask = transmits.sendingTask();
	// Determine the receiving tasks
	ReceivesSet receivesSet = message.msgListeners();

	// Loop through all of the scheduling info
	ExecInfoSet execSet = message.info();
	// Make sure there is one ( TTSchedule )
	if (execSet.size() == 1 ) {
		Semantics::ExecInfo execInfo = *execSet.begin();
		// Get the children of various types
		Semantics::Schedule schedChild = execInfo.Schedule_child();
		Semantics::Duration durationChild = execInfo.Duration_child();
		double duration = durationChild.exectimesecs();
		// See if child is a TTSchedule
		if ( Semantics::TTSchedule::meta == schedChild.type() ) {
			// Cast to a TTSchedule
			Semantics::TTSchedule ttSched = Semantics::TTSchedule::Cast( schedChild );
			// Grab the schedule info
			std::string schedule = ttSched.sched();
			// Convert the string to a nice vector
			std::vector< double > schedTimes = ConvertToVector( schedule );
			// Now create visual blocks for each sending
			std::vector< double >::iterator timesIter = schedTimes.begin();
			for ( ; timesIter != schedTimes.end(); timesIter++ ) {
				DBGOUT(*timesIter << " ")
				// Add an instance to the traceViz
				sched->AddInstance( trace, *timesIter, duration );
			}
		}
		// ExecInfo type not supported
		else {
			std::cout << "*** Message: ExecInfo type not currently supported.\n";
		}
	}
	// Debug some info
	else {
		std::cout << "*** Message: Not able to find appropriate ExecInfo.\n";
	}
	// Clean up the command output
	DBGOUT(std::endl)
}
void SchedViz::Visit_Task( const Semantics::Task &task, TVSuperblock *superblock ) {
	std::string taskName = task.name();
	DBGOUT("\tTask: " << taskName << " -> ")

	// Need to create a Task trace
	TVTrace* trace = superblock->AddTrace( taskName );
	// Create a new schedulable in the traceViz
	TVSchedulable* sched = new TVSchedulable( Task, taskName, false );

	// Loop through all of the scheduling info
	ExecInfoSet execSet = task.info();
	// Make sure there is one ( TTSchedule )
	if (execSet.size() == 1 ) {
		Semantics::ExecInfo execInfo = *execSet.begin();
		// Get the children of various types
		Semantics::Schedule schedChild = execInfo.Schedule_child();
		Semantics::Duration durationChild = execInfo.Duration_child();
		double duration = durationChild.exectimesecs();
		// See if child is a TTSchedule
		if ( Semantics::TTSchedule::meta == schedChild.type() ) {
			// Cast to a TTSchedule
			Semantics::TTSchedule ttSched = Semantics::TTSchedule::Cast( schedChild );
			// Grab the schedule info
			std::string schedule = ttSched.sched();
			// Convert the string to a nice vector
			std::vector< double > schedTimes = ConvertToVector( schedule );
			// Now create visual blocks for each invocation
			std::vector< double >::iterator timesIter = schedTimes.begin();
			for ( ; timesIter != schedTimes.end(); timesIter++ ) {
				// Add the task as a trace to the traceViz
				DBGOUT(*timesIter << " ")
				// Add an instance to the traceViz
				sched->AddInstance( trace, *timesIter, duration );
			}
		}
		// ExecInfo type not supported
		else {
			std::cout << "*** Task: ExecInfo type not currently supported.\n";
		}
	}
	// Debug some info
	else {
		std::cout << "*** Task: Not able to find appropriate ExecInfo.\n";
	}
	// Clean up the output
	DBGOUT(std::endl)
}
//---------------------------------------------------------------------------
std::vector<int> NeuralNet::GetConnections() const
{
  #define CHECK_ARCHITECTURE_165254
  #ifdef  CHECK_ARCHITECTURE_165254
  {
    //Read the original connection matrix
    const Array<int> a_copy = this->connectionMatrix;
    //I promise not to change this NeuralNet
    NeuralNet * n = const_cast<NeuralNet*>(this);
    const Array<int> a = n->getConnections();
    assert(a == a_copy);
  }
  #endif

  const std::vector<int> v = ConvertToVector(this->connectionMatrix);
  return v;
}
void SchedViz::Visit_OChan( const Semantics::OChan &oChan, TVSuperblock *superblock ) {
	std::string oChanName = oChan.name();
	DBGOUT("\tOChan: " << oChanName << " -> ")
	// Need to create a OChan trace
	TVTrace* trace = superblock->AddTrace( oChanName );
	// Create a new schedulable in the traceViz
	TVSchedulable* sched = new TVSchedulable( Task, oChanName, false );

	// Setup the peripheral schedule
	ExecInfoSet execInfoSet = oChan.info();
	ExecInfoSet::iterator execInfoIter = execInfoSet.begin();
	// Make sure there is one ( TTSchedule )
	if (execInfoSet.size() == 1 ) {
		Semantics::Schedule schedChild = execInfoIter->Schedule_child();
		Semantics::Duration durationChild = execInfoIter->Duration_child();
		double duration = durationChild.exectimesecs();
		// See if child is a TTSchedule
		if ( Semantics::TTSchedule::meta == schedChild.type() ) {
			// Cast to a TTSchedule
			Semantics::TTSchedule ttSched = Semantics::TTSchedule::Cast( schedChild );
			// Grab the schedule info
			std::string schedule = ttSched.sched();
			// Convert the string to a nice vector
			std::vector< double > schedTimes = ConvertToVector( schedule );
			// Now create visual blocks for each invocation
			std::vector< double >::iterator timesIter = schedTimes.begin();
			for ( ; timesIter != schedTimes.end(); timesIter++ ) {
				// Add the task as a trace to the traceViz
				DBGOUT(*timesIter << " ")
				// Add an instance to the traceViz
				sched->AddInstance( trace, *timesIter, duration );
			}
		}
		// ExecInfo type not supported
		else {
			std::cout << "*** Task: ExecInfo type not currently supported.\n";
		}
	}
	// Clean up the output
	DBGOUT(std::endl)
}
Example #6
0
vector<Triangle*> PlyFileParser::ParseFile(string fileName, double scale, Vector3D translation)
{
    VertexCache.clear();
    ModelCache.clear();
    QString qfileName = QString::fromStdString(fileName);
    QFile qFile (qfileName);
    qFile.open(QIODevice::ReadOnly);

    QRegularExpression elementTag = QRegularExpression("(element)\\s(.*?)\\s([0-9]*)");
    QRegularExpression propertyTag = QRegularExpression("(property)\\s(.*?)\\s(.*)");
    QRegularExpression dataLine = QRegularExpression("[0-9\\.\\-]*[\\s\\n]");
    QRegularExpression endHeader = QRegularExpression("end.*");
    
    queue<ElementInfo> elementTypes;
    
    bool finishedParsingHeader = false;
    
    //QTextStream qCout (stdout);
    
    while (!qFile.atEnd())
    {
        QString line = qFile.readLine();
        
        QRegularExpressionMatch elementMatches = elementTag.match(line);

        if(!finishedParsingHeader)
        {
            if (elementMatches.hasMatch())
            {
                ElementInfo elementInfo;
                
                elementInfo.elementName = elementMatches.captured(2).toStdString();
                elementInfo.elementCount = elementMatches.captured(3).toInt();
                
                elementTypes.push(elementInfo);
            }
            
            QRegularExpressionMatch propertyMatch = propertyTag.match(line);
            
            if (propertyMatch.hasMatch())
            {
                PropertyInfo propertyInfo;
                propertyInfo.type = propertyMatch.captured(2).toStdString();
                propertyInfo.name = propertyMatch.captured(3).toStdString();
                
                elementTypes.front().properties.push(propertyInfo);
            }
        }
        else
        {
            ParseDataLine(line, elementTypes.front(), scale, translation);

            elementTypes.front().elementCount--;
            
            if (elementTypes.front().elementCount == 0)
            {
                elementTypes.pop();
            }
        }
        
        if(line.contains(QRegularExpression("end.*")))
        {
            finishedParsingHeader = true;
        }
        
        //qCout << line;
        //qCout.flush();
    }
    
    qFile.close();
    
    return ConvertToVector(ModelCache);
}
//---------------------------------------------------------------------------
std::vector<double> NeuralNet::GetWeights() const
{
  const std::vector<double> v = ConvertToVector(this->weightMatrix);
  return v;
}