File: get_vector.cc

package info (click to toggle)
semidef-oct 1998.09-1
  • links: PTS
  • area: main
  • in suites: slink
  • size: 1,384 kB
  • ctags: 255
  • sloc: fortran: 2,197; ansic: 686; cpp: 535; makefile: 82
file content (57 lines) | stat: -rw-r--r-- 1,198 bytes parent folder | download | duplicates (2)
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
//
// g e t _ v e c t o r : check that argument is a vector;
// return it if so.

//#define DEBUG

#include "ocst.h"

RowVector get_vector(const octave_value& arg, const string& caller, 
	int argnum,int& errflg)
{

  #ifdef DEBUG
  cout << "get_vector: entry from " << caller << " argument " 
       << argnum << ", errflg=" << errflg << endl;
  #endif
  RowVector retval(0);
  ostrstream errmesg;

  if(arg.is_empty() )
    return retval;

  if( 
    !( 
      arg.is_numeric_type() 
      && (
        arg.is_matrix_type() || arg.is_scalar_type() 
      ) 
    )
  )
  {
    errmesg << caller << "expecting real vector for argument " 
	<< argnum << ends;
    error(errmesg.str());
    errflg = 1;
    return retval;
  }
  else if( ! ( (arg.rows() == 1) || (arg.columns() == 1) ) )
  {
    errmesg << caller << "argument " << argnum << " (" 
	<< arg.rows() << "x" << arg.columns() << ") must be a vector" 
	<< ends;
    error(errmesg.str());
    errflg = 1;
    return retval;
  }
  else 
  {
    #ifdef DEBUG
    cout << "get_vector: normal return. Vector is" 
	<< arg.rows() << "x" << arg.columns()  << "; value="
	<< arg.vector_value() << endl;
    #endif
    return arg.vector_value();
  }
}