Example #1
0
    int resetVisited(Element *e){
        if (e->type() == "source"){
            Source *s = (Source *)e;
            s->pin()->visited(false);
        }
        else if (e->type() == "ground"){
            Ground *g = (Ground *)e;
            g->pin()->visited(false);
        }
        else if (e->type() == "resistor"){
            Resistor *r = (Resistor *)e;
            r->pin("p0")->visited(false);
            r->pin("p1")->visited(false);
        }
        else if (e->type() == "switch"){
            Switch *r = (Switch *)e;
            r->pin("p0")->visited(false);
            r->pin("p1")->visited(false);
            r->pin("in")->visited(false);
        }
        else if (e->type() == "bridge"){
            Bridge *b = (Bridge *)e;
            b->in()->visited(false);
            b->out()->visited(false);
        }
        else if (e->type() == "meter"){
            Meter *g = (Meter *)e;
            g->pin()->visited(false);
        }
        else{
            cerr << "Unknown element: "<< e->info()<<endl;
        }

        return 0;
    }
int main()
{
	float f = 3.4f; // f, s, l

	Meter aa = 3m; // operator""m(3)


	aa.print();
}
Example #3
0
	Meter *SimpleGui::addMeter(string name, float &value, float min, float max) {
		Meter *slider = (Meter*)INSTANTIATE_WITH_ID("meter", name);
		slider->pointToValue(&value);
		slider->min = min;
		slider->max = max;
		slider->width = SIMPLE_GUI_WIDTH;
		gui->addChild(slider);
		return slider;

	}
