本文整理汇总了C++中decrement函数的典型用法代码示例。如果您正苦于以下问题:C++ decrement函数的具体用法?C++ decrement怎么用?C++ decrement使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了decrement函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: power
int power(struct NUMBER *a,struct NUMBER *b,struct NUMBER *c)
{
int res = 0;
struct NUMBER tmp_b,tmp_c,tmp;
if(isZero(b) == 0)//bが最初から0ならば
{
setInt(c,1);//cを1に
return(0);//n^0は(0を除いて)必ず1になるため
}
if(getSign(b) == -1)//bが負なら
return(-1);
copyNumber(b,&tmp_b);//bが破壊されないようにtmp_bに
copyNumber(a,c);//aをcにコピー、cの初期値をaとする
copyNumber(&tmp_b,&tmp);//tmp_bにtmpを代入、グダグダなのはわかってる。
decrement(&tmp,&tmp_b);//もうすでにcにはa^1があるので、1をまず引く
while(1)
{
if(isZero(&tmp_b) == 0)
break;//bが0になったら終了
copyNumber(c,&tmp_c);//tmp_cに現在のcの値を代入する
res = multiple(a,&tmp_c,c);
if(res == -1)
break;
copyNumber(&tmp_b,&tmp);//tmp_bにtmpを代入、グダグダなのはわかってる。
decrement(&tmp,&tmp_b);//tmp_b--;を実行してます
}
return(res);
}
示例2: FIRFilter
double FIRFilter(TRMFIRFilter *filter, double input, int needOutput)
{
if (needOutput) {
int i;
double output = 0.0;
/* PUT INPUT SAMPLE INTO DATA BUFFER */
filter->FIRData[filter->FIRPtr] = input;
/* SUM THE OUTPUT FROM ALL FILTER TAPS */
for (i = 0; i < filter->numberTaps; i++) {
output += filter->FIRData[filter->FIRPtr] * filter->FIRCoef[i];
filter->FIRPtr = increment(filter->FIRPtr, filter->numberTaps);
}
/* DECREMENT THE DATA POINTER READY FOR NEXT CALL */
filter->FIRPtr = decrement(filter->FIRPtr, filter->numberTaps);
/* RETURN THE OUTPUT VALUE */
return output;
} else {
/* PUT INPUT SAMPLE INTO DATA BUFFER */
filter->FIRData[filter->FIRPtr] = input;
/* ADJUST THE DATA POINTER, READY FOR NEXT CALL */
filter->FIRPtr = decrement(filter->FIRPtr, filter->numberTaps);
return 0.0;
}
}
示例3: increment
double
FIRFilter::filter(double input, int needOutput)
{
if (needOutput) {
int i;
double output = 0.0;
/* PUT INPUT SAMPLE INTO DATA BUFFER */
data_[ptr_] = input;
/* SUM THE OUTPUT FROM ALL FILTER TAPS */
for (i = 0; i < numberTaps_; i++) {
output += data_[ptr_] * coef_[i];
ptr_ = increment(ptr_, numberTaps_);
}
/* DECREMENT THE DATA POINTER READY FOR NEXT CALL */
ptr_ = decrement(ptr_, numberTaps_);
/* RETURN THE OUTPUT VALUE */
return output;
} else {
/* PUT INPUT SAMPLE INTO DATA BUFFER */
data_[ptr_] = input;
/* ADJUST THE DATA POINTER, READY FOR NEXT CALL */
ptr_ = decrement(ptr_, numberTaps_);
return 0.0;
}
}
示例4: push_front
/**
* @brief push_front
*/
void push_front(const T& val)
{
assert(!full());
if(head == c.end())
head = decrement(head);
*head = val;
head = decrement(head);
}
示例5: comment_section
void CompilerStubs::generate_compiler_new_object() {
comment_section("Compiler new object (any size)");
comment("Register edx holds the instance size, register ebx holds the prototypical near of the instance class");
Label slow_case;
entry("compiler_new_object");
comment("Get _inline_allocation_top");
movl(eax, Address(Constant("_inline_allocation_top")));
comment("Compute new top");
leal(ecx, Address(eax, edx, times_1));
if (GenerateDebugAssembly) {
comment("Check ExcessiveGC");
testl(Address(Constant("ExcessiveGC")), Constant(0));
jcc(not_zero, Constant(slow_case));
}
comment("Compare against _inline_allocation_end");
cmpl(ecx, Address(Constant("_inline_allocation_end")));
jcc(above, Constant(slow_case));
comment("Allocation succeeded, set _inline_allocation_top");
movl(Address(Constant("_inline_allocation_top")), ecx);
comment("Set prototypical near in object; no need for write barrier");
movl(Address(eax), ebx);
comment("Compute remaining size");
decrement(edx, oopSize);
comment("One-word object?");
Label init_done;
jcc(zero, Constant(init_done));
comment("Zero object fields");
xorl(ecx, ecx);
Label init_loop;
bind(init_loop);
movl(Address(eax, edx, times_1), ecx);
decrement(edx, oopSize);
jcc(not_zero, Constant(init_loop));
bind(init_done);
comment("The newly allocated object is in register eax");
ret();
comment("Slow case - call the VM runtime system");
bind(slow_case);
leal(eax, Address(Constant("newobject")));
goto_shared_call_vm(T_OBJECT);
entry_end(); // compiler_new_object
}
示例6: setHead
FFEvent* TimeTable::getUpcomingEvent(){
FFEvent* upEvent = head;
if ( size() > 1 ) {
setHead(head->getNext());
decrement();
} else if ( size() == 1 ) {
// this is the only event left
decrement();
} else {
// no events left to be treated (size=0)
cout << "ForeFire simulation ended with no more event to be treated" << endl;
upEvent = 0;
}
return upEvent;
}
示例7: main
int main()
{
int i = 0;
std::string str = "asdf";
decrement(i);
decrement(str);
std::cout << i << " "<<str<<std::endl;
F foo;
foo.decrement(i);
foo.decrement(str);
std::cout << i << " "<<str<<std::endl;
}
示例8: pop_back
void pop_back()
{
MGBASE_ASSERT(!empty());
--size_;
decrement(&last_);
}
示例9: advance
void advance(difference_type dist)
{
for (; dist != 0; --dist)
{
decrement();
}
}
示例10: increment
void Demo::DepthZoom::on_incNear_pressed() {
float z = increment(mN);
float f = decrement(mF - mN);
mN += z < f ? z : f;
mUI->nearValue->setText(QString("%1").arg((double) mN, 0, 'f', 2, QChar('0')));
emit valuesChanged(mN, mF);
}
示例11: decrement
void Task< Kokkos::Serial , void >::schedule_dependence_reserve(int n)
{
if ( STATE_CONSTRUCTING != m_state && STATE_EXECUTING != m_state ) {
throw std::runtime_error(std::string("Kokkos::Impl::Task spawn or respawn state error"));
}
m_state = STATE_WAITING ;
for ( int i = 0 ; i < m_dep_count ; ++i ) {
decrement( m_dep[i] );
m_dep[i] = 0 ;
}
if ( DEP_COUNT_BASE < n && m_dep_alloc < n ) {
if ( m_dep_alloc ) {
// Thread safety and scalability of 'free' ?
free( m_dep );
}
m_dep_alloc = n ;
// Thread safety and scalability of 'malloc' ?
m_dep = reinterpret_cast<Task**>( malloc( n * sizeof(Task*) ) );
for ( int i = 0 ; i < m_dep_alloc ; ++i ) { m_dep[i] = 0 ; }
}
m_dep_count = n ;
}
示例12: decrement
long IOPMchangeNoteList::previousChangeNote ( unsigned long ordinal )
{
if ( ordinal == firstInList ) {
return -1;
}
return decrement(ordinal);
}
示例13: pushToBuffer
// Arbitrary-size push function
unsigned int pushToBuffer(buffer_t *b, void *d, unsigned int l) {
unsigned int elementIndex, byteIndex;
// Loop through all elements
for (elementIndex = 0; elementIndex < l; elementIndex++) {
// Loop through all bytes of each element
for (byteIndex = 0; byteIndex < b->width; byteIndex++) {
// Only push to buffer if it is not full or overwriting is allowed
if ( (!isBufferFull(b)) || (b->behavior.bits.overwrite) ) {
pushByte(b, *( (unsigned char*)(d + elementIndex * (b->width) + byteIndex) ));
}
// If buffer is full, return a count of those elments not pushed
else {
// Pop all bytes of incomplete elements
// -This should never run, but added just in case
unsigned int failedbytes;
for (failedbytes = byteIndex; failedbytes > 0; failedbytes--) {
// If it is a queue pop comes from tail, so decrement head
decrement(b, &(b->head));
}
// Return a count of failed push operations
// -Include partial pushes in count
return l - elementIndex;
}
}
}
return 0;
}
示例14: FIT_TEST_CASE
FIT_TEST_CASE()
{
constexpr auto f = fit::compose(increment(), decrement());
static_assert(std::is_empty<decltype(f)>::value, "Compose function not empty");
int r = f(3);
FIT_TEST_CHECK(r == 3);
FIT_STATIC_TEST_CHECK(f(3) == 3);
}
示例15: if
void CGUINumberControl::processLogic()
{
GsPointingState &pointingState = gPointDevice.mPointingState;
const bool hasPoint = mRect.HasPoint(pointingState.mPos);
const bool bDown = (pointingState.mActionButton>0);
const float xMid = mRect.x+(mRect.w/2.0f);
mReleased = false;
mDecSel = false;
mIncSel = false;
Vector2D<float> mousePos = pointingState.mPos;
if( mousePos.x < xMid )
mDecSel = true;
else if( mousePos.x > xMid )
mIncSel = true;
if(!bDown && mPressed)
{
mPressed = false;
if(hasPoint)
{
mReleased = true;
}
}
if(!bDown || mPressed)
{
mHovered = hasPoint;
}
if(mHovered && bDown)
{
mPressed = true;
if( mDecSel )
{
// Cycle through the values -> go one value down
if( mValue > mStartValue )
decrement();
}
else if( mIncSel )
{
// Cycle through the values -> go one value up
if( mValue < mEndValue )
increment();
}
mMustRedraw = true;
}
}