示例#1
0
文件: o.c 项目: ConorOBrien-Foxx/o
S tos(O o){
    S r,t;L z,i;switch(o->t){
    case TD:r=alc(BZ)/*hope this is big enough!*/;sprintf(r,"%f",o->d);z=strlen(r)-1;while(r[z]=='0')r[z--]=0;if(r[z]=='.')r[z]=0;BK;
    case TS:r=alc(o->s.z+1);memcpy(r,o->s.s,o->s.z);r[o->s.z]=0;BK;
    case TA:r=alc(1);r[0]='[';z=1;for(i=0;i<len(o->a);++i){L l;if(i){r=rlc(r,z+1);r[z++]=',';}t=tos(o->a->st[i]);l=strlen(t);r=rlc(r,z+l);memcpy(r+z,t,l);z+=l;DL(t);}r=rlc(r,z+2);r[z]=']';r[z+1]=0;BK;
    case TCB:r=alc(o->s.z+3);r[0]='{';memcpy(r+1,o->s.s,o->s.z);memcpy(r+1+o->s.z,"}",2);BK;
    }R r;
} //tostring (copies)
示例#2
0
int main(int argc, char** argv)
{
	std::vector<ALshort> samples;
	AL_Capture alc(MyAL::choisir_device(),MyAL::choisir_capture_device());
	alc.start(samples);
	std::chrono::milliseconds dura(1000);
	std::this_thread::sleep_for(dura);
	alc.stop();
	if(argc<2)
		alc.save_sound("test.wav");
	else
		alc.save_sound(argv[1]);
	return EXIT_SUCCESS;

}
示例#3
0
    void emplace_back(Args&&... args)
    {
        auto new_node = NodeAllocatorTraits::allocate(alc_, 1);

        try {
            ValueAllocator alc(alc_);
            ValueAllocatorTraits::construct(
               alc, &new_node->t, std::forward<Args>(args)...
            );
        } catch(...)
        {
            NodeAllocatorTraits::deallocate(alc_, new_node, 1);
            throw;
        }
        new_node->next = nullptr;

        push_node(new_node);
    }
示例#4
0
    /** Push object into the queue by moving it.
    *
    * @param t Object you want to push into the queue. Requires T to be
    * MoveConstructible.
    * @throws Any exceptions thrown by the move constructor of the object.
    *
    * @note This function is Thread-safe, lock-free and wait-free.
    */
    void push_back(T&& t)
    {
        auto new_node = NodeAllocatorTraits::allocate(alc_, 1);

        try {
            ValueAllocator alc(alc_);
            ValueAllocatorTraits::construct(
               alc, &new_node->t, std::move(t)
            );
        } catch(...)
        {
            NodeAllocatorTraits::deallocate(alc_, new_node, 1);
            throw;
        }
        new_node->next = nullptr;

        push_node(new_node);
    }
