Eine aufbereitete Darstellung der Quelle

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

Benutzer

Quelle  ts_expr_node.h   Sprache: C

 

/* -*- c-basic-offset: 2 -*- */
/*
  Copyright(C) 2015-2016 Brazil

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License version 2.1 as published by the Free Software Foundation.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1335  USA
*/


#pragma once

#include "../grn.h"

#include "ts_buf.h"
#include "ts_op.h"
#include "ts_types.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef enum {
  GRN_TS_EXPR_ID_NODE,     /* ID (_id). */
  GRN_TS_EXPR_SCORE_NODE,  /* Score (_score). */
  GRN_TS_EXPR_KEY_NODE,    /* Key (_key). */
  GRN_TS_EXPR_VALUE_NODE,  /* Embedded value (_value). */
  GRN_TS_EXPR_CONST_NODE,  /* Const. */
  GRN_TS_EXPR_COLUMN_NODE, /* Column. */
  GRN_TS_EXPR_OP_NODE,     /* Operator. */
  GRN_TS_EXPR_BRIDGE_NODE  /* Bridge to a subexpression. */
} grn_ts_expr_node_type;

#define GRN_TS_EXPR_NODE_COMMON_MEMBERS\
  grn_ts_expr_node_type type; /* Node type. */\
  grn_ts_data_kind data_kind; /* Abstract data type. */\
  grn_ts_data_type data_type; /* Detailed data type. */

typedef struct {
  GRN_TS_EXPR_NODE_COMMON_MEMBERS
} grn_ts_expr_node;

/* grn_ts_expr_id_node_open() creates a node associated with IDs (_id). */
grn_rc grn_ts_expr_id_node_open(grn_ctx *ctx, grn_ts_expr_node **node);

/*
 * grn_ts_expr_score_node_open() creates a node associated with scores
 * (_score).
 */

grn_rc grn_ts_expr_score_node_open(grn_ctx *ctx, grn_ts_expr_node **node);

/* grn_ts_expr_key_node_open() creates a node associated with keys (_key). */
grn_rc grn_ts_expr_key_node_open(grn_ctx *ctx, grn_obj *table,
                                 grn_ts_expr_node **node);

/*
 * grn_ts_expr_value_node_open() creates a node associated with values
 * (_value).
 */

grn_rc grn_ts_expr_value_node_open(grn_ctx *ctx, grn_obj *table,
                                   grn_ts_expr_node **node);

/* grn_ts_expr_const_node_open() creates a node associated with a const. */
grn_rc grn_ts_expr_const_node_open(grn_ctx *ctx, grn_ts_data_kind data_kind,
                                   grn_ts_data_type data_type,
                                   grn_ts_any value, grn_ts_expr_node **node);

/* grn_ts_expr_column_node_open() creates a node associated with a column. */
grn_rc grn_ts_expr_column_node_open(grn_ctx *ctx, grn_obj *column,
                                    grn_ts_expr_node **node);

/*
 * grn_ts_expr_op_node_open() creates a node associated with an operator.
 * Note that argument nodes are destroyed on failure.
 */

grn_rc grn_ts_expr_op_node_open(grn_ctx *ctx, grn_ts_op_type op_type,
                                grn_ts_expr_node **args, size_t n_args,
                                grn_ts_expr_node **node);

/* grn_ts_expr_bridge_node_open() creates a node associated with a bridge. */
grn_rc grn_ts_expr_bridge_node_open(grn_ctx *ctx, grn_ts_expr_node *src,
                                    grn_ts_expr_node *dest,
                                    grn_ts_expr_node **node);

/* grn_ts_expr_node_close() destroys a node. */
void grn_ts_expr_node_close(grn_ctx *ctx, grn_ts_expr_node *node);

/*
 * grn_ts_expr_node_deref() resolves references.
 *
 * If *node_ptr refers to a reference node, grn_ts_expr_node_deref() creates a
 * key node associated with the destination table and creates a bridge node
 * from *node_ptr to the key node. If the data kind of the bridge node is
 * GRN_TS_REF, references are recursively resolved.
 */

grn_rc grn_ts_expr_node_deref(grn_ctx *ctx, grn_ts_expr_node **node_ptr);

/* grn_ts_expr_node_evaluate() evaluates a subtree. */
grn_rc grn_ts_expr_node_evaluate(grn_ctx *ctx, grn_ts_expr_node *node,
                                 const grn_ts_record *in, size_t n_in,
                                 void *out);

/* grn_ts_expr_node_evaluate_to_buf() evaluates a subtree. */
grn_rc grn_ts_expr_node_evaluate_to_buf(grn_ctx *ctx, grn_ts_expr_node *node,
                                        const grn_ts_record *in, size_t n_in,
                                        grn_ts_buf *out);

/* grn_ts_expr_node_filter() filters records. */
grn_rc grn_ts_expr_node_filter(grn_ctx *ctx, grn_ts_expr_node *node,
                               grn_ts_record *in, size_t n_in,
                               grn_ts_record *out, size_t *n_out);

/* grn_ts_expr_node_adjust() updates scores. */
grn_rc grn_ts_expr_node_adjust(grn_ctx *ctx, grn_ts_expr_node *node,
                               grn_ts_record *io, size_t n_io);

#ifdef __cplusplus
}
#endif


Messung V0.5 in Prozent
C=80 H=100 G=90

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

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

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126438
#Domains=1897691