NS_NOTYETIMPLEMENTED("sorry"); return NS_ERROR_NOT_IMPLEMENTED;
NS_PRECONDITION(aProperty != nsnull, "null ptr"); if (! aProperty) return NS_ERROR_NULL_POINTER;  NS_PRECONDITION(aTarget != nsnull, "null ptr"); if (! aTarget) return NS_ERROR_NULL_POINTER;  nsresult rv;  *aSource = nsnull;  if (aProperty == kNC_URL) {     nsCOMPtr<nsIRDFResource> target = do_QueryInterface(aTarget); if (! target) return NS_RDF_NO_VALUE;  mdb_err err;  nsXPIDLCString uri; rv = target->GetValueConst(getter_Shares(uri)); if (NS_FAILED(rv)) return rv;  PRInt32 len = PL_strlen(uri); mdbYarn yarn = { (void*)NS_STATIC_CAST(const char*, uri), len, len, 0, 0, nsnull };  mdbOid rowId; nsMdbPtr<nsIMdbRow> row(mEnv); err = mStore->FindRow(mEnv, kToken_HistoryRowScope, kToken_URLColumn, &yarn, &rowId, getter_Acquires(row)); if (err != 0) return NS_ERROR_FAILURE;  if (row) {  return aTarget->QueryInterface(NS_GET_IID(nsIRDFResource), (void**) aSource); } } else if ((aProperty == kNC_Date) || (aProperty == kNC_VisitCount) || (aProperty == kNC_Name) || (aProperty == kNC_Referrer)) {  nsCOMPtr<nsISimpleEnumerator> sources; rv = GetSources(aProperty, aTarget, aTruthValue, getter_AddRefs(sources)); if (NS_FAILED(rv)) return rv;  PRBool hasMore; rv = sources->HasMoreElements(&hasMore); if (NS_FAILED(rv)) return rv;  if (hasMore) { nsCOMPtr<nsISupports> isupports; rv = sources->GetNext(getter_AddRefs(isupports)); if (NS_FAILED(rv)) return rv;  return CallQueryInterface(isupports, aSource); } }  return NS_RDF_NO_VALUE;
nsGlobalHistory::GetSource(nsIRDFResource* aProperty,                           nsIRDFNode* aTarget,                           PRBool aTruthValue,                           nsIRDFResource** aSource){  NS_NOTYETIMPLEMENTED("sorry");  return NS_ERROR_NOT_IMPLEMENTED;}