void DiMotionSerializerImpl::WriteAnimation( const DiAnimation* pkAnimation ) { WriteChunkHeader(DI_ANIMATION,CalcAnimationSize(pkAnimation)); // name WriteString(pkAnimation->GetName()); // length float len = pkAnimation->GetLength(); WriteFloats(&len, 1); auto trackIt = pkAnimation->GetNodeClipsIterator(); while(trackIt.HasMoreElements()) { WriteNodeClip(trackIt.GetNext()); } auto attachIt = pkAnimation->GetAttachClipsIterator(); while(attachIt.HasMoreElements()) { DiNodeClip * pAttach = attachIt.GetNext(); WriteAttachClip(pAttach); } }
NS_IMETHODIMP nsIEHistoryEnumerator::HasMoreElements(bool* _retval) { *_retval = false; EnsureInitialized(); MOZ_ASSERT(mURLEnumerator, "Should have instanced an IE History URLEnumerator"); if (!mURLEnumerator) return NS_OK; STATURL statURL; ULONG fetched; // First argument is not implemented, so doesn't matter what we pass. HRESULT hr = mURLEnumerator->Next(1, &statURL, &fetched); if (FAILED(hr) || fetched != 1UL) { // Reached the last entry. return NS_OK; } nsCOMPtr<nsIURI> uri; if (statURL.pwcsUrl) { nsDependentString url(statURL.pwcsUrl); nsresult rv = NS_NewURI(getter_AddRefs(uri), url); ::CoTaskMemFree(statURL.pwcsUrl); if (NS_FAILED(rv)) { // Got a corrupt or invalid URI, continue to the next entry. return HasMoreElements(_retval); } } nsDependentString title(statURL.pwcsTitle ? statURL.pwcsTitle : L""); bool lastVisitTimeIsValid; PRTime lastVisited = WinMigrationFileTimeToPRTime(&(statURL.ftLastVisited), &lastVisitTimeIsValid); mCachedNextEntry = do_CreateInstance("@mozilla.org/hash-property-bag;1"); MOZ_ASSERT(mCachedNextEntry, "Should have instanced a new property bag"); if (mCachedNextEntry) { mCachedNextEntry->SetPropertyAsInterface(NS_LITERAL_STRING("uri"), uri); mCachedNextEntry->SetPropertyAsAString(NS_LITERAL_STRING("title"), title); if (lastVisitTimeIsValid) { mCachedNextEntry->SetPropertyAsInt64(NS_LITERAL_STRING("time"), lastVisited); } *_retval = true; } if (statURL.pwcsTitle) ::CoTaskMemFree(statURL.pwcsTitle); return NS_OK; }
/** * Prints graph structure in stderr. */ void vf_Graph::DumpGraph() { #if _VF_DEBUG VF_DEBUG("Method: " << class_get_name(m_ctx->m_class) << "::" << m_ctx->m_name << m_ctx->m_descriptor << endl); VF_DEBUG("-- start --"); ResetNodeIterator(); while (HasMoreElements()) { DumpNode(GetNextNode()); } #endif // _VF_DEBUG } // vf_Graph::DumpGraph
NS_IMETHOD GetNext(nsISupports **result) { NS_ENSURE_ARG_POINTER(result); *result = nsnull; PRBool hasMore; HasMoreElements(&hasMore); if (!hasMore) return NS_ERROR_FAILURE; *result = mNext; NS_IF_ADDREF(*result); mNext = nsnull; return *result ? NS_OK : NS_ERROR_FAILURE; }
NS_IMETHODIMP ContainerEnumeratorImpl::GetNext(nsISupports** aResult) { nsresult rv; bool hasMore; rv = HasMoreElements(&hasMore); if (NS_FAILED(rv)) return rv; if (! hasMore) return NS_ERROR_UNEXPECTED; NS_ADDREF(*aResult = mResult); mResult = nullptr; return NS_OK; }
NS_IMETHOD GetNext(nsISupports **result) { if (NS_WARN_IF(!result)) return NS_ERROR_INVALID_ARG; *result = nullptr; bool hasMore; HasMoreElements(&hasMore); if (!hasMore) return NS_ERROR_FAILURE; *result = mNext; NS_IF_ADDREF(*result); mNext = nullptr; return *result ? NS_OK : NS_ERROR_FAILURE; }
NS_IMETHOD GetNext(nsISupports** aResult) override { if (NS_WARN_IF(!aResult)) { return NS_ERROR_INVALID_ARG; } *aResult = nullptr; bool hasMore; HasMoreElements(&hasMore); if (!hasMore) { return NS_ERROR_FAILURE; } *aResult = mNext; NS_IF_ADDREF(*aResult); mNext = nullptr; return *aResult ? NS_OK : NS_ERROR_FAILURE; }
/** * Dumps graph node in file in DOT format. */ void vf_Graph::DumpDotGraph() { #if _VF_DEBUG /** * Graphviz has a hardcoded label length limit. Windows has a file * name length limit as well. */ const int MAX_LABEL_LENGTH = 80; // get class and method name const char *class_name = class_get_name(m_ctx->m_class); // create file name size_t len = strlen(class_name) + strlen(m_ctx->m_name) + strlen(m_ctx->m_descriptor) + 6; char *fname = (char *) STD_ALLOCA(len); sprintf(fname, "%s_%s%s", class_name, m_ctx->m_name, m_ctx->m_descriptor); char *f_start; char *pointer; if (len > MAX_LABEL_LENGTH) { f_start = fname + len - MAX_LABEL_LENGTH; // shift to the start of the nearest lexem for (pointer = f_start;; pointer++) { if (isalnum(*pointer)) { continue; } else if (!*pointer) { // end of the string break; } else { // record the first matching position f_start = pointer; break; } } } else { f_start = fname; } for (pointer = f_start;; pointer++) { if (isalnum(*pointer)) { continue; } else if (!*pointer) { // end of the string break; } else { *pointer = '_'; } } // pointer currently points to the end of the string sprintf(pointer, ".dot"); // create .dot file ofstream fout(f_start); if (fout.fail()) { VF_DEBUG("vf_Graph::DumpDotGraph: error opening file: " << f_start); return; } // create name of graph sprintf(fname, "%s.%s%s", class_name, m_ctx->m_name, m_ctx->m_descriptor); // print graph to file DumpDotHeader(f_start, fout); ResetNodeIterator(); while (HasMoreElements()) { DumpDotNode(GetNextNode(), fout); } DumpDotEnd(fout); // close file fout.flush(); fout.close(); #endif // _VF_DEBUG } // vf_Graph::DumpDotGraph