MCPcopy Create free account
hub / github.com/RHVoice/RHVoice / Next

Method Next

src/sapi/IEnumSpObjectTokensImpl.cpp:56–92  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54 }
55
56 STDMETHODIMP IEnumSpObjectTokensImpl::Next(ULONG celt,ISpObjectToken **pelt,ULONG *pceltFetched)
57 {
58 if(celt==0)
59 return E_INVALIDARG;
60 if(pelt==0)
61 return E_POINTER;
62 if((pceltFetched==0)&&(celt>1))
63 return E_POINTER;
64 if(pceltFetched!=0)
65 *pceltFetched=0;
66 try
67 {
68 std::vector<ISpObjectTokenPtr> tokens;
69 unsigned long next_index=std::min(index+celt,static_cast<unsigned long>(sapi_voices.size()));
70 for(unsigned long i=index;i<next_index;++i)
71 {
72 tokens.push_back(create_token(sapi_voices[i]));
73 }
74 for(unsigned long i=0;i<tokens.size();++i)
75 {
76 tokens[i].AddRef();
77 pelt[i]=tokens[i].GetInterfacePtr();
78 }
79 if(pceltFetched)
80 *pceltFetched=tokens.size();
81 index+=tokens.size();
82 return ((tokens.size()==celt)?S_OK:S_FALSE);
83 }
84 catch(const std::bad_alloc&)
85 {
86 return E_OUTOFMEMORY;
87 }
88 catch(...)
89 {
90 return E_UNEXPECTED;
91 }
92 }
93
94 STDMETHODIMP IEnumSpObjectTokensImpl::Skip(ULONG celt)
95 {

Callers

nothing calls this directly

Calls 2

AddRefMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected