mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	Find and fix missing virtual override markings. Updates cmake maintainer flags to include -Wsuggest-override and -Winconsistent-missing-override.
		
			
				
	
	
		
			131 lines
		
	
	
	
		
			5.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
	
		
			5.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/**************** Array H Declares Source Code File (.H) ***************/
 | 
						|
/*  Name: ARRAY.H    Version 3.1                                       */
 | 
						|
/*                                                                     */
 | 
						|
/*  (C) Copyright to the author Olivier BERTRAND          2005-2017    */
 | 
						|
/*                                                                     */
 | 
						|
/*  This file contains the ARRAY and VALBASE derived classes declares. */
 | 
						|
/***********************************************************************/
 | 
						|
#ifndef __ARRAY_H
 | 
						|
#define __ARRAY_H
 | 
						|
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Include required application header files                          */
 | 
						|
/***********************************************************************/
 | 
						|
#include "xobject.h"
 | 
						|
#include "valblk.h"
 | 
						|
#include "csort.h"
 | 
						|
 | 
						|
typedef class ARRAY *PARRAY;
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class ARRAY  with all its method functions.          */
 | 
						|
/*  Note: This is not a general array class that could be defined as   */
 | 
						|
/*  a template class, but rather a specific object containing a list   */
 | 
						|
/*  of values to be processed by the filter IN operator.               */
 | 
						|
/*  In addition it must act as a metaclass by being able to give back  */
 | 
						|
/*  the type of values it contains.                                    */
 | 
						|
/*  It must also be able to convert itself from some type to another.  */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport ARRAY : public XOBJECT, public CSORT { // Array descblock
 | 
						|
  friend class MULAR;
 | 
						|
//friend class VALLST;
 | 
						|
//friend class SFROW;
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  ARRAY(PGLOBAL g, int type, int size, int len = 1, int prec = 0);
 | 
						|
//ARRAY(PGLOBAL g, PQUERY qryp);
 | 
						|
//ARRAY(PGLOBAL g, PARRAY par, int k);
 | 
						|
 | 
						|
  // Implementation
 | 
						|
  int   GetType(void) override {return TYPE_ARRAY;}
 | 
						|
  int   GetResultType(void) override {return Type;}
 | 
						|
  int   GetLength(void) override {return Len;}
 | 
						|
  int   GetLengthEx(void) override {return Len;}
 | 
						|
  int   GetScale() override {return 0;}
 | 
						|
          int   GetNval(void) {return Nval;}
 | 
						|
          int   GetSize(void) {return Size;}
 | 
						|
//        PVAL  GetValp(void) {return Valp;}
 | 
						|
          void  SetType(int atype) {Type = atype;}
 | 
						|
//        void  SetCorrel(bool b) {Correlated = b;}
 | 
						|
 | 
						|
  // Methods
 | 
						|
  using XOBJECT::GetIntValue;
 | 
						|
  void  Reset(void) override {Bot = -1;}
 | 
						|
  int   Qcompare(int *, int *) override;
 | 
						|
  bool  Compare(PXOB) override {assert(false); return false;}
 | 
						|
  bool  SetFormat(PGLOBAL, FORMAT&) override {assert(false); return false;}
 | 
						|
//virtual int   CheckSpcCol(PTDB, int) {return 0;}
 | 
						|
  void  Printf(PGLOBAL g, FILE *f, uint n) override;
 | 
						|
  void  Prints(PGLOBAL g, char *ps, uint z) override;
 | 
						|
//        void  Empty(void);
 | 
						|
          void  SetPrecision(PGLOBAL g, int p);
 | 
						|
          bool  AddValue(PGLOBAL g, PSZ sp);
 | 
						|
          bool  AddValue(PGLOBAL g, void *p);
 | 
						|
          bool  AddValue(PGLOBAL g, short n);
 | 
						|
          bool  AddValue(PGLOBAL g, int n);
 | 
						|
          bool  AddValue(PGLOBAL g, double f);
 | 
						|
          bool  AddValue(PGLOBAL g, PXOB xp);
 | 
						|
          bool  AddValue(PGLOBAL g, PVAL vp);
 | 
						|
          void  GetNthValue(PVAL valp, int n);
 | 
						|
          int   GetIntValue(int n);
 | 
						|
          char *GetStringValue(int n);
 | 
						|
          BYTE  Vcompare(PVAL vp, int n);
 | 
						|
          void  Save(int);
 | 
						|
          void  Restore(int);
 | 
						|
          void  Move(int, int);
 | 
						|
          bool  Sort(PGLOBAL g);
 | 
						|
          void *GetSortIndex(PGLOBAL g);
 | 
						|
          bool  Find(PVAL valp);
 | 
						|
          bool  FilTest(PGLOBAL g, PVAL valp, OPVAL opc, int opm);
 | 
						|
          int   Convert(PGLOBAL g, int k, PVAL vp = NULL);
 | 
						|
          int   BlockTest(PGLOBAL g, int opc, int opm,
 | 
						|
                          void *minp, void *maxp, bool s);
 | 
						|
          PSZ   MakeArrayList(PGLOBAL g);
 | 
						|
          bool  CanBeShort(void);
 | 
						|
          bool  GetSubValue(PGLOBAL g, PVAL valp, int *kp);
 | 
						|
 | 
						|
 protected:
 | 
						|
  // Members
 | 
						|
  PMBV   Valblk;        // To the MBVALS class
 | 
						|
  PVBLK  Vblp;          // To Valblock of the data array
 | 
						|
//PVAL   Valp;          // The value used for Save and Restore is Value
 | 
						|
  int    Size;          // Size of value array
 | 
						|
  int    Nval;          // Total number of items in array
 | 
						|
  int    Ndif;          // Total number of distinct items in array
 | 
						|
  int    Xsize;         // Size of Index (used for correlated arrays)
 | 
						|
  int    Type;          // Type of individual values in the array
 | 
						|
  int    Len;           // Length of character string
 | 
						|
  int    Bot;           // Bottom of research index
 | 
						|
  int    Top;           // Top    of research index
 | 
						|
  int    X, Inf, Sup;   // Used for block optimization
 | 
						|
//bool   Correlated;    // -----------> Temporary
 | 
						|
  }; // end of class ARRAY
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class MULAR with all its method functions.           */
 | 
						|
/*  This class is used when constructing the arrays of constants used  */
 | 
						|
/*  for indexing. Its only purpose is to provide a way to sort, reduce */
 | 
						|
/*  and reorder the arrays of multicolumn indexes as one block. Indeed */
 | 
						|
/*  sorting the arrays independantly would break the correspondance of */
 | 
						|
/*  column values.                                                     */
 | 
						|
/***********************************************************************/
 | 
						|
class MULAR : public CSORT, public BLOCK {   // No need to be an XOBJECT
 | 
						|
 public:
 | 
						|
  // Constructor
 | 
						|
  MULAR(PGLOBAL g, int n);
 | 
						|
 | 
						|
  // Implementation
 | 
						|
  void SetPars(PARRAY par, int i) {Pars[i] = par;}
 | 
						|
 | 
						|
  // Methods
 | 
						|
  int Qcompare(int *i1, int *i2) override;   // Sort compare routine
 | 
						|
          bool Sort(PGLOBAL g);
 | 
						|
 | 
						|
 protected:
 | 
						|
  // Members
 | 
						|
  int     Narray;         // The number of sub-arrays
 | 
						|
  PARRAY *Pars;           // To the block of real arrays
 | 
						|
  }; // end of class ARRAY
 | 
						|
 | 
						|
#endif // __ARRAY_H
 |