Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


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.15 Sekunden  (vorverarbeitet)  ¤

*© 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge