micropackage.cpp

00001 /***************************************************************************
00002  *   Copyright (C) 2003 by David Saxton                                    *
00003  *   david@bluehaze.org                                                    *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  ***************************************************************************/
00010 
00011 #include "micropackage.h"
00012 
00013 #include <kdebug.h>
00014 
00015 PicPin::PicPin()
00016 {
00017         pinID = "INVALID";
00018         type = PicPin::type_bidir;
00019         portName = "INVALID";
00020         portPosition = -1;
00021 }
00022 
00023 
00024 PicPin::PicPin( const QString &_pinID, PicPin::pin_type _type, const QString &_portName, int _portPosition )
00025 {
00026         pinID = _pinID;
00027         type = _type;
00028         portName = _portName;
00029         portPosition = _portPosition;
00030 }
00031 
00032 MicroPackage::MicroPackage( const int pinCount )
00033 {
00034         m_numPins = pinCount;
00035 }
00036 
00037 MicroPackage::~MicroPackage()
00038 {
00039 }
00040 
00041 void MicroPackage::assignPin( int pinPosition, PicPin::pin_type type, const QString& pinID, const QString& portName, int portPosition )
00042 {
00043         if ( m_picPinMap.find(pinPosition) != m_picPinMap.end() )
00044         {
00045                 kdError() << "PicDevice::assignBidirPin: Attempting to reset pin "<<pinPosition<<endl;
00046                 return;
00047         }
00048         if ( !m_portNames.contains(portName) && !portName.isEmpty() )
00049         {
00050                 m_portNames.append(portName);
00051                 m_portNames.sort();
00052         }
00053         
00054         m_picPinMap[pinPosition] = PicPin( pinID, type, portName, portPosition );
00055                 
00056 }
00057 
00058 PicPinMap MicroPackage::pins( uint pinType, const QString& portName )
00059 {
00060         if ( pinType == 0 ) pinType = (1<<30)-1;
00061         
00062         PicPinMap list;
00063         
00064         const PicPinMap::iterator picPinListEnd = m_picPinMap.end();
00065         for ( PicPinMap::iterator it = m_picPinMap.begin(); it != picPinListEnd; ++it )
00066         {
00067                 if ( (it.data().type & pinType) &&
00068                                         (portName.isEmpty() || it.data().portName == portName) )
00069                 {
00070                         list[it.key()] = it.data();
00071                 }
00072         }
00073         
00074         return list;
00075 }
00076 
00077 QStringList MicroPackage::pinIDs( uint pinType, const QString& portName )
00078 {
00079         if ( pinType == 0 ) pinType = (1<<30)-1;
00080         QStringList list;
00081 
00082         const PicPinMap::iterator picPinListEnd = m_picPinMap.end();
00083         for ( PicPinMap::iterator it = m_picPinMap.begin(); it != picPinListEnd; ++it )
00084         {
00085                 if ( (it.data().type & pinType) &&
00086                                         (portName.isEmpty() || it.data().portName == portName) )
00087                 {
00088                         list.append( it.data().pinID );
00089                 }
00090         }
00091         
00092         return list;
00093 }
00094 
00095 int MicroPackage::pinCount( uint pinType, const QString& portName )
00096 {
00097         if ( pinType == 0 ) pinType = (1<<30)-1;
00098         int count = 0;
00099         
00100         const PicPinMap::iterator picPinListEnd = m_picPinMap.end();
00101         for ( PicPinMap::iterator it = m_picPinMap.begin(); it != picPinListEnd; ++it )
00102         {
00103                 if ( (it.data().type & pinType) &&
00104                                         (portName.isEmpty() || it.data().portName == portName) ) count++;
00105         }
00106         
00107         return count;
00108 }
00109 

Generated on Tue May 8 17:05:31 2007 for KTechLab by  doxygen 1.5.1