本文整理汇总了C++中Base函数的典型用法代码示例。如果您正苦于以下问题:C++ Base函数的具体用法?C++ Base怎么用?C++ Base使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Base函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: value_
inline AD<Base>::AD(const T &t)
: value_(Base(t))
, id_(CPPAD_MAX_NUM_THREADS)
, taddr_(0)
{ }
开发者ID:AndreasBrack,项目名称:WahlkreisSeminar,代码行数:5,代码来源:ad_copy.hpp
示例2: remove_whitespace
remove_whitespace(T start) :
super_t(Base(static_cast< T >(start)))
{}
开发者ID:Niko-r,项目名称:geofeatures,代码行数:3,代码来源:remove_whitespace.hpp
示例3: main1
static void main1(int argc, const char** argv)
{
print_g = true; // want to be able to see lprintfs
if (argc != 2)
Err("Usage: shapetostasm31 file.shape");
ShapeFile sh; // contents of the shape file
sh.Open_(argv[1]);
if (sh.shapes_[0].rows == 77)
lprintf("Converting 77 point to 76 point shapes\n");
char newpath[SLEN];
sprintf(newpath, "%s_stasm31.shape", Base(argv[1]));
lprintf("Generating %s ", newpath);
FILE* file = fopen(newpath, "wb");
if (!file)
Err("Cannot open %s for writing", newpath);
Fprintf(file, "ss %s\n\n", newpath);
Fprintf(file, "Directories %s\n\n", sh.dirs_);
Pacifier pacifier(sh.nshapes_);
for (int ishape = 0; ishape < sh.nshapes_; ishape++)
{
// we need the image width and height to convert the coords
const char* imgpath = PathGivenDirs(sh.bases_[ishape], sh.dirs_, sh.shapepath_);
cv::Mat_<unsigned char> img(cv::imread(imgpath, CV_LOAD_IMAGE_GRAYSCALE));
if (!img.data)
Err("Cannot load %s", imgpath);
Shape shape;
if (sh.shapes_[0].rows == 77)
shape = (ConvertShape(sh.shapes_[ishape], 76)); // convert 76 point shape
else
shape = sh.shapes_[ishape].clone();
CV_Assert(shape.rows);
Fprintf(file, "\"%4.4x %s\"\n",
NewBits(sh.bits_[ishape]), sh.bases_[ishape].c_str());
Fprintf(file, "{ %d %d\n", shape.rows, shape.cols);
const int cols2 = img.cols / 2;
const int rows2 = img.rows / 2;
for (int i = 0; i < shape.rows; i++)
{
if (!PointUsed(shape, i))
Fprintf(file, "0 0\n");
else
{
double oldx = shape(i, IX) - cols2;
double oldy = rows2 - shape(i, IY) - 1;
if (!PointUsed(oldx, oldy))
oldx = XJITTER;
Print(file, oldx, " ");
Print(file, oldy, "\n");
}
}
Fprintf(file, "}\n");
pacifier.Print_(ishape);
}
pacifier.End_();
fclose(file);
lprintf("\n");
}
开发者ID:Melevir,项目名称:stasm,代码行数:61,代码来源:shapetostasm31.cpp
示例4: test
void test()
{
// This function tests C++0x 5.16
// p1 (contextually convert to bool)
int i1 = ToBool() ? 0 : 1;
// p2 (one or both void, and throwing)
i1 ? throw 0 : throw 1;
i1 ? test() : throw 1;
i1 ? throw 0 : test();
i1 ? test() : test();
i1 = i1 ? throw 0 : 0;
i1 = i1 ? 0 : throw 0;
i1 ? 0 : test(); // expected-error {{right operand to ? is void, but left operand is of type 'int'}}
i1 ? test() : 0; // expected-error {{left operand to ? is void, but right operand is of type 'int'}}
(i1 ? throw 0 : i1) = 0; // expected-error {{expression is not assignable}}
(i1 ? i1 : throw 0) = 0; // expected-error {{expression is not assignable}}
// p3 (one or both class type, convert to each other)
// b1 (lvalues)
Base base;
Derived derived;
Convertible conv;
Base &bar1 = i1 ? base : derived;
Base &bar2 = i1 ? derived : base;
Base &bar3 = i1 ? base : conv;
Base &bar4 = i1 ? conv : base;
// these are ambiguous
BadBase bb;
BadDerived bd;
(void)(i1 ? bb : bd); // expected-error {{conditional expression is ambiguous; 'struct BadBase' can be converted to 'struct BadDerived' and vice versa}}
(void)(i1 ? bd : bb); // expected-error {{conditional expression is ambiguous}}
// curiously enough (and a defect?), these are not
// for rvalues, hierarchy takes precedence over other conversions
(void)(i1 ? BadBase() : BadDerived());
(void)(i1 ? BadDerived() : BadBase());
// b2.1 (hierarchy stuff)
const Base constret();
const Derived constder();
// should use const overload
A a1((i1 ? constret() : Base()).trick());
A a2((i1 ? Base() : constret()).trick());
A a3((i1 ? constret() : Derived()).trick());
A a4((i1 ? Derived() : constret()).trick());
// should use non-const overload
i1 = (i1 ? Base() : Base()).trick();
i1 = (i1 ? Base() : Base()).trick();
i1 = (i1 ? Base() : Derived()).trick();
i1 = (i1 ? Derived() : Base()).trick();
// should fail: const lost
(void)(i1 ? Base() : constder()); // expected-error {{incompatible operand types ('struct Base' and 'struct Derived const')}}
(void)(i1 ? constder() : Base()); // expected-error {{incompatible operand types ('struct Derived const' and 'struct Base')}}
Priv priv;
Fin fin;
(void)(i1 ? Base() : Priv()); // expected-error{{private base class}}
(void)(i1 ? Priv() : Base()); // expected-error{{private base class}}
(void)(i1 ? Base() : Fin()); // expected-error{{ambiguous conversion from derived class 'struct Fin' to base class 'struct Base'}}
(void)(i1 ? Fin() : Base()); // expected-error{{ambiguous conversion from derived class 'struct Fin' to base class 'struct Base'}}
(void)(i1 ? base : priv); // expected-error {{private base class}}
(void)(i1 ? priv : base); // expected-error {{private base class}}
(void)(i1 ? base : fin); // expected-error {{ambiguous conversion from derived class 'struct Fin' to base class 'struct Base'}}
(void)(i1 ? fin : base); // expected-error {{ambiguous conversion from derived class 'struct Fin' to base class 'struct Base'}}
// b2.2 (non-hierarchy)
i1 = i1 ? I() : i1;
i1 = i1 ? i1 : I();
I i2(i1 ? I() : J());
I i3(i1 ? J() : I());
// "the type [it] woud have if E2 were converted to an rvalue"
vfn pfn = i1 ? F() : test;
pfn = i1 ? test : F();
(void)(i1 ? A() : B()); // expected-error {{conversion from 'struct B' to 'struct A' is ambiguous}}
(void)(i1 ? B() : A()); // expected-error {{conversion from 'struct B' to 'struct A' is ambiguous}}
(void)(i1 ? 1 : Ambig()); // expected-error {{conversion from 'struct Ambig' to 'int' is ambiguous}}
(void)(i1 ? Ambig() : 1); // expected-error {{conversion from 'struct Ambig' to 'int' is ambiguous}}
// By the way, this isn't an lvalue:
&(i1 ? i1 : i2); // expected-error {{address expression must be an lvalue or a function designator}}
// p4 (lvalue, same type)
Fields flds;
int &ir1 = i1 ? flds.i1 : flds.i2;
(i1 ? flds.b1 : flds.i2) = 0;
(i1 ? flds.i1 : flds.b2) = 0;
(i1 ? flds.b1 : flds.b2) = 0;
// p5 (conversion to built-in types)
// GCC 4.3 fails these
double d1 = i1 ? I() : K();
pfn = i1 ? F() : G();
DFnPtr pfm;
pfm = i1 ? DFnPtr() : &Base::fn1;
pfm = i1 ? &Base::fn1 : DFnPtr();
// p6 (final conversions)
i1 = i1 ? i1 : ir1;
int *pi1 = i1 ? &i1 : 0;
pi1 = i1 ? 0 : &i1;
//.........这里部分代码省略.........
开发者ID:Gcrosby5269,项目名称:clamav-bytecode-compiler,代码行数:101,代码来源:conditional-expr.cpp
示例5:
Line_d<R> Ray_d<R>::supporting_line() const
{
return Line_d<R>(Base(*this));
}
开发者ID:gitrider,项目名称:wxsj2,代码行数:4,代码来源:Line_d.C
示例6: forward_sweep
size_t forward_sweep(
std::ostream& s_out,
const bool print,
const size_t q,
const size_t p,
const size_t n,
const size_t numvar,
player<Base> *Rec,
const size_t J,
Base *Taylor,
CppAD::vector<bool>& cskip_op
)
{ CPPAD_ASSERT_UNKNOWN( J >= p + 1 );
CPPAD_ASSERT_UNKNOWN( q <= p );
// op code for current instruction
OpCode op;
// index for current instruction
size_t i_op;
// next variables
size_t i_var;
// arg (not as a constant)
addr_t* non_const_arg = CPPAD_NULL;
// arg (as a constant)
const addr_t* arg = CPPAD_NULL;
// temporary indices
size_t i, ell;
// initialize the comparision operator (ComOp) counter
size_t compareCount = 0;
pod_vector<size_t> VectorInd; // address for each element
pod_vector<bool> VectorVar; // is element a variable
if( q == 0 )
{
// this includes order zero calculation, initialize vector indices
i = Rec->num_rec_vecad_ind();
if( i > 0 )
{ VectorInd.extend(i);
VectorVar.extend(i);
while(i--)
{ VectorInd[i] = Rec->GetVecInd(i);
VectorVar[i] = false;
}
}
// includes zero order, so initialize conditional skip flags
for(i = 0; i < Rec->num_rec_op(); i++)
cskip_op[i] = false;
}
// Work space used by UserOp. Note User assumes q = p.
const size_t user_p1 = p+1; // number of orders for this user calculation
vector<bool> user_vx; // empty vector
vector<bool> user_vy; // empty vector
vector<Base> user_tx; // argument vector Taylor coefficients
vector<Base> user_ty; // result vector Taylor coefficients
vector<size_t> user_iy; // variable indices for results vector
size_t user_index = 0; // indentifier for this atomic operation
size_t user_id = 0; // user identifier for this call to operator
size_t user_i = 0; // index in result vector
size_t user_j = 0; // index in argument vector
size_t user_m = 0; // size of result vector
size_t user_n = 0; // size of arugment vector
//
atomic_base<Base>* user_atom = CPPAD_NULL; // user's atomic op calculator
# ifndef NDEBUG
bool user_ok = false; // atomic op return value
# endif
//
// next expected operator in a UserOp sequence
enum { user_start, user_arg, user_ret, user_end } user_state = user_start;
// check numvar argument
CPPAD_ASSERT_UNKNOWN( Rec->num_rec_var() == numvar );
// length of the parameter vector (used by CppAD assert macros)
const size_t num_par = Rec->num_rec_par();
// pointer to the beginning of the parameter vector
const Base* parameter = CPPAD_NULL;
if( num_par > 0 )
parameter = Rec->GetPar();
// length of the text vector (used by CppAD assert macros)
const size_t num_text = Rec->num_rec_text();
// pointer to the beginning of the text vector
const char* text = CPPAD_NULL;
if( num_text > 0 )
text = Rec->GetTxt(0);
// skip the BeginOp at the beginning of the recording
Rec->start_forward(op, arg, i_op, i_var);
CPPAD_ASSERT_UNKNOWN( op == BeginOp );
# if CPPAD_FORWARD_SWEEP_TRACE
//.........这里部分代码省略.........
开发者ID:tkelman,项目名称:CppAD-oldmirror,代码行数:101,代码来源:forward_sweep.hpp
示例7: log10
inline AD<Base> log10(const VecAD_reference<Base> &x)
{ return CppAD::log(x.ADBase()) / CppAD::log( Base(10) ); }
开发者ID:ZiiCee,项目名称:OPTI,代码行数:2,代码来源:std_math_ad.hpp
示例8: reverse_acos_op
inline void reverse_acos_op(
size_t d ,
size_t i_z ,
size_t i_x ,
size_t cap_order ,
const Base* taylor ,
size_t nc_partial ,
Base* partial )
{
// check assumptions
CPPAD_ASSERT_UNKNOWN( NumArg(AcosOp) == 1 );
CPPAD_ASSERT_UNKNOWN( NumRes(AcosOp) == 2 );
CPPAD_ASSERT_UNKNOWN( d < cap_order );
CPPAD_ASSERT_UNKNOWN( d < nc_partial );
// Taylor coefficients and partials corresponding to argument
const Base* x = taylor + i_x * cap_order;
Base* px = partial + i_x * nc_partial;
// Taylor coefficients and partials corresponding to first result
const Base* z = taylor + i_z * cap_order;
Base* pz = partial + i_z * nc_partial;
// Taylor coefficients and partials corresponding to auxillary result
const Base* b = z - cap_order; // called y in documentation
Base* pb = pz - nc_partial;
// If pz is zero, make sure this operation has no effect
// (zero times infinity or nan would be non-zero).
bool skip(true);
for(size_t i_d = 0; i_d <= d; i_d++)
skip &= IdenticalZero(pz[i_d]);
if( skip )
return;
// number of indices to access
size_t j = d;
size_t k;
while(j)
{
// scale partials w.r.t b[j] by 1 / b[0]
pb[j] /= b[0];
// scale partials w.r.t z[j] by 1 / b[0]
pz[j] /= b[0];
// update partials w.r.t b^0
pb[0] -= pz[j] * z[j] + pb[j] * b[j];
// update partial w.r.t. x^0
px[0] -= pb[j] * x[j];
// update partial w.r.t. x^j
px[j] -= pz[j] + pb[j] * x[0];
// further scale partial w.r.t. z[j] by 1 / j
pz[j] /= Base(j);
for(k = 1; k < j; k++)
{ // update partials w.r.t b^(j-k)
pb[j-k] -= Base(k) * pz[j] * z[k] + pb[j] * b[k];
// update partials w.r.t. x^k
px[k] -= pb[j] * x[j-k];
// update partials w.r.t. z^k
pz[k] -= pz[j] * Base(k) * b[j-k];
}
--j;
}
// j == 0 case
px[0] -= ( pz[0] + pb[0] * x[0]) / b[0];
}
开发者ID:GodinA,项目名称:adcomp,代码行数:74,代码来源:acos_op.hpp
示例9: Domain
VectorBase ADFun<Base>::ForTwo(
const VectorBase &x,
const VectorSize_t &j,
const VectorSize_t &k)
{ size_t i;
size_t j1;
size_t k1;
size_t l;
size_t n = Domain();
size_t m = Range();
size_t p = j.size();
// check VectorBase is Simple Vector class with Base type elements
CheckSimpleVector<Base, VectorBase>();
// check VectorSize_t is Simple Vector class with size_t elements
CheckSimpleVector<size_t, VectorSize_t>();
CPPAD_ASSERT_KNOWN(
x.size() == n,
"ForTwo: Length of x not equal domain dimension for f."
);
CPPAD_ASSERT_KNOWN(
j.size() == k.size(),
"ForTwo: Lenght of the j and k vectors are not equal."
);
// point at which we are evaluating the second partials
Forward(0, x);
// dimension the return value
VectorBase ddy(m * p);
// allocate memory to hold all possible diagonal Taylor coefficients
// (for large sparse cases, this is not efficient)
VectorBase D(m * n);
// boolean flag for which diagonal coefficients are computed
CppAD::vector<bool> c(n);
for(j1 = 0; j1 < n; j1++)
c[j1] = false;
// direction vector in argument space
VectorBase dx(n);
for(j1 = 0; j1 < n; j1++)
dx[j1] = Base(0);
// result vector in range space
VectorBase dy(m);
// compute the diagonal coefficients that are needed
for(l = 0; l < p; l++)
{ j1 = j[l];
k1 = k[l];
CPPAD_ASSERT_KNOWN(
j1 < n,
"ForTwo: an element of j not less than domain dimension for f."
);
CPPAD_ASSERT_KNOWN(
k1 < n,
"ForTwo: an element of k not less than domain dimension for f."
);
size_t count = 2;
while(count)
{ count--;
if( ! c[j1] )
{ // diagonal term in j1 direction
c[j1] = true;
dx[j1] = Base(1);
Forward(1, dx);
dx[j1] = Base(0);
dy = Forward(2, dx);
for(i = 0; i < m; i++)
D[i * n + j1 ] = dy[i];
}
j1 = k1;
}
}
// compute all the requested cross partials
for(l = 0; l < p; l++)
{ j1 = j[l];
k1 = k[l];
if( j1 == k1 )
{ for(i = 0; i < m; i++)
ddy[i * p + l] = Base(2) * D[i * n + j1];
}
else
{
// cross term in j1 and k1 directions
dx[j1] = Base(1);
dx[k1] = Base(1);
Forward(1, dx);
dx[j1] = Base(0);
dx[k1] = Base(0);
dy = Forward(2, dx);
// place result in return value
//.........这里部分代码省略.........
开发者ID:cran,项目名称:SpeciesMix,代码行数:101,代码来源:for_two.hpp
示例10: ProcessFace
static void ProcessFace(
const Image& img, // in
const char* imgpath, // in
int foundface, // in
const Shape& shape, // in
float estyaw, // in
double facedet_time, // in
double asmsearch_time, // in
const Shape& refshape, // in
FILE* fitfile, // in
const ShapeFile& sh, // in
int ishape) // in: shape index in the shapefile
{
double meanfit = NOFIT; // fitness measure over all shapefile points
int iworst = -1; // worst fitting point in above measure of fitness
double me17 = NOFIT; // fitness measure me17
double fm29 = NOFIT; // fitness measure FM29 (only for 77 point shapes)
int iworst_fm29 = -1; // worst fitting point using FM29 measure
if (!foundface)
printf_g("no face ");
else
{
if (trace_g)
LogShape(shape, imgpath);
// we will succesfully get the meanfit only if the shape can be converted to
// the shapefile number of points (by ConvertShape in MeanFitOverInterEye)
meanfit = MeanFitOverInterEye(iworst, shape, refshape);
if (meanfit != NOFIT) // were able to get the mean fit?
printf_g("meanfit %5.3f ", meanfit);
// use fitness measure me17 if can convert the shape to a shape17
me17 = Me17(shape, refshape);
if (me17 != NOFIT) // were able to get the me17 fit?
printf_g("me17 %5.3f ", me17);
// get fitness measure fm29 if the shape has 77 points
if (shape.rows == 77 && refshape.rows == 77)
{
Fm29(fm29, iworst_fm29, shape, refshape);
printf_g("fm29 %5.3f ", fm29);
}
if (writeimgs_g) // -i flag
WriteImgs(img, imgpath, shape, refshape,
meanfit, iworst, me17, fm29, iworst_fm29);
}
printf_g("\n");
if (trace_g)
lprintf("\n");
const char* const base = Base(imgpath);
const VEC pose(sh.Pose_(base));
Fprintf(fitfile,
"%-*s%s "
"%7.5f % 6d "
"%7.5f "
"%7.5f % 6d "
"%8.2f %8.2f ",
sh.nchar_, base, " ",
meanfit, iworst,
me17,
fm29, iworst_fm29,
InterEyeDist(refshape), EyeMouthDist(refshape));
Fprintf(fitfile,
"% 5.0f "
"% 6.0f % 6.0f % 6.0f %9.3f "
"[%5.3f] [%5.3f]\n",
estyaw,
pose(0), pose(1), pose(2), pose(3),
facedet_time, asmsearch_time);
}
开发者ID:avtomaton,项目名称:stasm,代码行数:67,代码来源:swas.cpp
示例11: forward_sweep
size_t forward_sweep(
bool print,
size_t d,
size_t n,
size_t numvar,
player<Base> *Rec,
size_t J,
Base *Taylor
)
{ CPPAD_ASSERT_UNKNOWN( J >= d + 1 );
// op code for current instruction
OpCode op;
// index for current instruction
size_t i_op;
// next variables
size_t i_var;
# if CPPAD_USE_FORWARD0SWEEP
CPPAD_ASSERT_UNKNOWN( d > 0 );
# else
size_t* non_const_arg;
# endif
const size_t *arg = 0;
size_t i;
// initialize the comparision operator (ComOp) counter
size_t compareCount = 0;
// if this is an order zero calculation, initialize vector indices
size_t *VectorInd = CPPAD_NULL; // address for each element
bool *VectorVar = CPPAD_NULL; // is element a variable
i = Rec->num_rec_vecad_ind();
if( i > 0 )
{ VectorInd = CPPAD_TRACK_NEW_VEC(i, VectorInd);
VectorVar = CPPAD_TRACK_NEW_VEC(i, VectorVar);
while(i--)
{ VectorInd[i] = Rec->GetVecInd(i);
VectorVar[i] = false;
}
}
// check numvar argument
CPPAD_ASSERT_UNKNOWN( Rec->num_rec_var() == numvar );
// length of the parameter vector (used by CppAD assert macros)
const size_t num_par = Rec->num_rec_par();
// length of the text vector (used by CppAD assert macros)
const size_t num_text = Rec->num_rec_text();
// pointer to the beginning of the parameter vector
const Base* parameter = 0;
if( num_par > 0 )
parameter = Rec->GetPar();
// pointer to the beginning of the text vector
const char* text = 0;
if( num_text > 0 )
text = Rec->GetTxt(0);
// skip the BeginOp at the beginning of the recording
Rec->start_forward(op, arg, i_op, i_var);
CPPAD_ASSERT_UNKNOWN( op == BeginOp );
# if CPPAD_FORWARD_SWEEP_TRACE
std::cout << std::endl;
# endif
while(op != EndOp)
{
// this op
Rec->next_forward(op, arg, i_op, i_var);
CPPAD_ASSERT_UNKNOWN( (i_op > n) | (op == InvOp) );
CPPAD_ASSERT_UNKNOWN( (i_op <= n) | (op != InvOp) );
// action depends on the operator
switch( op )
{
case AbsOp:
forward_abs_op(d, i_var, arg[0], J, Taylor);
break;
// -------------------------------------------------
case AddvvOp:
forward_addvv_op(d, i_var, arg, parameter, J, Taylor);
break;
// -------------------------------------------------
case AddpvOp:
CPPAD_ASSERT_UNKNOWN( arg[0] < num_par );
forward_addpv_op(d, i_var, arg, parameter, J, Taylor);
break;
// -------------------------------------------------
case AcosOp:
// variables: sqrt(1 - x * x), acos(x)
CPPAD_ASSERT_UNKNOWN( i_var < numvar );
//.........这里部分代码省略.........
开发者ID:jnorthrup,项目名称:jmodelica,代码行数:101,代码来源:forward_sweep.hpp
示例12: sizeof
uint8
ArchUART8250Omap::In8(int reg)
{
return *((uint8 *)Base() + reg * sizeof(uint32));
}
开发者ID:looncraz,项目名称:haiku,代码行数:5,代码来源:arch_uart_8250_omap.cpp
示例13:
void
ArchUART8250Omap::Out8(int reg, uint8 value)
{
*((uint8 *)Base() + reg * sizeof(uint32)) = value;
}
开发者ID:looncraz,项目名称:haiku,代码行数:5,代码来源:arch_uart_8250_omap.cpp
示例14: Base
inline AD<Base>& AD<Base>::operator=(const T &t)
{ return *this = Base(t); }
开发者ID:AndreasBrack,项目名称:WahlkreisSeminar,代码行数:2,代码来源:ad_copy.hpp
示例15: xml_unescape
xml_unescape(T start) :
super_t(Base(static_cast< T >(start)))
{}
开发者ID:marops,项目名称:PDAL,代码行数:3,代码来源:xml_unescape.hpp
示例16: TellMaxPut
//-----------------------------------------------------------------------------
// Converts a buffer from a CRLF buffer to a CR buffer (and back)
// Returns false if no conversion was necessary (and outBuf is left untouched)
// If the conversion occurs, outBuf will be cleared.
//-----------------------------------------------------------------------------
bool CUtlBufferEditor::ConvertCRLF( CUtlBufferEditor &outBuf )
{
if ( !IsText() || !outBuf.IsText() )
return false;
if ( ContainsCRLF() == outBuf.ContainsCRLF() )
return false;
int nInCount = TellMaxPut();
outBuf.Purge();
outBuf.EnsureCapacity( nInCount );
bool bFromCRLF = ContainsCRLF();
// Start reading from the beginning
int nGet = TellGet();
int nPut = TellPut();
int nGetDelta = 0;
int nPutDelta = 0;
const char *pBase = (const char*)Base();
int nCurrGet = 0;
while ( nCurrGet < nInCount )
{
const char *pCurr = &pBase[nCurrGet];
if ( bFromCRLF )
{
const char *pNext = Q_strnistr( pCurr, "\r\n", nInCount - nCurrGet );
if ( !pNext )
{
outBuf.Put( pCurr, nInCount - nCurrGet );
break;
}
int nBytes = (size_t)pNext - (size_t)pCurr;
outBuf.Put( pCurr, nBytes );
outBuf.PutChar( '\n' );
nCurrGet += nBytes + 2;
if ( nGet >= nCurrGet - 1 )
{
--nGetDelta;
}
if ( nPut >= nCurrGet - 1 )
{
--nPutDelta;
}
}
else
{
const char *pNext = Q_strnchr( pCurr, '\n', nInCount - nCurrGet );
if ( !pNext )
{
outBuf.Put( pCurr, nInCount - nCurrGet );
break;
}
int nBytes = (size_t)pNext - (size_t)pCurr;
outBuf.Put( pCurr, nBytes );
outBuf.PutChar( '\r' );
outBuf.PutChar( '\n' );
nCurrGet += nBytes + 1;
if ( nGet >= nCurrGet )
{
++nGetDelta;
}
if ( nPut >= nCurrGet )
{
++nPutDelta;
}
}
}
Assert( nPut + nPutDelta <= outBuf.TellMaxPut() );
outBuf.SeekGet( SEEK_HEAD, nGet + nGetDelta );
outBuf.SeekPut( SEEK_HEAD, nPut + nPutDelta );
return true;
}
开发者ID:BSVino,项目名称:source-shader-editor,代码行数:85,代码来源:exported_utilities.cpp
示例17: main
int main()
{
Base()->operator=(Base());
}
开发者ID:WhiZTiM,项目名称:coliru,代码行数:4,代码来源:main.cpp
示例18: TellPut
void CUtlBufferEditor::WriteToBuffer( CUtlBuffer &buf )
{
int size = TellPut();
buf.Put( Base(), size );
}
开发者ID:BSVino,项目名称:source-shader-editor,代码行数:6,代码来源:exported_utilities.cpp
示例19: forward2sweep
void forward2sweep(
const size_t q,
const size_t r,
const size_t n,
const size_t numvar,
player<Base>* play,
const size_t J,
Base* taylor,
const bool* cskip_op,
const pod_vector<addr_t>& var_by_load_op
)
{
CPPAD_ASSERT_UNKNOWN( q > 0 );
CPPAD_ASSERT_UNKNOWN( J >= q + 1 );
CPPAD_ASSERT_UNKNOWN( play->num_var_rec() == numvar );
// used to avoid compiler errors until all operators are implemented
size_t p = q;
// op code for current instruction
OpCode op;
// index for current instruction
size_t i_op;
// next variables
size_t i_var;
// operation argument indices
const addr_t* arg = CPPAD_NULL;
// work space used by UserOp.
vector<bool> user_vx; // empty vecotor
vector<bool> user_vy; // empty vecotor
vector<Base> user_tx_one; // argument vector Taylor coefficients
vector<Base> user_tx_all;
vector<Base> user_ty_one; // result vector Taylor coefficients
vector<Base> user_ty_all;
size_t user_index = 0; // indentifier for this atomic operation
size_t user_id = 0; // user identifier for this call to operator
size_t user_i = 0; // index in result vector
size_t user_j = 0; // index in argument vector
size_t user_m = 0; // size of result vector
size_t user_n = 0; // size of arugment vector
//
atomic_base<Base>* user_atom = CPPAD_NULL; // user's atomic op calculator
# ifndef NDEBUG
bool user_ok = false; // atomic op return value
# endif
//
// next expected operator in a UserOp sequence
enum { user_start, user_arg, user_ret, user_end, user_trace }
user_state = user_start;
// length of the parameter vector (used by CppAD assert macros)
const size_t num_par = play->num_par_rec();
// pointer to the beginning of the parameter vector
const Base* parameter = CPPAD_NULL;
if( num_par > 0 )
parameter = play->GetPar();
// temporary indices
size_t i, j, k, ell;
// number of orders for this user calculation
// (not needed for order zero)
const size_t user_q1 = q+1;
// variable indices for results vector
// (done differently for order zero).
vector<size_t> user_iy;
// skip the BeginOp at the beginning of the recording
play->forward_start(op, arg, i_op, i_var);
CPPAD_ASSERT_UNKNOWN( op == BeginOp );
# if CPPAD_FORWARD2SWEEP_TRACE
std::cout << std::endl;
CppAD::vector<Base> Z_vec(q+1);
# endif
bool more_operators = true;
while(more_operators)
{
// this op
play->forward_next(op, arg, i_op, i_var);
CPPAD_ASSERT_UNKNOWN( (i_op > n) | (op == InvOp) );
CPPAD_ASSERT_UNKNOWN( (i_op <= n) | (op != InvOp) );
CPPAD_ASSERT_UNKNOWN( i_op < play->num_op_rec() );
CPPAD_ASSERT_ARG_BEFORE_RESULT(op, arg, i_var);
// check if we are skipping this operation
while( cskip_op[i_op] )
{ if( op == CSumOp )
{ // CSumOp has a variable number of arguments
play->forward_csum(op, arg, i_op, i_var);
}
CPPAD_ASSERT_UNKNOWN( op != CSkipOp );
// if( op == CSkipOp )
// { // CSkip has a variable number of arguments
// play->forward_cskip(op, arg, i_op, i_var);
//.........这里部分代码省略.........
开发者ID:CSCsw,项目名称:CppAD,代码行数:101,代码来源:forward2sweep.hpp
示例20: forward1sweep
void forward1sweep(
std::ostream& s_out,
const bool print,
const size_t p,
const size_t q,
const size_t n,
const size_t numvar,
player<Base>* play,
const size_t J,
Base* taylor,
bool* cskip_op,
pod_vector<addr_t>& var_by_load_op,
size_t compare_change_count,
size_t& compare_change_number,
size_t& compare_change_op_index
)
{
// number of directions
const size_t r = 1;
CPPAD_ASSERT_UNKNOWN( p <= q );
CPPAD_ASSERT_UNKNOWN( J >= q + 1 );
CPPAD_ASSERT_UNKNOWN( play->num_var_rec() == numvar );
/*
<!-- replace forward0sweep_code_define -->
*/
// op code for current instruction
OpCode op;
// index for current instruction
size_t i_op;
// next variables
size_t i_var;
// operation argument indices
const addr_t* arg = CPPAD_NULL;
// initialize the comparision operator counter
if( p == 0 )
{ compare_change_number = 0;
compare_change_op_index = 0;
}
// If this includes a zero calculation, initialize this information
pod_vector<bool> isvar_by_ind;
pod_vector<size_t> index_by_ind;
if( p == 0 )
{ size_t i;
// this includes order zero calculation, initialize vector indices
size_t num = play->num_vec_ind_rec();
if( num > 0 )
{ isvar_by_ind.extend(num);
index_by_ind.extend(num);
for(i = 0; i < num; i++)
{ index_by_ind[i] = play->GetVecInd(i);
isvar_by_ind[i] = false;
}
}
// includes zero order, so initialize conditional skip flags
num = play->num_op_rec();
for(i = 0; i < num; i++)
cskip_op[i] = false;
}
// work space used by UserOp.
vector<bool> user_vx; // empty vecotor
vector<bool> user_vy; // empty vecotor
vector<Base> user_tx; // argument vector Taylor coefficients
vector<Base> user_ty; // result vector Taylor coefficients
size_t user_index = 0; // indentifier for this atomic operation
size_t user_id = 0; // user identifier for this call to operator
size_t user_i = 0; // index in result vector
size_t user_j = 0; // index in argument vector
size_t user_m = 0; // size of result vector
size_t user_n = 0; // size of arugment vector
//
atomic_base<Base>* user_atom = CPPAD_NULL; // user's atomic op calculator
# ifndef NDEBUG
bool user_ok = false; // atomic op return value
# endif
//
// next expected operator in a UserOp sequence
enum { user_start, user_arg, user_ret, user_end, user_trace }
user_state = user_start;
// length of the parameter vector (used by CppAD assert macros)
const size_t num_par = play->num_par_rec();
// pointer to the beginning of the parameter vector
const Base* parameter = CPPAD_NULL;
if( num_par > 0 )
parameter = play->GetPar();
// length of the text vector (used by CppAD assert macros)
const size_t num_text = play->num_text_rec();
// pointer to the beginning of the text vector
//.........这里部分代码省略.........
开发者ID:GodinA,项目名称:adcomp,代码行数:101,代码来源:forward1sweep.hpp
注:本文中的Base函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论