Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/js/xpconnect/src/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  XPCException.cpp   Sprache: C

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


/* An implementaion of nsIException. */

#include "xpcprivate.h"
#include "nsError.h"

#include <iterator>

/***************************************************************************/
/* Quick and dirty mapping of well known result codes to strings. We only
 *  call this when building an exception object, so iterating the short array
 *  is not too bad.
 *
 *  It sure would be nice to have exceptions declared in idl and available
 *  in some more global way at runtime.
 */


static const struct ResultMap {
  nsresult rv;
  const char* name;
  const char* format;
} map[] = {
#define XPC_MSG_DEF(val, format) {(val), #val, format},
#include "xpc.msg"
#undef XPC_MSG_DEF
    {NS_OK, 0, 0}  // sentinel to mark end of array
};

#define RESULT_COUNT (std::size(map) - 1)

// static
bool nsXPCException::NameAndFormatForNSResult(nsresult rv, const char** name,
                                              const char** format) {
  for (const ResultMap* p = map; p->name; p++) {
    if (rv == p->rv) {
      if (name) *name = p->name;
      if (format) *format = p->format;
      return true;
    }
  }
  return false;
}

// static
const void* nsXPCException::IterateNSResults(nsresult* rv, const char** name,
                                             const char** format,
                                             const void** iterp) {
  const ResultMap* p = (const ResultMap*)*iterp;
  if (!p) {
    p = map;
  } else {
    p++;
  }
  if (!p->name) {
    p = nullptr;
  } else {
    if (rv) {
      *rv = p->rv;
    }
    if (name) {
      *name = p->name;
    }
    if (format) {
      *format = p->format;
    }
  }
  *iterp = p;
  return p;
}

// static
uint32_t nsXPCException::GetNSResultCount() { return RESULT_COUNT; }

Messung V0.5
C=94 H=99 G=96

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.