[5c15f2]: src / ov-galois.h Maximize Restore History

Download this file

ov-galois.h    171 lines (110 with data), 4.7 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/*
Copyright (C) 2003 David Bateman
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program 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 General Public License
for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
In addition to the terms of the GPL, you are permitted to link
this program with any Open Source program, as defined by the
Open Source Initiative (www.opensource.org)
*/
#if !defined (octave_galois_h)
#define octave_galois_h 1
#include <cstdlib>
#include <iostream>
#include <string>
#include <octave/dim-vector.h>
#include "galois.h"
// The keys of the values in the octave map
#define __GALOIS_PRIMPOLY_STR "prim_poly"
#define __GALOIS_ORDER_STR "m"
#define __GALOIS_DATA_STR "x"
#ifdef GALOIS_DISP_PRIVATES
#define __GALOIS_LENGTH_STR "n"
#define __GALOIS_ALPHA_TO_STR "alpha_to"
#define __GALOIS_INDEX_OF_STR "index_of"
#endif
class octave_value_list;
class tree_walker;
// Data structures.
class
octave_galois : public octave_base_value
{
public:
octave_galois (const Matrix& data = Matrix(0,0), const int _m = 1,
const int _primpoly = 0) {
gval = galois (data, _m, _primpoly); }
octave_galois (const galois& gm)
: octave_base_value (), gval (gm) { }
octave_galois (const octave_galois& s)
: octave_base_value (), gval (s.gval) { }
~octave_galois (void) { };
OV_REP_TYPE *clone (void) const { return new octave_galois (*this); }
OV_REP_TYPE *empty_clone (void) const { return new octave_galois (); }
octave_value subsref (const std::string &type,
const std::list<octave_value_list>& idx);
octave_value do_index_op (const octave_value_list& idx,
bool resize_ok);
octave_value do_index_op (const octave_value_list& idx)
{ return do_index_op (idx, 0); }
void assign (const octave_value_list& idx, const galois& rhs);
dim_vector dims (void) const { return gval.dims (); }
octave_value resize (const dim_vector& dv, bool) const;
size_t byte_size (void) const { return gval.byte_size (); }
octave_value all (int dim = 0) const { return gval.all(dim); }
octave_value any (int dim = 0) const { return gval.any(dim); }
bool is_matrix_type (void) const { return true; }
bool is_defined (void) const { return true; }
bool is_numeric_type (void) const { return true; }
bool is_constant (void) const { return true; }
bool is_true (void) const;
bool is_galois_type (void) const { return true; }
bool print_as_scalar (void) const;
void print (std::ostream& os, bool pr_as_read_syntax = false) const;
void print_raw (std::ostream& os, bool pr_as_read_syntax = false) const;
bool print_name_tag (std::ostream& os, const std::string& name) const;
void print_info (std::ostream& os, const std::string& prefix) const;
bool is_real_matrix (void) const { return false; }
bool is_real_type (void) const { return false; }
// XXX FIXME XXX
bool valid_as_scalar_index (void) const { return false; }
double double_value (bool = false) const;
double scalar_value (bool frc_str_conv = false) const
{ return double_value (frc_str_conv); }
Matrix matrix_value (bool = false) const;
NDArray array_value (bool = false) const;
Complex complex_value (bool = false) const;
ComplexMatrix complex_matrix_value (bool = false) const
{ return ComplexMatrix ( matrix_value()); }
galois galois_value (void) const { return gval; }
octave_value_list dotref (const octave_value_list& idx);
int m (void) const { return gval.m(); }
int primpoly (void) const { return gval.primpoly(); }
bool save_ascii (std::ostream& os);
bool load_ascii (std::istream& is);
bool save_binary (std::ostream& os, bool& save_as_floats);
bool load_binary (std::istream& is, bool swap,
oct_mach_info::float_format fmt);
#if defined (HAVE_HDF5)
bool save_hdf5 (hid_t loc_id, const char *name, bool save_as_floats);
bool load_hdf5 (hid_t loc_id, const char *name, bool have_h5giterate_bug);
#endif
private:
// The array used to managed the Galios Field data
galois gval;
DECLARE_OCTAVE_ALLOCATOR
DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
};
#endif
/*
;;; Local Variables: ***
;;; mode: C++ ***
;;; End: ***
*/