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

Quelle  txExprResult.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/. */


#ifndef TRANSFRMX_EXPRRESULT_H
#define TRANSFRMX_EXPRRESULT_H

#include "nsString.h"
#include "txCore.h"
#include "txResultRecycler.h"

/*
 * ExprResult
 *
 * Classes Represented:
 * BooleanResult, ExprResult, NumberResult, StringResult
 *
 * Note: for NodeSet, see NodeSet.h
 */


class txAExprResult {
 public:
  friend class txResultRecycler;

  // Update txLiteralExpr::getReturnType and sTypes in txEXSLTFunctions.cpp if
  // this enum is changed.
  enum ResultType {
    NODESET = 0,
    BOOLEAN,
    NUMBER,
    STRING,
    RESULT_TREE_FRAGMENT
  };

  explicit txAExprResult(txResultRecycler* aRecycler) : mRecycler(aRecycler) {}
  virtual ~txAExprResult() = default;

  void AddRef() {
    ++mRefCnt;
    NS_LOG_ADDREF(this, mRefCnt, "txAExprResult"sizeof(*this));
  }

  void Release();  // Implemented in txResultRecycler.cpp

  /**
   * Returns the type of ExprResult represented
   * @return the type of ExprResult represented
   **/

  virtual short getResultType() = 0;

  /**
   * Creates a String representation of this ExprResult
   * @param aResult the destination string to append the String
   *                representation to.
   **/

  virtual void stringValue(nsString& aResult) = 0;

  /**
   * Returns a pointer to the stringvalue if possible. Otherwise null is
   * returned.
   */

  virtual const nsString* stringValuePointer() = 0;

  /**
   * Converts this ExprResult to a Boolean (bool) value
   * @return the Boolean value
   **/

  virtual bool booleanValue() = 0;

  /**
   * Converts this ExprResult to a Number (double) value
   * @return the Number value
   **/

  virtual double numberValue() = 0;

 private:
  nsAutoRefCnt mRefCnt;
  RefPtr<txResultRecycler> mRecycler;
};

#define TX_DECL_EXPRRESULT                               \
  virtual short getResultType() override;                \
  virtual void stringValue(nsString& aString) override;  \
  virtual const nsString* stringValuePointer() override; \
  virtual bool booleanValue() override;                  \
  virtual double numberValue() override;

class BooleanResult : public txAExprResult {
 public:
  explicit BooleanResult(bool aValue);

  TX_DECL_EXPRRESULT

 private:
  bool value;
};

class NumberResult : public txAExprResult {
 public:
  NumberResult(double aValue, txResultRecycler* aRecycler);

  TX_DECL_EXPRRESULT

  double value;
};

class StringResult : public txAExprResult {
 public:
  explicit StringResult(txResultRecycler* aRecycler);
  StringResult(const nsAString& aValue, txResultRecycler* aRecycler);

  TX_DECL_EXPRRESULT

  nsString mValue;
};

#endif

Messung V0.5
C=92 H=100 G=95

¤ Dauer der Verarbeitung: 0.1 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.