示例#5
0
文件: o.c 项目: ConorOBrien-Foxx/o
O newos(S s,L z){O r=newo();r->t=TS;r->s.s=alc(z+1);memcpy(r->s.s,s,z);r->s.s[z]=0;r->s.z=z;R r;} //new object string (copies)
示例#6
0
文件: o.c 项目: ConorOBrien-Foxx/o
O newocb(S s,L z){O r=newo();r->t=TCB;r->s.s=alc(z+1);memcpy(r->s.s,s,z);r->s.s[z]=0;r->s.z=z;R r;} //new object code block (copies)
示例#7
0
文件: o.c 项目: ConorOBrien-Foxx/o
O newo(){R alc(sizeof(OB));} //new object
示例#8
0
文件: o.c 项目: ConorOBrien-Foxx/o
ST newst(L z){ST s=alc(sizeof(STB));s->st=alc(z*sizeof(P));s->p=0;s->l=z;R s;} //new stack
示例#9
0
文件: o.c 项目: ConorOBrien-Foxx/o
S rdln(){L z;S r=alc(BZ);if(!fgets(r,BZ,stdin)){if(feof(stdin)){*r=0;R r;}else PXE;}z=strlen(r);if(r[z-1]=='\n')r[z-1]=0;if(z>1&&r[z-2]=='\r')r[z-2]=0;R r;} //read line(XXX:only allows BZ as max length!)
示例#10
0
文件: o.c 项目: ConorOBrien-Foxx/o
O low(O o){S r=alc(o->s.z+1);L i;for(i=0;i<o->s.z;++i)r[i]=tolower(o->s.s[i]);R newosk(r,o->s.z);} //lowercase
示例#11
0
文件: o.c 项目: ConorOBrien-Foxx/o
V rvx(ST s){S r;L z;O o=pop(s);if(o->t!=TS)TE;r=alc(o->s.z+1);for(z=0;z<o->s.z;++z)r[o->s.z-z-1]=o->s.s[z];dlo(o);psh(s,newosk(r,z));}  //reverse object
示例#12
0
文件: o.c 项目: ConorOBrien-Foxx/o
O muls(O a,O b){S r,p;I i,t=b->d/*truncate*/;L z=a->s.z*t;p=r=alc(z+1);for(i=0;i<t;++i){memcpy(p,a->s.s,a->s.z);p+=a->s.z;}r[z]=0;R newosk(r,z);} //mul strings
示例#13
0
文件: o.c 项目: ConorOBrien-Foxx/o
O subs(O a,O b){L i,z=a->s.z;S r,p;if(b->s.z==0)R dup(a);for(i=0;i<a->s.z;++i)if(memcmp(a->s.s+i,b->s.s,b->s.z)==0)z-=b->s.z;p=r=alc(z+1);for(i=0;i<a->s.z;++i)if(memcmp(a->s.s+i,b->s.s,b->s.z)==0)i+=b->s.z-1;else*p++=a->s.s[i];R newosk(r,z);} //sub strings
示例#14
0
文件: o.c 项目: ConorOBrien-Foxx/o
O adds(O a,O b){S rs=alc(a->s.z+b->s.z+1);memcpy(rs,a->s.s,a->s.z);memcpy(rs+a->s.z,b->s.s,b->s.z+1);R newosk(rs,a->s.z+b->s.z);} //add strings
示例#15
0
    // テストの実行!
    double doTestImpl(int testNum, int sequence) override {
	  currentTestNum_ = testNum;
	  const size_t bufferSize = 1024*1024*256; // 256M
	  BaseAllocator alc(bufferSize);
	  TsAllocator::defaultAllocator_ = &alc;
	  double ret = 0;

	  BoostContainerAnalayzer bca;
	  StlContainerAnalayzer sca;

	  switch (testCase_) {
	  case SO_ALLOCATOR2_TEST: // 301
	  case LO_ALLOCATOR2_TEST:
	  { // 302		
		std::function<double(int, size_t)> tb[] = {
          [&](int sequence, size_t loops) { return test_push_back<std::vector<ElementType> >(sequence, loops, sca); },
          [&](int sequence, size_t loops) { return test_push_back<std::vector<ElementType, MyAllocator> >(sequence, loops, sca); },
          [&](int sequence, size_t loops) { return test_push_back<boost::container::vector<ElementType>>(sequence, loops, bca); },
          [&](int sequence, size_t loops) { return test_push_back<boost::container::vector<ElementType, MyAllocator> >(sequence, loops, bca); },
          [&](int sequence, size_t loops) { return test_push_back<boost::container::vector<ElementType, boost::container::allocator<ElementType, 1>>>(sequence, loops, bca); },
          [&](int sequence, size_t loops) { return test_push_back<boost::container::vector<ElementType, boost::container::allocator<ElementType, 2>>>(sequence, loops, bca); }
		};
		ret = tb[testNum - 1](sequence, LOOPS);

	  }
		  break;
	  case SO_ALLOCATOR2_UNITTIME: // 303
	  case LO_ALLOCATOR2_UNITTIME: // 304
	  {
		if (sequence == 1) {
			std::memset(&unittimes_[0], 0, sizeof(unittimes_));
			if (testNum == 1) {
				ofs_.open(std::string(testTable[testCase_].name_) + ".csv");
			}
		}

		std::function<double(int, size_t)> tb[] = {
			[&](int sequence, size_t loops) { return push_back_unittime<std::vector<ElementType> >(sequence, loops, sca); },
			[&](int sequence, size_t loops) { return push_back_unittime<std::vector<ElementType, MyAllocator> >(sequence, loops, sca); },
			[&](int sequence, size_t loops) { return push_back_unittime<boost::container::vector<ElementType>>(sequence, loops, bca); },
			[&](int sequence, size_t loops) { return push_back_unittime<boost::container::vector<ElementType, MyAllocator> >(sequence, loops, bca); },
			[&](int sequence, size_t loops) { return push_back_unittime<boost::container::vector<ElementType, boost::container::allocator<ElementType, 1>>>(sequence, loops, bca); },
			[&](int sequence, size_t loops) {
				return push_back_unittime<boost::container::vector<ElementType, boost::container::allocator<ElementType, 2>>>(sequence, loops, bca); },
		};
		ret = tb[testNum - 1](sequence, LOOPS);
		if (sequence == TestMain::TestSequenceCount_) {
          outputUnitTime(ofs_, testNum, ElementSize);
		}

	  }
		  break;
	  case SO_ALLOCATOR2_INSERT: // 305
	  case LO_ALLOCATOR2_INSERT: // 306
	  {
			if (sequence == 1) {
				std::memset(&unittimes_[0], 0, sizeof(unittimes_));
				if (testNum == 1) {
					ofs_.open(std::string(testTable[testCase_].name_) + ".csv");
				}
			}

			std::function<double(int, size_t)> tb[] = {
				[&](int sequence, size_t loops) { return test_insert<std::vector<ElementType> >(sequence, loops, sca); },
				[&](int sequence, size_t loops) { return test_insert<std::vector<ElementType, MyAllocator> >(sequence, loops, sca); },
				[&](int sequence, size_t loops) { return test_insert<boost::container::vector<ElementType>>(sequence, loops, bca); },
				[&](int sequence, size_t loops) { return test_insert<boost::container::vector<ElementType, MyAllocator> >(sequence, loops, bca); },
				[&](int sequence, size_t loops) { return test_insert<boost::container::vector<ElementType, boost::container::allocator<ElementType, 1>>>(sequence, loops, bca); },
				[&](int sequence, size_t loops) { return test_insert<boost::container::vector<ElementType, boost::container::allocator<ElementType, 2>>>(sequence, loops, bca); },
			};
			ret = tb[testNum - 1](sequence, LOOPS);
            if (sequence == TestMain::TestSequenceCount_) {
              outputUnitTime(ofs_, testNum, NumContainers);
            }
      }
		  break;
	  default:
		break;
	  }

	  if (sequence == 1) {
		if (alc.total_alloc_bytes_) {
		  outputMessage(str(format("allocator: memory leak! %u" ENDL) % alc.total_alloc_bytes_));
		}
	  }
	  return ret;
    }