mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 17:29:18 +02:00
basic patches for most of discovered memory leaks, fixes for brake system components
This commit is contained in:
@@ -642,10 +642,11 @@ public:
|
||||
TBrakeHandle BrakeLocHandle;
|
||||
double MBPM; /*masa najwiekszego cisnienia*/
|
||||
|
||||
TBrake *Hamulec;
|
||||
TDriverHandle *Handle;
|
||||
TDriverHandle *LocHandle;
|
||||
TReservoir *Pipe; TReservoir *Pipe2;
|
||||
std::shared_ptr<TBrake> Hamulec;
|
||||
std::shared_ptr<TDriverHandle> Handle;
|
||||
std::shared_ptr<TDriverHandle> LocHandle;
|
||||
std::shared_ptr<TReservoir> Pipe;
|
||||
std::shared_ptr<TReservoir> Pipe2;
|
||||
|
||||
TLocalBrake LocalBrake; /*rodzaj hamulca indywidualnego*/
|
||||
TBrakePressureTable BrakePressureTable; /*wyszczegolnienie cisnien w rurze*/
|
||||
|
||||
@@ -1796,154 +1796,157 @@ int TMoverParameters::ShowCurrent(int AmpN)
|
||||
|
||||
bool TMoverParameters::IncMainCtrl(int CtrlSpeed)
|
||||
{
|
||||
bool OK = false;
|
||||
if ((MainCtrlPosNo > 0) && (CabNo != 0))
|
||||
// basic fail conditions:
|
||||
if( ( CabNo == 0 )
|
||||
|| ( MainCtrlPosNo <= 0 ) ) {
|
||||
// nie ma sterowania
|
||||
return false;
|
||||
}
|
||||
if( ( TrainType == dt_ET22 ) && ( ScndCtrlPos != 0 ) ) {
|
||||
// w ET22 nie da się kręcić nastawnikiem przy włączonym boczniku
|
||||
return false;
|
||||
}
|
||||
if( ( TrainType == dt_EZT ) && ( ActiveDir == 0 ) ) {
|
||||
// w EZT nie da się załączyć pozycji bez ustawienia kierunku
|
||||
return false;
|
||||
}
|
||||
|
||||
bool OK = false;
|
||||
if (MainCtrlPos < MainCtrlPosNo)
|
||||
{
|
||||
if (MainCtrlPos < MainCtrlPosNo)
|
||||
{
|
||||
if ((TrainType != dt_ET22) ||
|
||||
((TrainType == dt_ET22) &&
|
||||
(ScndCtrlPos ==
|
||||
0))) // w ET22 nie da się kręcić nastawnikiem przy włączonym boczniku
|
||||
switch (EngineType)
|
||||
{
|
||||
case None:
|
||||
case Dumb:
|
||||
case DieselElectric:
|
||||
case ElectricInductionMotor:
|
||||
{
|
||||
if (((CtrlSpeed == 1) && (TrainType != dt_EZT)) ||
|
||||
((CtrlSpeed == 1) && (TrainType == dt_EZT) && (ActiveDir != 0)))
|
||||
{ // w EZT nie da się załączyć pozycji bez ustawienia kierunku
|
||||
MainCtrlPos++;
|
||||
OK = true;
|
||||
}
|
||||
else if (((CtrlSpeed > 1) && (TrainType != dt_EZT)) ||
|
||||
((CtrlSpeed > 1) && (TrainType == dt_EZT) && (ActiveDir != 0)))
|
||||
OK = (IncMainCtrl(1) && IncMainCtrl(CtrlSpeed - 1));
|
||||
break;
|
||||
}
|
||||
switch( EngineType ) {
|
||||
case None:
|
||||
case Dumb:
|
||||
case DieselElectric:
|
||||
case ElectricInductionMotor:
|
||||
{
|
||||
if( CtrlSpeed > 1 ) {
|
||||
OK = ( IncMainCtrl( 1 )
|
||||
&& IncMainCtrl( CtrlSpeed - 1 ) ); // a fail will propagate up the recursion chain. should this be || instead?
|
||||
}
|
||||
else {
|
||||
++MainCtrlPos;
|
||||
OK = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case ElectricSeriesMotor:
|
||||
{
|
||||
if ((CtrlSpeed == 1) && (ActiveDir != 0))
|
||||
{
|
||||
MainCtrlPos++;
|
||||
OK = true;
|
||||
if (Imax == ImaxHi)
|
||||
if (RList[MainCtrlPos].Bn > 1)
|
||||
{
|
||||
if (TrainType == dt_ET42)
|
||||
{
|
||||
MainCtrlPos--;
|
||||
OK = false;
|
||||
}
|
||||
if (MaxCurrentSwitch(false))
|
||||
SetFlag(
|
||||
SoundFlag,
|
||||
sound_relay); // wylaczanie wysokiego rozruchu // Q TODO:
|
||||
// if (EngineType=ElectricSeriesMotor) and (MainCtrlPos=1)
|
||||
// then
|
||||
// MainCtrlActualPos:=1;
|
||||
//
|
||||
}
|
||||
if ((CtrlSpeed == 1) && (ActiveDir == -1) && (RList[MainCtrlPos].Bn > 1) &&
|
||||
(TrainType != dt_PseudoDiesel))
|
||||
{ // blokada wejścia na równoległą podczas jazdy do tyłu
|
||||
MainCtrlPos--;
|
||||
OK = false;
|
||||
}
|
||||
//
|
||||
// if (TrainType == "et40")
|
||||
// if (Abs(Im) > IminHi)
|
||||
// {
|
||||
// MainCtrlPos--; //Blokada nastawnika po przekroczeniu minimalnego pradu
|
||||
// OK = false;
|
||||
// }
|
||||
//}
|
||||
if (DynamicBrakeFlag)
|
||||
if (TrainType == dt_ET42)
|
||||
if (MainCtrlPos > 20)
|
||||
{
|
||||
MainCtrlPos--;
|
||||
OK = false;
|
||||
}
|
||||
}
|
||||
else if ((CtrlSpeed > 1) && (ActiveDir != 0) && (TrainType != dt_ET40))
|
||||
{ // szybkie przejście na bezoporową
|
||||
case ElectricSeriesMotor:
|
||||
{
|
||||
if( ActiveDir == 0 ) { return false; }
|
||||
|
||||
while ((RList[MainCtrlPos].R > 0) && IncMainCtrl(1))
|
||||
; // tutaj ma być pętla na "pusto"
|
||||
// OK:=true ; {takie chamskie, potem poprawie} <-Ra: kto miał to
|
||||
// poprawić i po co?
|
||||
if (ActiveDir == -1)
|
||||
while ((RList[MainCtrlPos].Bn > 1) && IncMainCtrl(1))
|
||||
MainCtrlPos--;
|
||||
OK = false;
|
||||
// if (TrainType=dt_ET40) then
|
||||
// while Abs (Im)>IminHi do
|
||||
// dec(MainCtrlPos);
|
||||
// OK:=false ;
|
||||
//
|
||||
if (DynamicBrakeFlag)
|
||||
if (TrainType == dt_ET42)
|
||||
while (MainCtrlPos > 20)
|
||||
MainCtrlPos--;
|
||||
OK = false;
|
||||
}
|
||||
// return OK;
|
||||
if( CtrlSpeed > 1 ) {
|
||||
// szybkie przejście na bezoporową
|
||||
if( TrainType == dt_ET40 ) {
|
||||
break; // this means ET40 won't react at all to fast acceleration command. should it issue just IncMainCtrl(1) instead?
|
||||
}
|
||||
while( ( RList[ MainCtrlPos ].R > 0.0 )
|
||||
&& IncMainCtrl( 1 ) ) {
|
||||
// all work is done in the loop header
|
||||
;
|
||||
}
|
||||
// OK:=true ; {takie chamskie, potem poprawie} <-Ra: kto miał to
|
||||
// poprawić i po co?
|
||||
if( ActiveDir == -1 ) {
|
||||
while( ( RList[ MainCtrlPos ].Bn > 1 )
|
||||
&& IncMainCtrl( 1 ) ) {
|
||||
--MainCtrlPos;
|
||||
}
|
||||
}
|
||||
OK = false; // shouldn't this be part of the loop above?
|
||||
// if (TrainType=dt_ET40) then
|
||||
// while Abs (Im)>IminHi do
|
||||
// dec(MainCtrlPos);
|
||||
// OK:=false ;
|
||||
}
|
||||
else { // CtrlSpeed == 1
|
||||
++MainCtrlPos;
|
||||
OK = true;
|
||||
if( Imax == ImaxHi ) {
|
||||
if( RList[ MainCtrlPos ].Bn > 1 ) {
|
||||
if( true == MaxCurrentSwitch( false )) {
|
||||
// wylaczanie wysokiego rozruchu
|
||||
SetFlag( SoundFlag, sound_relay );
|
||||
} // Q TODO:
|
||||
// if (EngineType=ElectricSeriesMotor) and (MainCtrlPos=1)
|
||||
// then
|
||||
// MainCtrlActualPos:=1;
|
||||
//
|
||||
if( TrainType == dt_ET42 ) {
|
||||
--MainCtrlPos;
|
||||
OK = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( ActiveDir == -1 ) {
|
||||
if( ( TrainType != dt_PseudoDiesel )
|
||||
&& ( RList[ MainCtrlPos ].Bn > 1 ) ) {
|
||||
// blokada wejścia na równoległą podczas jazdy do tyłu
|
||||
--MainCtrlPos;
|
||||
OK = false;
|
||||
}
|
||||
}
|
||||
//
|
||||
// if (TrainType == "et40")
|
||||
// if (Abs(Im) > IminHi)
|
||||
// {
|
||||
// MainCtrlPos--; //Blokada nastawnika po przekroczeniu minimalnego pradu
|
||||
// OK = false;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
if( ( TrainType == dt_ET42 ) && ( true == DynamicBrakeFlag ) ) {
|
||||
if( MainCtrlPos > 20 ) {
|
||||
MainCtrlPos = 20;
|
||||
OK = false;
|
||||
}
|
||||
}
|
||||
// return OK;
|
||||
break;
|
||||
}
|
||||
|
||||
case DieselEngine:
|
||||
{
|
||||
if (CtrlSpeed == 1)
|
||||
{
|
||||
MainCtrlPos++;
|
||||
OK = true;
|
||||
if (MainCtrlPos > 0)
|
||||
CompressorAllow = true;
|
||||
else
|
||||
CompressorAllow = false;
|
||||
}
|
||||
else if (CtrlSpeed > 1)
|
||||
{
|
||||
while (MainCtrlPos < MainCtrlPosNo)
|
||||
IncMainCtrl(1);
|
||||
OK = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DieselEngine:
|
||||
{
|
||||
if( CtrlSpeed > 1 ) {
|
||||
while( MainCtrlPos < MainCtrlPosNo ) {
|
||||
IncMainCtrl( 1 );
|
||||
}
|
||||
}
|
||||
else {
|
||||
++MainCtrlPos;
|
||||
if( MainCtrlPos > 0 ) { CompressorAllow = true; }
|
||||
else { CompressorAllow = false; }
|
||||
}
|
||||
OK = true;
|
||||
break;
|
||||
}
|
||||
|
||||
case WheelsDriven:
|
||||
{
|
||||
OK = AddPulseForce(CtrlSpeed);
|
||||
break;
|
||||
}
|
||||
|
||||
} // switch EngineType of
|
||||
}
|
||||
else // MainCtrlPos>=MainCtrlPosNo
|
||||
if (CoupledCtrl) // wspólny wał nastawnika jazdy i bocznikowania
|
||||
{
|
||||
if (ScndCtrlPos < ScndCtrlPosNo) // 3<3 -> false
|
||||
{
|
||||
ScndCtrlPos++;
|
||||
OK = true;
|
||||
}
|
||||
else
|
||||
OK = false;
|
||||
}
|
||||
if (OK)
|
||||
{
|
||||
SendCtrlToNext("MainCtrl", MainCtrlPos, CabNo); //???
|
||||
SendCtrlToNext("ScndCtrl", ScndCtrlPos, CabNo);
|
||||
}
|
||||
case WheelsDriven:
|
||||
{
|
||||
OK = AddPulseForce( CtrlSpeed );
|
||||
break;
|
||||
}
|
||||
} // switch EngineType of
|
||||
}
|
||||
else {// MainCtrlPos>=MainCtrlPosNo
|
||||
if( true == CoupledCtrl ) {
|
||||
// wspólny wał nastawnika jazdy i bocznikowania
|
||||
if( ScndCtrlPos < ScndCtrlPosNo ) { // 3<3 -> false
|
||||
++ScndCtrlPos;
|
||||
OK = true;
|
||||
}
|
||||
else {
|
||||
OK = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( true == OK )
|
||||
{
|
||||
SendCtrlToNext("MainCtrl", MainCtrlPos, CabNo); //???
|
||||
SendCtrlToNext("ScndCtrl", ScndCtrlPos, CabNo);
|
||||
}
|
||||
else // nie ma sterowania
|
||||
OK = false;
|
||||
// if OK then LastRelayTime:=0;
|
||||
|
||||
// hunter-101012: poprawka
|
||||
// poprzedni warunek byl niezbyt dobry, bo przez to przy trzymaniu +
|
||||
@@ -5871,16 +5874,16 @@ std::string getkeyval(int rettype, std::string key)
|
||||
int klen = key.length();
|
||||
int kpos = Pos(key, xline) - 1;
|
||||
temp.erase(0, kpos + klen);
|
||||
if (temp.find(" ") != std::string::npos)
|
||||
to = temp.find(" ");
|
||||
if (temp.find(' ') != std::string::npos)
|
||||
to = temp.find(' ');
|
||||
else
|
||||
to = 255;
|
||||
kval = temp.substr(0, to);
|
||||
if (kval != "")
|
||||
kval = TrimSpace(kval); // wyciagnieta wartosc
|
||||
|
||||
sectionname = ExchangeCharInString(sectionname, (char)":", (char)"");
|
||||
sectionname = ExchangeCharInString(sectionname, (char)".", (char)"");
|
||||
sectionname = ExchangeCharInString(sectionname, ':', NULL);
|
||||
sectionname = ExchangeCharInString(sectionname, '.', NULL);
|
||||
//--WriteLog(sectionname + "." + keyname + " val= [" + kval + "]");
|
||||
|
||||
// if (rettype == 1) vS = kval;
|
||||
@@ -6343,7 +6346,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
|
||||
|
||||
// appdir = ExtractFilePath(ParamStr(0));
|
||||
|
||||
std::ifstream in(file.c_str());
|
||||
std::ifstream in(file);
|
||||
if (!in.is_open())
|
||||
{
|
||||
WriteLog("E8 - FIZ FILE NOT EXIST.");
|
||||
@@ -7400,8 +7403,7 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||
case K:
|
||||
{
|
||||
WriteLog("XBT W, K");
|
||||
Hamulec = new TWest(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec = std::make_shared<TWest>(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
if (MBPM < 2) // jesli przystawka wazaca
|
||||
Hamulec->SetLP(0, MaxBrakePress[3], 0);
|
||||
else
|
||||
@@ -7411,8 +7413,7 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||
case KE:
|
||||
{
|
||||
WriteLog("XBT WKE");
|
||||
Hamulec = new TKE(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
||||
BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec = std::make_shared<TKE>(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec->SetRM(RapidMult);
|
||||
if (MBPM < 2) // jesli przystawka wazaca
|
||||
Hamulec->SetLP(0, MaxBrakePress[3], 0);
|
||||
@@ -7426,9 +7427,8 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||
case ESt4:
|
||||
{
|
||||
WriteLog("XBT NESt3, ESt3, ESt3AL2, ESt4");
|
||||
Hamulec = new TNESt3(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
(static_cast<TNESt3 *>(Hamulec))->SetSize(BrakeValveSize, BrakeValveParams);
|
||||
Hamulec = std::make_shared<TNESt3>(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
static_cast<TNESt3 *>(Hamulec.get())->SetSize(BrakeValveSize, BrakeValveParams);
|
||||
if (MBPM < 2) // jesli przystawka wazaca
|
||||
Hamulec->SetLP(0, MaxBrakePress[3], 0);
|
||||
else
|
||||
@@ -7439,24 +7439,21 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||
case LSt:
|
||||
{
|
||||
WriteLog("XBT LSt");
|
||||
Hamulec = new TLSt(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
||||
BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec = std::make_shared<TLSt>(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec->SetRM(RapidMult);
|
||||
break;
|
||||
}
|
||||
case EStED:
|
||||
{
|
||||
WriteLog("XBT EStED");
|
||||
Hamulec = new TEStED(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec = std::make_shared<TEStED>(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec->SetRM(RapidMult);
|
||||
break;
|
||||
}
|
||||
case EP2:
|
||||
{
|
||||
WriteLog("XBT EP2");
|
||||
Hamulec = new TEStEP2(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec = std::make_shared<TEStEP2>(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
||||
break;
|
||||
}
|
||||
@@ -7464,21 +7461,18 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||
case CV1:
|
||||
{
|
||||
WriteLog("XBT CV1");
|
||||
Hamulec = new TCV1(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
||||
BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec = std::make_shared<TCV1>(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
break;
|
||||
}
|
||||
case CV1_L_TR:
|
||||
{
|
||||
WriteLog("XBT CV1_L_T");
|
||||
Hamulec = new TCV1L_TR(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec = std::make_shared<TCV1L_TR>(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
Hamulec = new TBrake(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec = std::make_shared<TBrake>(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
}
|
||||
|
||||
Hamulec->SetASBP(MaxBrakePress[4]);
|
||||
@@ -7486,50 +7480,49 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||
switch (BrakeHandle)
|
||||
{
|
||||
case FV4a:
|
||||
Handle = new TFV4aM();
|
||||
Handle = std::make_shared<TFV4aM>();
|
||||
break;
|
||||
case FVel6:
|
||||
Handle = new TFVel6();
|
||||
Handle = std::make_shared<TFVel6>();
|
||||
break;
|
||||
case testH:
|
||||
Handle = new Ttest();
|
||||
Handle = std::make_shared<Ttest>();
|
||||
break;
|
||||
case M394:
|
||||
Handle = new TM394();
|
||||
Handle = std::make_shared<TM394>();
|
||||
break;
|
||||
case Knorr:
|
||||
Handle = new TH14K1();
|
||||
Handle = std::make_shared<TH14K1>();
|
||||
break;
|
||||
case St113:
|
||||
Handle = new TSt113();
|
||||
Handle = std::make_shared<TSt113>();
|
||||
break;
|
||||
default:
|
||||
Handle = new TDriverHandle();
|
||||
Handle = std::make_shared<TDriverHandle>();
|
||||
}
|
||||
|
||||
switch (BrakeLocHandle)
|
||||
{
|
||||
case FD1:
|
||||
{
|
||||
LocHandle = new TFD1();
|
||||
LocHandle = std::make_shared<TFD1>();
|
||||
LocHandle->Init(MaxBrakePress[0]);
|
||||
break;
|
||||
}
|
||||
case Knorr:
|
||||
{
|
||||
LocHandle = new TH1405();
|
||||
LocHandle = std::make_shared<TH1405>();
|
||||
LocHandle->Init(MaxBrakePress[0]);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
LocHandle = new TDriverHandle();
|
||||
LocHandle = std::make_shared<TDriverHandle>();
|
||||
}
|
||||
|
||||
Pipe = new TReservoir();
|
||||
Pipe2 = new TReservoir(); // zabezpieczenie, bo sie PG wywala... :(
|
||||
Pipe->CreateCap((Max0R(Dim.L, 14) + 0.5) * Spg * 1); // dlugosc x przekroj x odejscia i takie
|
||||
// tam
|
||||
Pipe2->CreateCap((Max0R(Dim.L, 14) + 0.5) * Spg * 1);
|
||||
Pipe = std::make_shared<TReservoir>();
|
||||
Pipe->CreateCap( ( Max0R( Dim.L, 14 ) + 0.5 ) * Spg * 1 ); // dlugosc x przekroj x odejscia i takie tam
|
||||
Pipe2 = std::make_shared<TReservoir>(); // zabezpieczenie, bo sie PG wywala... :(
|
||||
Pipe2->CreateCap( (Max0R(Dim.L, 14) + 0.5) * Spg * 1 );
|
||||
|
||||
if (LightsPosNo > 0)
|
||||
LightsPos = LightsDefPos;
|
||||
|
||||
@@ -327,21 +327,17 @@ void TNESt3::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
ValveRes->CreatePress(PP);
|
||||
BrakeCyl->CreatePress(BP);
|
||||
BrakeRes->CreatePress(PP);
|
||||
CntrlRes = new TReservoir();
|
||||
CntrlRes = std::make_shared<TReservoir>();
|
||||
CntrlRes->CreateCap(15);
|
||||
CntrlRes->CreatePress(HPP);
|
||||
BrakeStatus = static_cast<int>(BP > 1.0);
|
||||
Miedzypoj = new TReservoir();
|
||||
Miedzypoj = std::make_shared<TReservoir>();
|
||||
Miedzypoj->CreateCap(5);
|
||||
Miedzypoj->CreatePress(PP);
|
||||
|
||||
BVM = 1.0 / (HPP - 0.05 - LPP) * MaxBP;
|
||||
|
||||
BrakeDelayFlag = BDF;
|
||||
RapidStatus = false;
|
||||
LoadC, LoadM, TareBP, TareM, Podskok, LBP = 0.0;
|
||||
|
||||
Zamykajacy, Przys_blok = false;
|
||||
|
||||
if (!(typeid(*FM) == typeid(TDisk1) || typeid(*FM) == typeid(TDisk2))) // jesli zeliwo to schodz
|
||||
RapidStaly = false;
|
||||
@@ -500,32 +496,31 @@ void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru
|
||||
if (params.find("ESt3") != std::string::npos)
|
||||
{
|
||||
Podskok = 0.7;
|
||||
Przekladniki[1] = new TRura();
|
||||
Przekladniki[3] = new TRura();
|
||||
Przekladniki[1] = std::make_shared<TRura>();
|
||||
Przekladniki[3] = std::make_shared<TRura>();
|
||||
}
|
||||
else
|
||||
{
|
||||
Podskok = -1;
|
||||
Przekladniki[1] = new TRapid();
|
||||
Przekladniki[1] = std::make_shared<TRapid>();
|
||||
if (params.find("-s216") != std::string::npos)
|
||||
Przekladniki[1]->SetRapidParams(2, 16);
|
||||
else
|
||||
Przekladniki[1]->SetRapidParams(2, 0);
|
||||
Przekladniki[3] = new TPrzeciwposlizg();
|
||||
Przekladniki[3] = std::make_shared<TPrzeciwposlizg>();
|
||||
if (params.find("-ED") != std::string::npos)
|
||||
{
|
||||
delete Przekladniki[3]; // tutaj ma byæ destruktor
|
||||
Przekladniki[1]->SetRapidParams(2, 18);
|
||||
Przekladniki[3] = new TPrzekED();
|
||||
Przekladniki[3] = std::make_shared<TPrzekED>();
|
||||
}
|
||||
}
|
||||
|
||||
if (params.find("AL2") != std::string::npos)
|
||||
Przekladniki[2] = new TPrzekCiagly();
|
||||
Przekladniki[2] = std::make_shared<TPrzekCiagly>();
|
||||
else if (params.find("PZZ") != std::string::npos)
|
||||
Przekladniki[2] = new TPrzek_PZZ();
|
||||
Przekladniki[2] = std::make_shared<TPrzek_PZZ>();
|
||||
else
|
||||
Przekladniki[2] = new TRura();
|
||||
Przekladniki[2] = std::make_shared<TRura>();
|
||||
|
||||
if ((params.find("3d") + params.find("4d")) != std::string::npos)
|
||||
autom = false;
|
||||
|
||||
@@ -17,10 +17,10 @@ http://mozilla.org/MPL/2.0/.
|
||||
Copyright (C) 2007-2014 Maciej Cierniak
|
||||
*/
|
||||
|
||||
#include <memory>
|
||||
#include "hamulce.h" // Pascal unit
|
||||
#include "friction.h" // Pascal unit
|
||||
#include "mctools.h" // Pascal unit
|
||||
#include <string>
|
||||
|
||||
/*
|
||||
(C) youBy
|
||||
@@ -72,8 +72,8 @@ class TPrzekladnik : public TReservoir // przekladnik (powtarzacz)
|
||||
{
|
||||
private:
|
||||
public:
|
||||
TReservoir *BrakeRes;
|
||||
TReservoir *Next;
|
||||
std::shared_ptr<TReservoir> BrakeRes;
|
||||
std::shared_ptr<TReservoir> Next;
|
||||
|
||||
TPrzekladnik() : TReservoir() {};
|
||||
virtual void Update(double dt);
|
||||
@@ -110,55 +110,51 @@ class TPrzeciwposlizg : public TRura // przy napelnianiu - rura, przy poslizgu -
|
||||
}
|
||||
};
|
||||
|
||||
class TRapid : public TPrzekladnik // przekladnik dwustopniowy
|
||||
// przekladnik dwustopniowy
|
||||
class TRapid : public TPrzekladnik {
|
||||
|
||||
{
|
||||
private:
|
||||
bool RapidStatus; // status rapidu
|
||||
double RapidMult; // przelozenie (w dol)
|
||||
private:
|
||||
bool RapidStatus = false; // status rapidu
|
||||
double RapidMult = 0.0; // przelozenie (w dol)
|
||||
// Komora2: real;
|
||||
double DN;
|
||||
double DL; // srednice dysz napelniania i luzowania
|
||||
double DN = 0.0;
|
||||
double DL = 0.0; // srednice dysz napelniania i luzowania
|
||||
|
||||
public:
|
||||
public:
|
||||
void SetRapidParams(double mult, double size);
|
||||
void SetRapidStatus(bool rs);
|
||||
void Update(double dt) /*override*/;
|
||||
inline TRapid() : TPrzekladnik()
|
||||
{
|
||||
RapidStatus = false;
|
||||
RapidMult, DN, DL = 0.0;
|
||||
}
|
||||
inline TRapid() :
|
||||
TPrzekladnik()
|
||||
{}
|
||||
};
|
||||
|
||||
class TPrzekCiagly : public TPrzekladnik // AL2
|
||||
// AL2
|
||||
class TPrzekCiagly : public TPrzekladnik {
|
||||
|
||||
{
|
||||
private:
|
||||
double mult;
|
||||
private:
|
||||
double mult = 0.0;
|
||||
|
||||
public:
|
||||
void SetMult(double m);
|
||||
void Update(double dt) /*override*/;
|
||||
inline TPrzekCiagly() : TPrzekladnik()
|
||||
{
|
||||
mult = 0.0;
|
||||
}
|
||||
inline TPrzekCiagly() :
|
||||
TPrzekladnik()
|
||||
{}
|
||||
};
|
||||
|
||||
class TPrzek_PZZ : public TPrzekladnik // podwojny zawor zwrotny
|
||||
// podwojny zawor zwrotny
|
||||
class TPrzek_PZZ : public TPrzekladnik {
|
||||
|
||||
{
|
||||
private:
|
||||
double LBP;
|
||||
private:
|
||||
double LBP = 0.0;
|
||||
|
||||
public:
|
||||
public:
|
||||
void SetLBP(double P);
|
||||
void Update(double dt) /*override*/;
|
||||
inline TPrzek_PZZ() : TPrzekladnik()
|
||||
{
|
||||
LBP = 0.0;
|
||||
}
|
||||
inline TPrzek_PZZ() :
|
||||
TPrzekladnik()
|
||||
{}
|
||||
};
|
||||
|
||||
class TPrzekZalamany : public TPrzekladnik // Knicksventil
|
||||
@@ -166,59 +162,55 @@ class TPrzekZalamany : public TPrzekladnik // Knicksventil
|
||||
{
|
||||
private:
|
||||
public:
|
||||
TPrzekZalamany() : TPrzekladnik() {};
|
||||
TPrzekZalamany() :
|
||||
TPrzekladnik()
|
||||
{}
|
||||
};
|
||||
|
||||
class TPrzekED : public TRura // przy napelnianiu - rura, przy hamowaniu - upust
|
||||
// przy napelnianiu - rura, przy hamowaniu - upust
|
||||
class TPrzekED : public TRura {
|
||||
|
||||
{
|
||||
private:
|
||||
double MaxP;
|
||||
private:
|
||||
double MaxP = 0.0;
|
||||
|
||||
public:
|
||||
public:
|
||||
void SetP(double P);
|
||||
void Update(double dt) /*override*/;
|
||||
inline TPrzekED() : TRura()
|
||||
{
|
||||
MaxP = 0.0;
|
||||
}
|
||||
inline TPrzekED() :
|
||||
TRura()
|
||||
{}
|
||||
};
|
||||
|
||||
class TNESt3 : public TBrake
|
||||
class TNESt3 : public TBrake {
|
||||
|
||||
{
|
||||
private:
|
||||
double Nozzles[dMAX]; // dysze
|
||||
TReservoir *CntrlRes; // zbiornik sterujšcy
|
||||
double BVM; // przelozenie PG-CH
|
||||
private:
|
||||
std::shared_ptr<TReservoir> CntrlRes; // zbiornik sterujšcy
|
||||
std::shared_ptr<TReservoir> Miedzypoj; // pojemnosc posrednia (urojona) do napelniania ZP i ZS
|
||||
std::shared_ptr<TPrzekladnik> Przekladniki[ 4 ];
|
||||
double Nozzles[ dMAX ]; // dysze
|
||||
double BVM = 0.0; // przelozenie PG-CH
|
||||
// ValveFlag: byte; //polozenie roznych zaworkow
|
||||
bool Zamykajacy; // pamiec zaworka zamykajacego
|
||||
bool Zamykajacy = false; // pamiec zaworka zamykajacego
|
||||
// Przys_wlot: boolean; //wlot do komory przyspieszacza
|
||||
bool Przys_blok; // blokada przyspieszacza
|
||||
TReservoir *Miedzypoj; // pojemnosc posrednia (urojona) do napelniania ZP i ZS
|
||||
TPrzekladnik *Przekladniki[4];
|
||||
bool RapidStatus;
|
||||
bool RapidStaly;
|
||||
double LoadC;
|
||||
double TareM;
|
||||
double LoadM; // masa proznego i pelnego
|
||||
double TareBP; // cisnienie dla proznego
|
||||
double HBG300; // zawor ograniczajacy cisnienie
|
||||
double Podskok; // podskok preznosci poczatkowej
|
||||
bool Przys_blok = false; // blokada przyspieszacza
|
||||
bool RapidStatus = false;
|
||||
bool RapidStaly = false;
|
||||
double LoadC = 0.0;
|
||||
double TareM = 0.0; // masa proznego
|
||||
double LoadM = 0.0; // masa pelnego
|
||||
double TareBP = 0.0; // cisnienie dla proznego
|
||||
double HBG300 = 0.0; // zawor ograniczajacy cisnienie
|
||||
double Podskok = 0.0; // podskok preznosci poczatkowej
|
||||
// HPBR: real; //zasilanie ZP z wysokiego cisnienia
|
||||
bool autom; // odluzniacz samoczynny
|
||||
double LBP; // cisnienie hamulca pomocniczego
|
||||
bool autom = false; // odluzniacz samoczynny
|
||||
double LBP = 0.0; // cisnienie hamulca pomocniczego
|
||||
|
||||
|
||||
public:
|
||||
inline TNESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc,
|
||||
int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn
|
||||
, i_BD, i_mat, i_ba, i_nbpa)
|
||||
{
|
||||
}
|
||||
public:
|
||||
inline TNESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
|
||||
TBrake( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||
{}
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
||||
virtual double GetPF(double PP, double dt,
|
||||
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||
virtual double GetPF(double PP, double dt, double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||
void EStParams(double i_crc); // parametry charakterystyczne dla ESt
|
||||
virtual double GetCRP() /*override*/;
|
||||
void CheckState(double BCP, double &dV1); // glowny przyrzad rozrzadczy
|
||||
|
||||
@@ -20,15 +20,15 @@ Copyright (C) 2007-2014 Maciej Cierniak
|
||||
//---FUNKCJE OGOLNE---
|
||||
|
||||
static double const DPL = 0.25;
|
||||
double TFV4aM::pos_table[11] = {-2, 6, -1, 0, -2, 1, 4, 6, 0, 0, 0};
|
||||
double TMHZ_EN57::pos_table[11] = {-2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0};
|
||||
double TM394::pos_table[11] = {-1, 5, -1, 0, 1, 2, 4, 5, 0, 0, 0};
|
||||
double TH14K1::BPT_K[6][2] = {{10, 0}, {4, 1}, {0, 1}, {4, 0}, {4, -1}, {15, -1}};
|
||||
double TH14K1::pos_table[11] = {-1, 4, -1, 0, 1, 2, 3, 4, 0, 0, 0};
|
||||
double TSt113::BPT_K[6][2] = {{10, 0}, {4, 1}, {0, 1}, {4, 0}, {4, -1}, {15, -1}};
|
||||
double TSt113::BEP_K[7] = {0, -1, 1, 0, 0, 0, 0};
|
||||
double TSt113::pos_table[11] = {-1, 5, -1, 0, 2, 3, 4, 5, 0, 0, 1};
|
||||
double TFVel6::pos_table[11] = {-1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1};
|
||||
double const TFV4aM::pos_table[11] = {-2, 6, -1, 0, -2, 1, 4, 6, 0, 0, 0};
|
||||
double const TMHZ_EN57::pos_table[11] = {-2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0};
|
||||
double const TM394::pos_table[11] = {-1, 5, -1, 0, 1, 2, 4, 5, 0, 0, 0};
|
||||
double const TH14K1::BPT_K[6][2] = {{10, 0}, {4, 1}, {0, 1}, {4, 0}, {4, -1}, {15, -1}};
|
||||
double const TH14K1::pos_table[11] = {-1, 4, -1, 0, 1, 2, 3, 4, 0, 0, 0};
|
||||
double const TSt113::BPT_K[6][2] = {{10, 0}, {4, 1}, {0, 1}, {4, 0}, {4, -1}, {15, -1}};
|
||||
double const TSt113::BEP_K[7] = {0, -1, 1, 0, 0, 0, 0};
|
||||
double const TSt113::pos_table[11] = {-1, 5, -1, 0, 2, 3, 4, 5, 0, 0, 1};
|
||||
double const TFVel6::pos_table[11] = {-1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1};
|
||||
|
||||
double PR(double P1, double P2)
|
||||
{
|
||||
@@ -147,14 +147,6 @@ void TReservoir::Flow(double dv)
|
||||
dVol = dVol + dv;
|
||||
}
|
||||
|
||||
TReservoir::TReservoir()
|
||||
{
|
||||
// inherited:: Create;
|
||||
Cap = 1;
|
||||
Vol = 0;
|
||||
dVol = 0;
|
||||
}
|
||||
|
||||
void TReservoir::Act()
|
||||
{
|
||||
Vol = Vol + dVol;
|
||||
@@ -264,9 +256,9 @@ TBrake::TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn
|
||||
4.2; // objetosc CH w stosunku do cylindra 14" i cisnienia 4.2 atm
|
||||
|
||||
// BrakeCyl:=TReservoir.Create;
|
||||
BrakeCyl = new TBrakeCyl();
|
||||
BrakeRes = new TReservoir();
|
||||
ValveRes = new TReservoir();
|
||||
BrakeCyl = std::make_shared<TBrakeCyl>();
|
||||
BrakeRes = std::make_shared<TReservoir>();
|
||||
ValveRes = std::make_shared<TReservoir>();
|
||||
|
||||
// tworzenie zbiornikow
|
||||
BrakeCyl->CreateCap(i_bcd * BCA * 1000);
|
||||
@@ -279,34 +271,34 @@ TBrake::TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn
|
||||
switch (i_mat)
|
||||
{
|
||||
case bp_P10Bg:
|
||||
FM = new TP10Bg();
|
||||
FM = std::make_shared<TP10Bg>();
|
||||
break;
|
||||
case bp_P10Bgu:
|
||||
FM = new TP10Bgu();
|
||||
FM = std::make_shared<TP10Bgu>();
|
||||
break;
|
||||
case bp_FR513:
|
||||
FM = new TFR513();
|
||||
FM = std::make_shared<TFR513>();
|
||||
break;
|
||||
case bp_FR510:
|
||||
FM = new TFR510();
|
||||
FM = std::make_shared<TFR510>();
|
||||
break;
|
||||
case bp_Cosid:
|
||||
FM = new TCosid();
|
||||
FM = std::make_shared<TCosid>();
|
||||
break;
|
||||
case bp_P10yBg:
|
||||
FM = new TP10yBg();
|
||||
FM = std::make_shared<TP10yBg>();
|
||||
break;
|
||||
case bp_P10yBgu:
|
||||
FM = new TP10yBgu();
|
||||
FM = std::make_shared<TP10yBgu>();
|
||||
break;
|
||||
case bp_D1:
|
||||
FM = new TDisk1();
|
||||
FM = std::make_shared<TDisk1>();
|
||||
break;
|
||||
case bp_D2:
|
||||
FM = new TDisk2();
|
||||
FM = std::make_shared<TDisk2>();
|
||||
break;
|
||||
default: // domyslnie
|
||||
FM = new TP10();
|
||||
FM = std::make_shared<TP10>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2203,10 +2195,7 @@ double TFV4a::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||
void TFV4a::Init(double Press)
|
||||
{
|
||||
CP = Press;
|
||||
TP = 0;
|
||||
RP = Press;
|
||||
Time = false;
|
||||
TimeEP = false;
|
||||
}
|
||||
|
||||
//---FV4a/M--- nowonapisany kran bez poprawki IC
|
||||
@@ -2342,13 +2331,7 @@ double TFV4aM::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||
void TFV4aM::Init(double Press)
|
||||
{
|
||||
CP = Press;
|
||||
TP = 0.0;
|
||||
RP = Press;
|
||||
XP = 0.0;
|
||||
Time = false;
|
||||
TimeEP = false;
|
||||
RedAdj = 0.0;
|
||||
Fala = false;
|
||||
}
|
||||
|
||||
void TFV4aM::SetReductor(double nAdj)
|
||||
@@ -2483,12 +2466,6 @@ double TMHZ_EN57::GetPF(double i_bcp, double PP, double HP, double dt, double ep
|
||||
void TMHZ_EN57::Init(double Press)
|
||||
{
|
||||
CP = Press;
|
||||
TP = 0.0;
|
||||
RP = 0.0;
|
||||
Time = false;
|
||||
TimeEP = false;
|
||||
RedAdj = 0.0;
|
||||
Fala = false;
|
||||
}
|
||||
|
||||
void TMHZ_EN57::SetReductor(double nAdj)
|
||||
@@ -2591,9 +2568,7 @@ double TM394::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||
void TM394::Init(double Press)
|
||||
{
|
||||
CP = Press;
|
||||
RedAdj = 0;
|
||||
Time = true;
|
||||
TimeEP = false;
|
||||
}
|
||||
|
||||
void TM394::SetReductor(double nAdj)
|
||||
@@ -2657,7 +2632,6 @@ double TH14K1::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||
void TH14K1::Init(double Press)
|
||||
{
|
||||
CP = Press;
|
||||
RedAdj = 0;
|
||||
Time = true;
|
||||
TimeEP = true;
|
||||
}
|
||||
@@ -2738,7 +2712,6 @@ void TSt113::Init(double Press)
|
||||
{
|
||||
Time = true;
|
||||
TimeEP = true;
|
||||
EPS = 0.0;
|
||||
}
|
||||
|
||||
//--- test ---
|
||||
@@ -2799,11 +2772,8 @@ double TFD1::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||
|
||||
void TFD1::Init(double Press)
|
||||
{
|
||||
BP = 0;
|
||||
MaxBP = Press;
|
||||
Time = false;
|
||||
TimeEP = false;
|
||||
Speed = 1;
|
||||
Speed = 1.0;
|
||||
}
|
||||
|
||||
double TFD1::GetCP()
|
||||
@@ -2844,10 +2814,8 @@ double TH1405::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||
|
||||
void TH1405::Init(double Press)
|
||||
{
|
||||
BP = 0;
|
||||
MaxBP = Press;
|
||||
Time = true;
|
||||
TimeEP = false;
|
||||
}
|
||||
|
||||
double TH1405::GetCP()
|
||||
@@ -2919,7 +2887,6 @@ void TFVel6::Init(double Press)
|
||||
{
|
||||
Time = true;
|
||||
TimeEP = true;
|
||||
EPS = 0.0;
|
||||
}
|
||||
|
||||
// END
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -294,20 +294,32 @@ std::string Tab2Sp(std::string const &s) /*Tab to Space sign*/
|
||||
return s2;
|
||||
}
|
||||
|
||||
std::string ExchangeCharInString(std::string s, const char &aim, const char &target)
|
||||
std::string ExchangeCharInString( std::string const &Source, char const &From, char const &To )
|
||||
{
|
||||
char *tmp = new char[s.length()];
|
||||
for (int b = 0; b < s.length(); ++b)
|
||||
{
|
||||
if (s[b] == aim)
|
||||
if (target == (char)"")
|
||||
b++;
|
||||
else
|
||||
tmp[b] = target;
|
||||
else
|
||||
tmp[b] = s[b];
|
||||
std::string replacement; replacement.reserve( Source.size() );
|
||||
std::for_each(Source.cbegin(), Source.cend(), [&](char const idx) {
|
||||
if( idx != From ) { replacement += idx; }
|
||||
else {
|
||||
if( To != NULL ) { replacement += To; } }
|
||||
} );
|
||||
|
||||
return replacement;
|
||||
/*
|
||||
int const length = Source.size();
|
||||
std::string replacement; replacement.reserve( length );
|
||||
for( int idx = 0; idx < length; ++idx ) {
|
||||
if( Source[ idx ] != From ) {
|
||||
replacement += Source[ idx ];
|
||||
}
|
||||
else {
|
||||
if( To != NULL ) {
|
||||
replacement += To;
|
||||
}
|
||||
}
|
||||
}
|
||||
return std::string(tmp);
|
||||
|
||||
return replacement;
|
||||
*/
|
||||
}
|
||||
|
||||
std::vector<std::string> &Split(const std::string &s, char delim, std::vector<std::string> &elems)
|
||||
@@ -387,25 +399,18 @@ std::string to_string(int _Val, int precision, int width)
|
||||
return o.str();
|
||||
};
|
||||
|
||||
std::string to_string(double _Val, int precision, int width)
|
||||
std::string to_string(double const Value, int const Precision, int const Width)
|
||||
{
|
||||
std::ostringstream o;
|
||||
o.width(width);
|
||||
o << std::fixed << std::setprecision(precision);
|
||||
o << _Val;
|
||||
return o.str();
|
||||
std::ostringstream converter;
|
||||
converter << std::setw( Width ) << std::fixed << std::setprecision(Precision) << Value;
|
||||
return converter.str();
|
||||
};
|
||||
|
||||
std::string to_hex_str(double _Val, int precision, int width)
|
||||
std::string to_hex_str( int const Value, int const Width )
|
||||
{
|
||||
std::ostringstream o;
|
||||
if (width)
|
||||
o.width(width);
|
||||
o << std::fixed << std::hex;
|
||||
if (precision)
|
||||
o << std::setprecision(precision);
|
||||
o << _Val;
|
||||
return o.str();
|
||||
std::ostringstream converter;
|
||||
converter << "0x" << std::uppercase << std::setfill( '0' ) << std::setw( Width ) << std::hex << Value;
|
||||
return converter.str();
|
||||
};
|
||||
|
||||
int stol_def(const std::string &str, const int &DefaultValue)
|
||||
|
||||
@@ -122,7 +122,7 @@ std::string DUE(std::string s); /*Delete Until Equal sign*/
|
||||
std::string DWE(std::string s); /*Delete While Equal sign*/
|
||||
std::string Ld2Sp(std::string const &s); /*Low dash to Space sign*/
|
||||
std::string Tab2Sp(std::string const &s); /*Tab to Space sign*/
|
||||
std::string ExchangeCharInString(std::string s, const char &aim, const char &target); // zamienia jeden znak na drugi
|
||||
std::string ExchangeCharInString(std::string const &s, const char &aim, const char &target); // zamienia jeden znak na drugi
|
||||
std::vector<std::string> &Split(const std::string &s, char delim, std::vector<std::string> &elems);
|
||||
std::vector<std::string> Split(const std::string &s, char delim);
|
||||
std::vector<std::string> Split(const std::string &s);
|
||||
@@ -134,7 +134,7 @@ std::string to_string(int _Val, int precision, int width);
|
||||
std::string to_string(double _Val);
|
||||
std::string to_string(double _Val, int precision);
|
||||
std::string to_string(double _Val, int precision, int width);
|
||||
std::string to_hex_str(double _Val, int precision = 0, int width = 0);
|
||||
std::string to_hex_str( int const _Val, int const width = 4 );
|
||||
inline std::string to_string(bool _Val)
|
||||
{
|
||||
return _Val == true ? "true" : "false";
|
||||
|
||||
Reference in New Issue
Block a user