Example #4
0
void NetworkProjectionTests::NetworkSetupMeters()
{
	Meter* layerMeterOut = new Meter("TestProjectionsLayer1.csv", Storage::CSV);
	layerMeterOut->AttachPopulation(this->GetLayer(0));
	Meter* layerMeterOut2 = new Meter("TestProjectionsLayer2.csv", Storage::CSV);
	layerMeterOut2->AttachPopulation(this->GetLayer(1));

	this->AddMeter(layerMeterOut);
	this->AddMeter(layerMeterOut2);
}
Example #5
0
void XMMSSensor::setMaxValue( SensorParams *sp)
{
    Meter *meter;
    meter = sp->getMeter();
    QString f;
    f = sp->getParam("FORMAT");

    if ( f == "%full" )
        meter->setMax( 1 );

}
Example #6
0
void TestSimple_Exp1_F()
{

  OutputLine( L" -- Test Simple<S<T,1>,F> form. --" );

  volatile Scalar s = 0;

  clock_t const startraw = clock();
  for( int x = 0; x < nbloop; ++x )
  {
    
    volatile Scalar s0;
    volatile Scalar const s1 = 2.;
    volatile Scalar const s2 = s1;
    volatile Scalar const s3 = s1 + s2;
    volatile Scalar const s4 = s1 * 2.;
    volatile Scalar const s5 = 1. * 1000.;
    s0 = 2. * nbloop;
    s0 += s1;
    s0 -= s5;
    s += s0 + s1 + s2 + s3 + s4 + s5;

  }
  clock_t const endraw = clock();

  Meter m;

  clock_t const startunit = clock();
  for( int y = 0; y < nbloop; ++y )
  {

    Meter m0;
    Meter const m1( 2. );
    Meter const m2 = m1;
    Meter const m3 = m1 + m2;
    Meter const m4 = m1 * 2.;
    Meter const m5 = Kilometer( 1. );
    m0 = 2. * nbloop;
    m0 += m1;
    m0 -= m5;
    m += m0 + m1 + m2 + m3 + m4 + m5;

  }
  clock_t const endunit = clock();

  if( m.GetValue() != s )
  {
    OutputLine( L"Implementation error while processing test." );
  }

  PrintPerformance( endraw - startraw, endunit - startunit );

}
Example #7
0
void ControlToolBar::StopPlaying(bool stopStream /* = true*/)
{
   StopScrolling();

   AudacityProject *project = GetActiveProject();

   if(project) {
      // Let scrubbing code do some appearance change
      project->GetScrubber().StopScrubbing();
   }

   if (!CanStopAudioStream())
      return;

   mStop->PushDown();

   SetStop(false);
   if(stopStream)
      gAudioIO->StopStream();
   SetPlay(false);
   SetRecord(false);

   #ifdef EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT
      gAudioIO->AILADisable();
   #endif

   mPause->PopUp();
   mPaused=false;
   //Make sure you tell gAudioIO to unpause
   gAudioIO->SetPaused(mPaused);

   ClearCutPreviewTracks();

   mBusyProject = NULL;
   // So that we continue monitoring after playing or recording.
   // also clean the MeterQueues
   if( project ) {
      project->MayStartMonitoring();

      Meter *meter = project->GetPlaybackMeter();
      if( meter ) {
         meter->Clear();
      }
      
      meter = project->GetCaptureMeter();
      if( meter ) {
         meter->Clear();
      }
   }

   const auto toolbar = project->GetToolManager()->GetToolBar(ScrubbingBarID);
   toolbar->EnableDisableButtons();
}
Example #8
0
void SetNativePopulationValues(ObjectMap& object_map) {
    for (ObjectMap::iterator<> it = object_map.begin(); it != object_map.end(); ++it) {
        Meter* meter = it->GetMeter(METER_POPULATION);
        Meter* targetmax_meter = it->GetMeter(METER_TARGET_POPULATION);
        // only applies to unowned planets
        if (meter && targetmax_meter && it->Unowned()) {
            double r = RandZeroToOne();
            double factor = (0.1 < r) ? r : 0.1;
            meter->SetCurrent(targetmax_meter->Current() * factor);
        }
    }
}
Example #9
0
void DiskSensor::setMaxValue( SensorParams *sp )
{
    Meter *meter;
    meter = sp->getMeter();
    const TQString mntPt = sp->getParam( "MOUNTPOINT" );

    TQString f;
    f = sp->getParam("FORMAT");
    if( f == "%fp" || f == "%up" )
        meter->setMax( 100 );
    else
        meter->setMax( getTotalSpace( mntPt ) / 1024 );
}
void TestMathematicalBinaryOperators()
{
  Kilometer const unit_10_kilometer( 10. );
  Kilometer const unit_9_kilometer( 9. );

  Hectometer const unit_200_hectometer = unit_10_kilometer + unit_10_kilometer;
  Assert( fequal( unit_200_hectometer.GetValue(), 200. ) );

  Hectometer const unit_10_hectometer = unit_10_kilometer - unit_9_kilometer;
  Assert( fequal( unit_10_hectometer.GetValue(), 10. ) );

  Meter const unit_31000_meter = unit_10_kilometer + unit_200_hectometer + unit_10_hectometer;
  Assert( fequal( unit_31000_meter.GetValue(), 31000. ) );

  Scalar const unit_20_ = unit_200_hectometer / unit_10_hectometer;
  Assert( fequal( unit_20_, 20. ) );

  Scalar const unit_2_ = unit_200_hectometer / unit_10_kilometer;
  Assert( fequal( unit_2_, 2. ) );
}
Example #11
0
void ProgramSensor::processExited(TDEProcess *)
{
    int lineNbr;
    SensorParams *sp;
    Meter *meter;
    TQValueVector<TQString> lines;
    TQStringList stringList = TQStringList::split('\n',sensorResult,true);
    TQStringList::ConstIterator end( stringList.end() );
    for ( TQStringList::ConstIterator it = stringList.begin(); it != end; ++it )
    {
        lines.push_back(*it);
    }

    int count = (int) lines.size();
    TQObjectListIt it( *objList );
    while (it != 0)
    {
        sp = (SensorParams*)(*it);
        meter = sp->getMeter();
        if( meter != 0)
        {
            lineNbr = (sp->getParam("LINE")).toInt();
            if ( lineNbr >= 1  && lineNbr <=  (int) count )
            {
                meter->setValue(lines[lineNbr-1]);
            }
            if ( -lineNbr >= 1 && -lineNbr <= (int) count )
            {
                meter->setValue(lines[count+lineNbr]);
            }
            if (lineNbr == 0)
            {
                meter->setValue(sensorResult);
            }
        }
        ++it;
    }

    sensorResult = "";
}
Example #12
0
void ControlToolBar::StopPlaying(bool stopStream /* = true*/)
{
   mStop->PushDown();

   SetStop(false);
   if(stopStream)
      gAudioIO->StopStream();
   SetPlay(false);
   SetRecord(false);

   #ifdef AUTOMATED_INPUT_LEVEL_ADJUSTMENT
      gAudioIO->AILADisable();
   #endif

   mPause->PopUp();
   mPaused=false;
   //Make sure you tell gAudioIO to unpause
   gAudioIO->SetPaused(mPaused);

   ClearCutPreviewTracks();

   mBusyProject = NULL;
   // So that we continue monitoring after playing or recording.
   // also clean the MeterQueues
   AudacityProject *project = GetActiveProject();
   if( project ) {
      project->MayStartMonitoring();

      Meter *meter = project->GetPlaybackMeter();
      if( meter ) {
         meter->Clear();
      }
      
      meter = project->GetCaptureMeter();
      if( meter ) {
         meter->Clear();
      }
   }
}
Example #13
0
Meter* Meter::create(LayerContract * layer) {
	Meter * meter = new Meter(layer);
	if (meter && meter->initWithSpriteFrameName("meter.png")) {
		meter->setRadius(meter->boundingBox().size.height * 0.5f);
		meter->setPosition(ccp(layer->getScreenSize().width * 0.8375f, layer->getScreenSize().height * 0.075f));
		layer->getGameBatchNode()->addChild(meter, kForeground, sprideIdRocket);
		meter->initSprite();
		meter->setVisible(false);
		return meter;
	}
	CC_SAFE_DELETE(meter);
	return NULL;
}
void TestConstructors()
{
  Meter const default_constructor;
  Assert( fequal( default_constructor.GetValue(), 0. ) );

  Meter const explicit_constructor_with_scalar( 2. );
  Assert( fequal( explicit_constructor_with_scalar.GetValue(), 2. ) );

  Kilometer const one_kilometer( 1. );
  Meter unit_1000_meter = one_kilometer;
  Assert( fequal( unit_1000_meter.GetValue(), 1000. ) );

  Foot const one_foot( 1. );
  Meter const _dot_3048_meter = (Inch)one_foot;
  Assert( fequal( _dot_3048_meter.GetValue(), .3048 ) );

  Meter const copy_constructor = explicit_constructor_with_scalar;
  Assert( fequal( copy_constructor.GetValue(), 2. ) );
}
Example #15
0
void XMMSSensor::update()
{
    QString format;
    SensorParams *sp;
    Meter *meter;
    QObjectListIt it( *objList );

#ifdef HAVE_XMMS

    int pos;
    QString title;
    int songLength = 0;
    int currentTime = 0;
    bool isPlaying = false;
    bool isRunning = xmms_remote_is_running(0);

    if( isRunning )
    {
        isPlaying = xmms_remote_is_playing(0);
        pos = xmms_remote_get_playlist_pos(0);
        qDebug("unicode start");
        title = codec->toUnicode( QCString( xmms_remote_get_playlist_title( 0, pos ) )  );
        qDebug("unicode end");
        if( title.isEmpty() )
            title = "XMMS";

        qDebug("Title: %s", title.ascii());
        songLength = xmms_remote_get_playlist_time( 0, pos );
        currentTime = xmms_remote_get_output_time( 0 );
    }
#endif // HAVE_XMMS

    while (it != 0)
    {
        sp = (SensorParams*)(*it);
        meter = sp->getMeter();

#ifdef HAVE_XMMS

        if( isRunning )
        {

            format = sp->getParam("FORMAT");


            if (format.length() == 0 )
            {
                format = "%title %time / %length";
            }

            if( format == "%ms" )
            {
                meter->setMax( songLength );
                meter->setValue( currentTime );
            }
            else

                if ( format == "%full" )
                {
                    meter->setValue( 1 );
                }
                else

                {


                    format.replace( QRegExp("%title", false), title );

                    format.replace( QRegExp("%length", false), QTime( 0,0,0 ).
                                    addMSecs( songLength )
                                    .toString( "h:mm:ss" ) );

                    format.replace( QRegExp("%time", false), QTime( 0,0,0 ).
                                    addMSecs( currentTime )
                                    .toString( "h:mm:ss" ) );

                    if( isPlaying  )
                    {
                        format.replace( QRegExp("%remain", false), QTime( 0,0,0 ).
                                        addMSecs( songLength )
                                        .addMSecs(-currentTime )
                                        .toString( "h:mm:ss" ) );
                    }

                    else
                    {
                        format.replace( QRegExp("%remain", false), QTime( 0,0,0 ).toString("h:mm:ss" ) );
                    }
                    meter->setValue(format);
                }
        }
        else
#endif // HAVE_XMMS

        {
            meter->setValue("");
        }
        ++it;

    }

}
Example #16
0
void DiskSensor::processExited(TDEProcess *)
{
    TQStringList stringList = TQStringList::split('\n',sensorResult);
    sensorResult = "";
    TQStringList::Iterator it = stringList.begin();
    //TQRegExp rx( "^(/dev/).*(/\\S*)$");
    TQRegExp rx( ".*\\s+(/\\S*)$");

    while( it != stringList.end())
    {
        rx.search( *it );
        if ( !rx.cap(0).isEmpty())
        {
            mntMap[rx.cap(1)] = *it;
        }
        it++;
    }
    stringList.clear();

    TQString format;
    TQString mntPt;
    SensorParams *sp;
    Meter *meter;

    TQObjectListIt lit( *objList );
    while (lit != 0)
    {
        sp = (SensorParams*)(*lit);
        meter = sp->getMeter();
        format = sp->getParam("FORMAT");
        mntPt = sp->getParam("MOUNTPOINT");
        if (mntPt.length() == 0)
            mntPt="/";

        if (format.length() == 0 )
        {
            format = "%u";
        }
        format.replace( TQRegExp("%fp", false),TQString::number(getPercentFree(mntPt)));
        format.replace( TQRegExp("%fg",false),
                        TQString::number(getFreeSpace(mntPt)/(1024*1024)));
        format.replace( TQRegExp("%fkb",false),
                        TQString::number(getFreeSpace(mntPt)*8) );
        format.replace( TQRegExp("%fk",false),
                        TQString::number(getFreeSpace(mntPt)) );
        format.replace( TQRegExp("%f", false),TQString::number(getFreeSpace(mntPt)/1024));
        
        format.replace( TQRegExp("%up", false),TQString::number(getPercentUsed(mntPt)));
        format.replace( TQRegExp("%ug",false),
                        TQString::number(getUsedSpace(mntPt)/(1024*1024)));
        format.replace( TQRegExp("%ukb",false),
                        TQString::number(getUsedSpace(mntPt)*8) );
        format.replace( TQRegExp("%uk",false),
                        TQString::number(getUsedSpace(mntPt)) );
        format.replace( TQRegExp("%u", false),TQString::number(getUsedSpace(mntPt)/1024));

        format.replace( TQRegExp("%tg",false),
                        TQString::number(getTotalSpace(mntPt)/(1024*1024)));
        format.replace( TQRegExp("%tkb",false),
                        TQString::number(getTotalSpace(mntPt)*8));
        format.replace( TQRegExp("%tk",false),
                        TQString::number(getTotalSpace(mntPt)));
        format.replace( TQRegExp("%t", false),TQString::number(getTotalSpace(mntPt)/1024));
        meter->setValue(format);
        ++lit;
    }
    if ( init == 1 )
    {
        emit initComplete();
        init = 0;
    }
}
void SeeClassDefinition()
{
  OutputLine( L"-- Meter --" );

  Femtometer const femtometer;
  OutputLine( femtometer.GetSuffix() );

  Picometer const picometer;
  OutputLine( picometer.GetSuffix() );

  Nanometer const nanometer;
  OutputLine( nanometer.GetSuffix() );

  Micrometer const micrometer;
  OutputLine( micrometer.GetSuffix() );

  Millimeter const millimeter;
  OutputLine( millimeter.GetSuffix() );

  Centimeter const centimeter;
  OutputLine( centimeter.GetSuffix() );

  Decimeter const decimeter;
  OutputLine( decimeter.GetSuffix() );

  Meter const meter;
  OutputLine( meter.GetSuffix() );

  Dekameter const dekameter;
  OutputLine( dekameter.GetSuffix() );

  Hectometer const hectometer;
  OutputLine( hectometer.GetSuffix() );

  Kilometer const kilometer;
  OutputLine( kilometer.GetSuffix() );

  Megameter const megameter;
  OutputLine( megameter.GetSuffix() );

  Gigameter const gigameter;
  OutputLine( gigameter.GetSuffix() );

  Terameter const terameter;
  OutputLine( terameter.GetSuffix() );

  Petameter const petameter;
  OutputLine( petameter.GetSuffix() );

  Mil const mil;
  OutputLine( Mil::Suffix() );
  Assert( mil.GetSuffix() == Mil::Suffix() );
  Assert( mil.GetSISuffix() != Mil::Suffix() );

  Inch const inch;
  OutputLine( Inch::Suffix() );
  Assert( inch.GetSuffix() == Inch::Suffix() );
  Assert( inch.GetSISuffix() != Inch::Suffix() );

  Foot const foot;
  OutputLine( Foot::Suffix() );
  Assert( foot.GetSuffix() == Foot::Suffix() );
  Assert( foot.GetSISuffix() != Foot::Suffix() );
}
Example #18
0
void NoatunSensor::update()
{
    TQString format;
    SensorParams *sp;
    Meter *meter;
    TQObjectListIt it( *objList );

    TQString title;
    int songLength = 0;
    int currentTime = 0;

    bool running = isRunning();

    if( running )
    {
        title = getTitle();

       if( title.isEmpty() )
            title = "Noatun";
        currentTime = getTime();
        if( currentTime == -1 )
            currentTime = 0;

        songLength = getLength();
        if( songLength == -1 )
            songLength = 0;
    }


    while (it != 0)
    {
        sp = (SensorParams*)(*it);
        meter = sp->getMeter();

        if( running )
        {

            format = sp->getParam("FORMAT");
            if (format.length() == 0 )
            {
                format = "%title %time / %length";
            }

            if( format.lower() == "%ms" )
            {
                meter->setMax( songLength );
                meter->setValue( currentTime );
            }
            else
                if ( format.lower() == "%full" )
                {
                    meter->setValue( 1 );
                }
                else

                {
                   format.replace( TQRegExp("%title", false), title );
		   format.replace( TQRegExp("%id", false), noatunID );

                    format.replace( TQRegExp("%length", false), TQTime( 0,0,0 ).
                                    addMSecs( songLength )
                                    .toString( "h:mm:ss" ) );

                    format.replace( TQRegExp("%time", false), TQTime( 0,0,0 ).
                                    addMSecs( currentTime )
                                    .toString( "h:mm:ss" ) );
                    format.replace( TQRegExp("%remain", false), TQTime( 0,0,0 ).
                                    addMSecs( songLength )
                                    .addMSecs(-currentTime )
                                    .toString( "h:mm:ss" ) );

                    meter->setValue(format);
                }
        }
        else

        {
            meter->setValue("");
        }
        ++it;


    }

}
Example #19
0
/*
** Gets the value of a section variable. Returns true if strValue is set.
** The selector is stripped from strVariable.
**
*/
bool ConfigParser::GetSectionVariable(std::wstring& strVariable, std::wstring& strValue)
{
	size_t colonPos = strVariable.find_last_of(L':');
	if (colonPos == std::wstring::npos)
	{
		return false;
	}

	const std::wstring selector = strVariable.substr(colonPos + 1);
	const WCHAR* selectorSz = selector.c_str();
	strVariable.resize(colonPos);

	bool isKeySelector = (!selector.empty() && iswalpha(selectorSz[0]));

	if (isKeySelector)
	{
		// [Meter:X], [Meter:Y], [Meter:W], [Meter:H]
		Meter* meter = m_Skin->GetMeter(strVariable);
		if (meter)
		{
			WCHAR buffer[32];
			if (_wcsicmp(selectorSz, L"X") == 0)
			{
				_itow_s(meter->GetX(), buffer, 10);
			}
			else if (_wcsicmp(selectorSz, L"Y") == 0)
			{
				_itow_s(meter->GetY(), buffer, 10);
			}
			else if (_wcsicmp(selectorSz, L"W") == 0)
			{
				_itow_s(meter->GetW(), buffer, 10);
			}
			else if (_wcsicmp(selectorSz, L"H") == 0)
			{
				_itow_s(meter->GetH(), buffer, 10);
			}
			else
			{
				return false;
			}

			strValue = buffer;
			return true;
		}
	}

	// Number: [Measure:], [Measure:dec]
	// Percentual: [Measure:%], [Measure:%, dec]
	// Scale: [Measure:/scale], [Measure:/scale, dec]
	// Max/Min: [Measure:MaxValue], [Measure:MaxValue:/scale, dec] ('%' cannot be used)
	// EscapeRegExp: [Measure:EscapeRegExp] (Escapes regular expression syntax, used for 'IfMatch')
	// EncodeUrl: [Measure:EncodeUrl] (Escapes URL reserved characters)
	// TimeStamp: [TimeMeasure:TimeStamp] (ONLY for Time measures, returns the Windows timestamp of the measure)
	enum class ValueType
	{
		Raw,
		Percentual,
		Max,
		Min,
		EscapeRegExp,
		EncodeUrl,
		TimeStamp
	} valueType = ValueType::Raw;

	if (isKeySelector)
	{
		if (_wcsicmp(selectorSz, L"MaxValue") == 0)
		{
			valueType = ValueType::Max;
		}
		else if (_wcsicmp(selectorSz, L"MinValue") == 0)
		{
			valueType = ValueType::Min;
		}
		else if (_wcsicmp(selectorSz, L"EscapeRegExp") == 0)
		{
			valueType = ValueType::EscapeRegExp;
		}
		else if (_wcsicmp(selectorSz, L"EncodeUrl") == 0)
		{
			valueType = ValueType::EncodeUrl;
		}
		else if (_wcsicmp(selectorSz, L"TimeStamp") == 0)
		{
			valueType = ValueType::TimeStamp;
		}
		else
		{
			return false;
		}

		selectorSz = L"";
	}
	else
	{
		colonPos = strVariable.find_last_of(L':');
		if (colonPos != std::wstring::npos)
		{
			do
			{
				const WCHAR* keySelectorSz = strVariable.c_str() + colonPos + 1;

				if (_wcsicmp(keySelectorSz, L"MaxValue") == 0)
				{
					valueType = ValueType::Max;
				}
				else if (_wcsicmp(keySelectorSz, L"MinValue") == 0)
				{
					valueType = ValueType::Min;
				}
				else
				{
					// Section name contains ':' ?
					break;
				}

				strVariable.resize(colonPos);
			}
			while (0);
		}
	}

	Measure* measure = m_Skin->GetMeasure(strVariable);
	if (measure)
	{
		if (valueType == ValueType::EscapeRegExp)
		{
			strValue = measure->GetStringValue();
			StringUtil::EscapeRegExp(strValue);
			return true;
		}
		else if (valueType == ValueType::EncodeUrl)
		{
			strValue = measure->GetStringValue();
			StringUtil::EncodeUrl(strValue);
			return true;
		}
		else if (measure->GetTypeID() == TypeID<MeasureTime>() && valueType == ValueType::TimeStamp)
		{
			MeasureTime* time = (MeasureTime*)measure;
			strValue = std::to_wstring(time->GetTimeStamp().QuadPart / 10000000);
			return true;
		}

		int scale = 1;

		const WCHAR* decimalsSz = wcschr(selectorSz, L',');
		if (decimalsSz)
		{
			++decimalsSz;
		}

		if (*selectorSz == L'%')  // Percentual
		{
			if (valueType == ValueType::Max || valueType == ValueType::Min)
			{
				// '%' cannot be used with Max/Min values.
				return false;
			}

			valueType = ValueType::Percentual;
		}
		else if (*selectorSz == L'/')  // Scale
		{
			errno = 0;
			scale = _wtoi(selectorSz + 1);
			if (errno == EINVAL || scale == 0)
			{
				// Invalid scale value.
				return false;
			}
		}
		else
		{
			if (decimalsSz)
			{
				return false;
			}

			decimalsSz = selectorSz;
		}

		const double value =
			(valueType == ValueType::Percentual) ? measure->GetRelativeValue() * 100.0 :
			(valueType == ValueType::Max)        ? measure->GetMaxValue() / scale :
			(valueType == ValueType::Min)        ? measure->GetMinValue() / scale :
			                                       measure->GetValue() / scale;
		int decimals = 10;
		if (decimalsSz)
		{
			while (iswspace(*decimalsSz)) ++decimalsSz;

			if (*decimalsSz)
			{
				decimals = _wtoi(decimalsSz);
				decimals = max(0, decimals);
				decimals = min(32, decimals);
			}
			else
			{
				decimalsSz = nullptr;
			}
		}

		WCHAR format[32];
		WCHAR buffer[128];
		_snwprintf_s(format, _TRUNCATE, L"%%.%if", decimals);
		int bufferLen = _snwprintf_s(buffer, _TRUNCATE, format, value);
			
		if (!decimalsSz)
		{
			// Remove trailing zeros if decimal count was not specified.
			measure->RemoveTrailingZero(buffer, bufferLen);
			bufferLen = (int)wcslen(buffer);
		}

		strValue.assign(buffer, bufferLen);
		return true;
	}
	
	return false;
}
Example #20
0
// Switching
void NetworkTests::NetworkTestSwitching(int mpiRank, int mpiSize)
{
	int nrHypercolumns = 5;
	int nrRateUnits = 10;
	int nrItems = 2;

	DataSources sources;
	srand(2);
	vector<vector<float> > data = sources.GetRandomHCs(nrHypercolumns,nrRateUnits,nrItems);//sources.GetRandom(size,0.1,nrItems);
	
	// setup recurrent network

	Network* network = new Network();
	network->SetMPIParameters(mpiRank,mpiSize);

	PopulationColumns* layer1 = new PopulationColumns(network,nrHypercolumns,nrRateUnits,PopulationColumns::Graded);
	FullConnectivity* full = new FullConnectivity();//FullConnectivity(false,"");

	layer1->AddPre(layer1,full);
	network->AddPopulation(layer1);

	ProjectionModifierBcpnnOnline* eBcpnn = new ProjectionModifierBcpnnOnline();
	ProjectionModifierTriesch* eTriesch = new ProjectionModifierTriesch();
	ProjectionModifierHebbSimple* eHebb = new ProjectionModifierHebbSimple();
	ProjectionModifierBCM* eBCM = new ProjectionModifierBCM();

	full->AddProjectionsEvent(eBcpnn);		// incl adding transfer fcn
	//full->AddProjectionsEvent(eTriesch);		// incl adding transfer fcn
	//full->AddProjectionsEvent(eHebb);
	//full->AddProjectionsEvent(eBCM);

	PopulationModifierAdaptation2* eAdaptation = new PopulationModifierAdaptation2();
	//eAdaptation->SetParameters(0,0); 		// adaptation off initially	
	eAdaptation->SetParameters(0); 		// adaptation off initially
	layer1->AddPopulationModifier(eAdaptation);
	
	WTA* wta = new WTA();
	layer1->AddPopulationModifier(wta);//wta);//softmax);

	network->Initialize();
	eAdaptation->Initm_Aj(1); // initialize m_Aj vector

	// set up meters
	char* name1 = new char[30];
	char* name2 = new char[30];
	char* name3 = new char[30];
	sprintf(name1,"Projections_n%d.csv",mpiRank);
	sprintf(name2,"Layer1ActivityWTA.csv");
	sprintf(name3,"Layer1Activity.csv");

	Meter* connMeter = new Meter(name1, Storage::CSV);
	connMeter->AttachProjection(layer1->GetIncomingProjections()[0],0);
	network->AddMeter(connMeter);

	Meter* layerMeter = new Meter(name3, Storage::CSV);
	layerMeter->AttachPopulation(layer1);
	network->AddMeter(layerMeter);

	Meter* eventLayerMeter=new Meter(name2, Storage::CSV);
	eventLayerMeter->AttachPopulationModifier(eAdaptation);
	network->AddMeter(eventLayerMeter);

	int nrIters = 10;
	int stimuliOn = 10;

	layer1->SwitchOnOff(false); // fixed input

	// store patterns
	for(unsigned int i=0;i<nrIters;i++)
	{
		for(unsigned int j=0;j<data.size();j++)
		{
			for(unsigned int k=0;k<stimuliOn; k++)
			{
				layer1->SetValuesAll(data[j]);
				network->Simulate();
			}
		}
	}


	// random stimulation
	vector<float> randVec(data[0].size());
	for(unsigned int i=0;i<randVec.size();i++)
		randVec[i] = 0.5f*float(rand()/RAND_MAX);

	// mixture
	vector<float> mixVec(data[0].size());
	for(unsigned int i=0;i<mixVec.size();i++)
		mixVec[i] = 1*(data[0][i] + data[1][i]);

	layer1->SetValuesAll(mixVec);//randVec);

	// Test without adaptation turned on

	layer1->SwitchOnOff(true);
	//eHebb->SetEtaHebb(0.0);
	eBCM->SwitchOnOff(false);
	eBcpnn->SwitchOnOff(false);

	for(int i=0;i<nrIters;i++)
	{
		for(unsigned int j=0;j<data.size();j++)
		{
			layer1->SetValuesAll(mixVec);//data[j]);
			for(int k=0;k<stimuliOn; k++)
			{	
				network->Simulate();
			}
		}
	}

	// Turn on adaptation
	//eAdaptation->SetParameters(10,0.2);
	eAdaptation->SetParameters(0.2f);

	for(int i=0;i<nrIters;i++)
	{
		for(unsigned int j=0;j<data.size();j++)
		{
			layer1->SetValuesAll(mixVec);
			for(int k=0;k<stimuliOn; k++)
			{	
				network->Simulate();
			}
		}
	}

	network->RecordAll();

	// check switching
}
Example #21
0
/*
** Gets the value of a section variable. Returns true if strValue is set.
** The selector is stripped from strVariable.
**
*/
bool ConfigParser::GetSectionVariable(std::wstring& strVariable, std::wstring& strValue)
{
    size_t colonPos = strVariable.find_last_of(L':');
    if (colonPos == std::wstring::npos)
    {
        return false;
    }

    const std::wstring selector = strVariable.substr(colonPos + 1);
    const WCHAR* selectorSz = selector.c_str();
    strVariable.resize(colonPos);

    bool isKeySelector = (!selector.empty() && iswalpha(selectorSz[0]));

    if (isKeySelector)
    {
        // [Meter:X], [Meter:Y], [Meter:W], [Meter:H]
        Meter* meter = m_MeterWindow->GetMeter(strVariable);
        if (meter)
        {
            WCHAR buffer[32];
            if (_wcsicmp(selectorSz, L"X") == 0)
            {
                _itow_s(meter->GetX(), buffer, 10);
            }
            else if (_wcsicmp(selectorSz, L"Y") == 0)
            {
                _itow_s(meter->GetY(), buffer, 10);
            }
            else if (_wcsicmp(selectorSz, L"W") == 0)
            {
                _itow_s(meter->GetW(), buffer, 10);
            }
            else if (_wcsicmp(selectorSz, L"H") == 0)
            {
                _itow_s(meter->GetH(), buffer, 10);
            }
            else
            {
                return false;
            }

            strValue = buffer;
            return true;
        }
    }

    // Number: [Measure:], [Measure:dec]
    // Percentual: [Measure:%], [Measure:%, dec]
    // Scale: [Measure:/scale], [Measure:/scale, dec]
    // Max/Min: [Measure:MaxValue], [Measure:MaxValue:/scale, dec] ('%' cannot be used)
    enum VALUETYPE
    {
        RAW        = 0,
        PERCENTUAL = 1,
        MAX        = 2,
        MIN        = 3
    } valueType = RAW;

    if (isKeySelector)
    {
        if (_wcsicmp(selectorSz, L"MaxValue") == 0)
        {
            valueType = MAX;
        }
        else if (_wcsicmp(selectorSz, L"MinValue") == 0)
        {
            valueType = MIN;
        }
        else
        {
            return false;
        }

        selectorSz = L"";
    }
    else
    {
        colonPos = strVariable.find_last_of(L':');
        if (colonPos != std::wstring::npos)
        {
            do
            {
                const WCHAR* keySelectorSz = strVariable.c_str() + colonPos + 1;

                if (_wcsicmp(keySelectorSz, L"MaxValue") == 0)
                {
                    valueType = MAX;
                }
                else if (_wcsicmp(keySelectorSz, L"MinValue") == 0)
                {
                    valueType = MIN;
                }
                else
                {
                    // Section name contains ':' ?
                    break;
                }

                strVariable.resize(colonPos);
            }
            while (0);
        }
    }

    Measure* measure = m_MeterWindow->GetMeasure(strVariable);
    if (measure)
    {
        int scale = 1;

        const WCHAR* decimalsSz = wcschr(selectorSz, L',');
        if (decimalsSz)
        {
            ++decimalsSz;
        }

        if (*selectorSz == L'%')  // Percentual
        {
            if (valueType == MAX || valueType == MIN)  // '%' cannot be used with MAX/MIN value
            {
                return false;
            }

            valueType = PERCENTUAL;
        }
        else if (*selectorSz == L'/')  // Scale
        {
            errno = 0;
            scale = _wtoi(selectorSz + 1);
            if (errno == EINVAL || scale == 0)  // Invalid scale value
            {
                return false;
            }
        }
        else
        {
            if (decimalsSz)
            {
                return false;
            }

            decimalsSz = selectorSz;
        }

        double value = (valueType == PERCENTUAL) ? measure->GetRelativeValue() * 100.0
                       : (valueType == MAX) ? measure->GetMaxValue() / scale
                       : (valueType == MIN) ? measure->GetMinValue() / scale
                       : measure->GetValue() / scale;
        int decimals = 10;

        if (decimalsSz)
        {
            while (iswspace(*decimalsSz)) ++decimalsSz;

            if (*decimalsSz)
            {
                decimals = _wtoi(decimalsSz);
                decimals = max(0, decimals);
                decimals = min(32, decimals);
            }
            else
            {
                decimalsSz = nullptr;
            }
        }

        WCHAR format[32];
        WCHAR buffer[128];
        _snwprintf_s(format, _TRUNCATE, L"%%.%if", decimals);
        int bufferLen = _snwprintf_s(buffer, _TRUNCATE, format, value);

        if (!decimalsSz)
        {
            // Remove trailing zeros if decimal count was not specified.
            measure->RemoveTrailingZero(buffer, bufferLen);
            bufferLen = (int)wcslen(buffer);
        }

        strValue.assign(buffer, bufferLen);
        return true;
    }

    return false;
}
Example #22
0
void NetworkTests::NetworkTestTrieschAndFoldiak(int mpiRank, int mpiSize)
{
	DataSources dataSources;

	int sizeX = 5;//10;
	int sizeY = 5;//10;
	int nrItems = 2500;

	bool isTriesch = true;

	Network* network = new Network();
	network->SetMPIParameters(mpiRank,mpiSize);

	int nrInputHypercolumns = 1;
	int nrInputRateUnits = sizeX*sizeY;
	int nrOutputHypercolumns = 2;
	int nrOutputRateUnits = 5;//sizeX+sizeY;

	PopulationColumns* layer1 = new PopulationColumns(network,nrInputHypercolumns,nrInputRateUnits,PopulationColumns::GradedThresholded);
	PopulationColumns* layer2 = new PopulationColumns(network,nrOutputHypercolumns,nrOutputRateUnits,PopulationColumns::GradedThresholded);

	network->AddPopulation(layer1);
	network->AddPopulation(layer2);

	FullConnectivity* full = new FullConnectivity();
	FullConnectivity* full2;
	FullConnectivityNoLocalHypercolumns* full3NoLocal;

	layer2->AddPre(layer1,full);

	bool thresholded = true;
	ProjectionModifierTriesch* eTriesch = new ProjectionModifierTriesch(0.002f,0.2f,0.05f,1.0f/float(nrOutputRateUnits), thresholded);//0.05,0.2,0.005,1.0/(float)nrOutputRateUnits, thresholded);

	if(isTriesch)
		full->AddProjectionsEvent(eTriesch);

	//float eta1 = 3, eta2= 2.4, eta3 = 1.5, alpha = 0.005, beta = 200;
	float eta1 = 0.5, eta2= 0.02, eta3 = 0.02, alpha = 0.0005, beta = 10;//alpha = 1.0/8.0, beta = 10;
	bool lateral = false;

	ProjectionModifierFoldiak* eFoldiak = new ProjectionModifierFoldiak(eta1, eta2, eta3, alpha, beta, lateral);
	lateral = true;
	alpha = 0.75;
	ProjectionModifierFoldiak* eFoldiakLateral = new ProjectionModifierFoldiak(eta1, eta2, eta3, alpha, beta, lateral);
	//ProjectionModifierBCM* eBCM = new ProjectionModifierBCM(0.1,0.05,20);

	if(!isTriesch)
	{
		full2 = new FullConnectivity();
		layer2->AddPre(layer2,full2);
		full->AddProjectionsEvent(eFoldiak);
		full2->AddProjectionsEvent(eFoldiakLateral);
	}
	else
	{
		full3NoLocal = new FullConnectivityNoLocalHypercolumns();
		//full3NoLocal->AddProjectionsEvent(eBCM);
		full3NoLocal->AddProjectionsEvent(eFoldiakLateral);
		layer2->AddPre(layer2,full3NoLocal);
	}

	// implements N here
	SoftMax* softmax = new SoftMax(SoftMax::WTAThresholded,0.5);//(10.0, SoftMax::ProbWTA);
	WTA* wta = new WTA();
	//layer2->AddPopulationModifier(wta);
	layer2->AddPopulationModifier(softmax);

	network->Initialize();

	//////////////////////////////
	// Meters
	char* name1 = new char[50];
	char* name2 = new char[50];
	sprintf(name1,"Projection_triesch_n%d.csv",mpiRank);
	Meter* connMeter = new Meter(name1, Storage::CSV);
	connMeter->AttachProjection(layer2->GetIncomingProjections()[0],0);
	network->AddMeter(connMeter);

	sprintf(name2,"Layer2Activity_triesch.csv");

	Meter* layerMeter = new Meter(name2, Storage::CSV);
	layerMeter->AttachPopulation(layer2);
	network->AddMeter(layerMeter);
	// end Meters
	//////////////////////////////

	vector<vector<float> > trainData = dataSources.GetBars(sizeX,sizeY, nrItems);

	int iterations = 1;
	int iterSameStimuli = 100;

	if(!isTriesch)
		iterSameStimuli = 10;

	layer1->SwitchOnOff(false);	// fixed during training phase

	for(int j=0;j<iterations;j++)
	{
		for(int i=0;i<trainData.size();i++)
		{
			/*if(!isTriesch)
			{
				// in order to settle recurrent activity
				eFoldiak->SwitchOnOff(false);
				eFoldiakLateral->SwitchOnOff(false);
			}*/

			for(int k=0;k<iterSameStimuli;k++)
			{
			/*	if(!isTriesch && k==iterSameStimuli-1)
				{
					eFoldiak->SwitchOnOff(true);
					eFoldiakLateral->SwitchOnOff(true);
				}
*/
				for(int m=0;m<1;m++)
				{
					layer1->SetValuesAll(trainData[i]);
					//for(int n=0;n<3;n++)
					network->Simulate();
				}
			}

			// allow units to reset
			network->Reset();

			/*if(i%50 == 0)
			{
				network->RecordAll();
				if(mpiRank == 0)
					cout<<"Storing.";
			}*/
		}	
	}

	network->RecordAll();
}
BoundingBox::BoundingBox(Meter x1, Meter y1, Meter x2, Meter y2) :
	xMin(x1.min(x2)),
	xMax(x1.max(x2)),
	yMin(y1.min(y2)),
	yMax(y1.max(y2)) {
}
BoundingBox::BoundingBox(Meter x1, Meter y1, Meter x2, Meter y2, Meter x3, Meter y3, Meter x4, Meter y4) :
	xMin(x1.min(x2).min(x3).min(x4)),
	xMax(x1.max(x2).max(x3).max(x4)),
	yMin(y1.min(y2).min(y3).min(y4)),
	yMax(y1.max(y2).max(y3).max(y4)) {
}
void TestClassDefinition()
{
  Femtometer const femtometer( 1. );
  Assert( fequal( femtometer.GetValue(), 1. ) );
  Assert( fequal( femtometer.GetConvertedValue(), 1.e-15 ) );
  Assert( fequal( femtometer.GetFactor(), 1.e-15 ) );

  Picometer const picometer( 1. );
  Assert( fequal( picometer.GetValue(), 1. ) );
  Assert( fequal( picometer.GetConvertedValue(), 1.e-12 ) );
  Assert( fequal( picometer.GetFactor(), 1.e-12 ) );

  Nanometer const nanometer( 1. );
  Assert( fequal( nanometer.GetValue(), 1. ) );
  Assert( fequal( nanometer.GetConvertedValue(), 1.e-9 ) );
  Assert( fequal( nanometer.GetFactor(), 1.e-9 ) );

  Micrometer const micrometer( 1. );
  Assert( fequal( micrometer.GetValue(), 1. ) );
  Assert( fequal( micrometer.GetConvertedValue(), 1.e-6 ) );
  Assert( fequal( micrometer.GetFactor(), 1.e-6 ) );

  Millimeter const millimeter( 1. );
  Assert( fequal( millimeter.GetValue(), 1. ) );
  Assert( fequal( millimeter.GetConvertedValue(), .001 ) );
  Assert( fequal( millimeter.GetFactor(), .001 ) );

  Centimeter const centimeter( 1. );
  Assert( fequal( centimeter.GetValue(), 1. ) );
  Assert( fequal( centimeter.GetConvertedValue(), .01 ) );
  Assert( fequal( centimeter.GetFactor(), .01 ) );

  Decimeter const decimeter( 1. );
  Assert( fequal( decimeter.GetValue(), 1. ) );
  Assert( fequal( decimeter.GetConvertedValue(), .1 ) );
  Assert( fequal( decimeter.GetFactor(), .1 ) );

  Meter const meter( 1. );
  Assert( fequal( meter.GetValue(), 1. ) );
  Assert( fequal( meter.GetConvertedValue(), 1. ) );
  Assert( fequal( meter.GetFactor(), 1. ) );

  long const l = sizeof( Meter );
  long const l2 = sizeof( Kilometer );
  long const l3 = sizeof( meter );
  Assert( l == l2 && l == l3 );

  Dekameter const dekameter( 1. );
  Assert( fequal( dekameter.GetValue(), 1. ) );
  Assert( fequal( dekameter.GetConvertedValue(), 10. ) );
  Assert( fequal( dekameter.GetFactor(), 10. ) );

  Hectometer const hectometer( 1. );
  Assert( fequal( hectometer.GetValue(), 1. ) );
  Assert( fequal( hectometer.GetConvertedValue(), 100. ) );
  Assert( fequal( hectometer.GetFactor(), 100. ) );

  Kilometer const kilometer( 1. );
  Assert( fequal( kilometer.GetValue(), 1. ) );
  Assert( fequal( kilometer.GetConvertedValue(), 1000. ) );
  Assert( fequal( kilometer.GetFactor(), 1000. ) );

  Megameter const megameter( 1. );
  Assert( fequal( megameter.GetValue(), 1. ) );
  Assert( fequal( megameter.GetConvertedValue(), 1.e6 ) );
  Assert( fequal( megameter.GetFactor(), 1.e6 ) );

  Gigameter const gigameter( 1. );
  Assert( fequal( gigameter.GetValue(), 1. ) );
  Assert( fequal( gigameter.GetConvertedValue(), 1.e9 ) );
  Assert( fequal( gigameter.GetFactor(), 1.e9 ) );

  Terameter const terameter( 1. );
  Assert( fequal( terameter.GetValue(), 1. ) );
  Assert( fequal( terameter.GetConvertedValue(), 1.e12 ) );
  Assert( fequal( terameter.GetFactor(), 1.e12 ) );

  Petameter const petameter( 1. );
  Assert( fequal( petameter.GetValue(), 1. ) );
  Assert( fequal( petameter.GetConvertedValue(), 1.e15 ) );
  Assert( fequal( petameter.GetFactor(), 1.e15 ) );

  Mil const mil( 1. );
  Assert( fequal( mil.GetValue(), 1. ) );
  Assert( fequal( mil.GetConvertedValue(), .0000254 ) );
  Assert( fequal( mil.GetFactor(), .0000254 ) );

  Inch const inch( 1. );
  Assert( fequal( inch.GetValue(), 1. ) );
  Assert( fequal( inch.GetConvertedValue(), .0254 ) );
  Assert( fequal( inch.GetFactor(), .0254 ) );

  Foot const foot( 1. );
  Assert( fequal( foot.GetValue(), 1. ) );
  Assert( fequal( foot.GetConvertedValue(), .3048 ) );
  Assert( fequal( foot.GetFactor(), .3048 ) );
}
boost::optional<IdfObject> ForwardTranslator::translateMeter( Meter & modelObject )
{
    boost::optional<IdfObject> idfObject;

    QString name = toQString(modelObject.name()).replace(QString("FuelOil_"), QString("FuelOil#"));

    if (modelObject.meterFileOnly() && modelObject.cumulative()) {
        idfObject = IdfObject (openstudio::IddObjectType::Output_Meter_Cumulative_MeterFileOnly);
        m_idfObjects.push_back(*idfObject);

        idfObject->setString(Output_Meter_Cumulative_MeterFileOnlyFields::Name, toString(name));

        if (!modelObject.isReportingFrequencyDefaulted()) {
            idfObject->setString(Output_Meter_Cumulative_MeterFileOnlyFields::ReportingFrequency, modelObject.reportingFrequency());
        }

    } else if (modelObject.meterFileOnly()) {
        idfObject = IdfObject (openstudio::IddObjectType::Output_Meter_MeterFileOnly);
        m_idfObjects.push_back(*idfObject);

        idfObject->setString(Output_Meter_MeterFileOnlyFields::Name, toString(name));

        if (!modelObject.isReportingFrequencyDefaulted()) {
            idfObject->setString(Output_Meter_MeterFileOnlyFields::ReportingFrequency, modelObject.reportingFrequency());
        }

    } else if (modelObject.cumulative()) {
        idfObject = IdfObject (openstudio::IddObjectType::Output_Meter_Cumulative);
        m_idfObjects.push_back(*idfObject);

        idfObject->setString(Output_Meter_CumulativeFields::Name, toString(name));

        if (!modelObject.isReportingFrequencyDefaulted()) {
            idfObject->setString(Output_Meter_CumulativeFields::ReportingFrequency, modelObject.reportingFrequency());
        }

    } else {
        idfObject = IdfObject (openstudio::IddObjectType::Output_Meter);
        m_idfObjects.push_back(*idfObject);

        idfObject->setString(Output_MeterFields::Name, toString(name));

        if (!modelObject.isReportingFrequencyDefaulted()) {
            idfObject->setString(Output_MeterFields::ReportingFrequency, modelObject.reportingFrequency());
        }

    }

    return idfObject;
}