本文整理汇总了C++中Guard::Init方法的典型用法代码示例。如果您正苦于以下问题:C++ Guard::Init方法的具体用法?C++ Guard::Init怎么用?C++ Guard::Init使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Guard
的用法示例。
在下文中一共展示了Guard::Init方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handle_args
//.........这里部分代码省略.........
xVal=new DDoubleGDL ( dimension ( xEl ), BaseGDL::INDGEN );
xval_guard.reset ( xVal ); // delete upon exit
if (xLog) xVal->Inc();
yVal=new DDoubleGDL ( dimension ( yEl ), BaseGDL::INDGEN );
yval_guard.reset ( yVal ); // delete upon exit
if (yLog) yVal->Inc();
}
else if ( nParam ( )==2||nParam ( )>3 )
{
e->Throw ( "Incorrect number of arguments." );
}
else
{
BaseGDL* p0=e->GetNumericArrayParDefined ( 0 )->Transpose ( NULL );
zVal=static_cast<DDoubleGDL*>
( p0->Convert2 ( GDL_DOUBLE, BaseGDL::COPY ) );
p0_guard.reset ( p0 ); // delete upon exit
if ( zVal->Rank ( )!=2 )
e->Throw ( "Array must have 2 dimensions: "
+e->GetParString ( 0 ) );
xVal=e->GetParAs< DDoubleGDL>( 1 );
yVal=e->GetParAs< DDoubleGDL>( 2 );
if ( xVal->Rank ( )!=1 )
e->Throw ( "Unable to handle non-vectorial array "+e->GetParString ( 1 )+" (FIXME!)" );
if ( yVal->Rank ( )!=1 )
e->Throw ( "Unable to handle non-vectorial array "+e->GetParString ( 1 )+" (FIXME!)" );
if ( xVal->Rank ( )==1 )
{
xEl=xVal->Dim ( 0 );
if ( xEl!=zVal->Dim ( 1 ) )
e->Throw ( "X, Y, or Z array dimensions are incompatible." );
}
if ( yVal->Rank ( )==1 )
{
yEl=yVal->Dim ( 0 );
if ( yEl!=zVal->Dim ( 0 ) )
e->Throw ( "X, Y, or Z array dimensions are incompatible." );
}
}
GetMinMaxVal ( xVal, &xStart, &xEnd );
GetMinMaxVal ( yVal, &yStart, &yEnd );
//XRANGE and YRANGE overrides all that, but Start/End should be recomputed accordingly
DDouble xAxisStart, xAxisEnd, yAxisStart, yAxisEnd;
bool setx=gdlGetDesiredAxisRange(e, "X", xAxisStart, xAxisEnd);
bool sety=gdlGetDesiredAxisRange(e, "Y", yAxisStart, yAxisEnd);
if(setx && sety)
{
xStart=xAxisStart;
xEnd=xAxisEnd;
yStart=yAxisStart;
yEnd=yAxisEnd;
}
else if (sety)
{
yStart=yAxisStart;
yEnd=yAxisEnd;
}
else if (setx)
{
xStart=xAxisStart;
xEnd=xAxisEnd;
//must compute min-max for other axis!
{
gdlDoRangeExtrema(xVal,yVal,yStart,yEnd,xStart,xEnd);
}
}
#undef UNDEF_RANGE_VALUE
// z range
datamax=0.0;
datamin=0.0;
GetMinMaxVal ( zVal, &datamin, &datamax );
zStart=datamin;
zEnd=datamax;
setZrange = gdlGetDesiredAxisRange(e, "Z", zStart, zEnd);
//SHADES: Doing the job will be for nothing since plplot does not give the functionality.
static int shadesIx=e->KeywordIx ( "SHADES" ); doShade=false;
if ( e->GetKW ( shadesIx )!=NULL )
{
shades=e->GetKWAs<DLongGDL>( shadesIx ); doShade=true;
} else {
// Get COLOR from PLOT system variable
static DStructGDL* pStruct=SysVar::P();
shades=new DLongGDL( 1, BaseGDL::NOZERO );
shades_guard.Init ( shades ); // delete upon exit
shades=static_cast<DLongGDL*>(pStruct->GetTag(pStruct->Desc()->TagIndex("COLOR"), 0)); doShade=false;
}
if (doShade) Warning ( "SHADE_SURF: SHADES array ignored, shading with current color table." );
return false;
}
示例2: handle_args
bool handle_args(EnvT* e)
{
//T3D?
static int t3dIx = e->KeywordIx( "T3D");
doT3d=(e->KeywordSet(t3dIx)|| T3Denabled());
//note: Z (VALUE) will be used uniquely if Z is not effectively defined.
static int zvIx = e->KeywordIx( "ZVALUE");
zValue=0.0;
e->AssureDoubleScalarKWIfPresent ( zvIx, zValue );
zValue=min(zValue,0.999999); //to avoid problems with plplot
zValue=max(zValue,0.0);
// system variable !P.NSUM first
DLong nsum=(*static_cast<DLongGDL*>(SysVar::P()-> GetTag(SysVar::P()->Desc()->TagIndex("NSUM"), 0)))[0];
static int NSUMIx = e->KeywordIx( "NSUM");
e->AssureLongScalarKWIfPresent( NSUMIx, nsum);
static int polarIx = e->KeywordIx( "POLAR");
bool polar = (e->KeywordSet(polarIx));
// DDoubleGDL *yValBis, *xValBis;
// Guard<BaseGDL> xvalBis_guard, yvalBis_guard;
//test and transform eventually if POLAR and/or NSUM!
if( nParam() == 1)
{
yTemp = e->GetParAs< DDoubleGDL>( 0);
if (yTemp->Rank() == 0)
e->Throw("Expression must be an array in this context: "+e->GetParString(0));
yEl=yTemp->N_Elements();
xEl=yEl;
xTemp = new DDoubleGDL( dimension( xEl), BaseGDL::INDGEN);
xtemp_guard.Reset( xTemp); // delete upon exit
}
else
{
xTemp = e->GetParAs< DDoubleGDL>( 0);
if (xTemp->Rank() == 0)
e->Throw("Expression must be an array in this context: "+e->GetParString(0));
xEl=xTemp->N_Elements();
yTemp = e->GetParAs< DDoubleGDL>( 1);
if (yTemp->Rank() == 0)
e->Throw("Expression must be an array in this context: "+e->GetParString(1));
yEl=yTemp->N_Elements();
//silently drop unmatched values
if (yEl != xEl)
{
SizeT size;
size = min(xEl, yEl);
xEl = size;
yEl = size;
}
}
//check nsum validity
nsum=max(1,nsum);
nsum=min(nsum,(DLong)xEl);
if (nsum == 1)
{
if (polar)
{
xVal = new DDoubleGDL(dimension(xEl), BaseGDL::NOZERO);
xval_guard.Reset(xVal); // delete upon exit
yVal = new DDoubleGDL(dimension(yEl), BaseGDL::NOZERO);
yval_guard.Reset(yVal); // delete upon exit
for (int i = 0; i < xEl; i++) (*xVal)[i] = (*xTemp)[i] * cos((*yTemp)[i]);
for (int i = 0; i < yEl; i++) (*yVal)[i] = (*xTemp)[i] * sin((*yTemp)[i]);
}
else
{ //careful about previously set autopointers!
if (nParam() == 1) xval_guard.Init( xtemp_guard.release());
xVal = xTemp;
yVal = yTemp;
}
}
else
{
int i, j, k;
DLong size = (DLong)xEl / nsum;
xVal = new DDoubleGDL(size, BaseGDL::ZERO); //SHOULD BE ZERO, IS NOT!
xval_guard.Reset(xVal); // delete upon exit
yVal = new DDoubleGDL(size, BaseGDL::ZERO); //IDEM
yval_guard.Reset(yVal); // delete upon exit
for (i = 0, k = 0; i < size; i++)
{
(*xVal)[i] = 0.0;
(*yVal)[i] = 0.0;
for (j = 0; j < nsum; j++, k++)
{
(*xVal)[i] += (*xTemp)[k];
(*yVal)[i] += (*yTemp)[k];
}
}
for (i = 0; i < size; i++) (*xVal)[i] /= nsum;
for (i = 0; i < size; i++) (*yVal)[i] /= nsum;
if (polar)
{
DDouble x, y;
//.........这里部分代码省略.........