Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

SubVec.cc

Go to the documentation of this file.
00001 /*
00002     File:           SubVec.cc
00003 
00004     Function:       Implements SubVec.h
00005 
00006     Author(s):      Andrew Willmott
00007 
00008     Copyright:      (c) 1995-2000, Andrew Willmott
00009 
00010     Notes:          
00011 
00012 */
00013 
00014 #include "vl/SubVec.h"
00015 #include "vl/Vec.h"
00016 
00017 
00018 // --- Vector Memory Management -----------------------------------------------
00019 
00020 
00021 TSubVec::TSubVec(Int n, Int span, TVReal data[]) : elts(n), span(span),
00022     data(data)
00023 {
00024 }
00025 
00026 TSubVec::TSubVec(const TSubVec &v) : elts(v.elts), span(v.span), data(v.data)
00027 {
00028 }
00029 
00030 TSubVec::TSubVec(const TVec &v) : elts(v.Elts()), span(1), data(v.Ref())
00031 {
00032 }
00033 
00034 TSubVec &TSubVec::operator = (const TSubVec &v)
00035 {
00036     Assert(Elts() == v.Elts(), "(SubVec::=) Vector sizes don't match");
00037     Int i;
00038     
00039     for (i = 0; i < Elts(); i++)
00040         SELF[i] = v[i];
00041         
00042     return(SELF);
00043 }
00044 
00045 TSubVec &TSubVec::operator = (const TVec &v)
00046 {
00047     Assert(Elts() == v.Elts(), "(SubVec::=) Vector sizes don't match");
00048     Int i;
00049     
00050     for (i = 0; i < Elts(); i++)
00051         SELF[i] = v[i];
00052         
00053     return(SELF);
00054 }
00055 
00056 
00057 // --- SubVec In-Place operators ----------------------------------------------
00058 
00059 
00060 TSubVec &operator += (TSubVec &a, const TSubVec &b)
00061 {
00062     Assert(a.Elts() == b.Elts(), "(Vec::+=) vector sizes don't match"); 
00063 
00064     Int     i;
00065     
00066     for (i = 0; i < a.Elts(); i++) 
00067         a[i] += b[i];
00068     
00069     return(a);
00070 }
00071 
00072 TSubVec &operator -= (TSubVec &a, const TSubVec &b)
00073 {
00074     Assert(a.Elts() == b.Elts(), "(Vec::-=) vector sizes don't match"); 
00075 
00076     Int     i;
00077     
00078     for (i = 0; i < a.Elts(); i++) 
00079         a[i] -= b[i];
00080         
00081     return(a);
00082 }
00083 
00084 TSubVec &operator *= (TSubVec &a, const TSubVec &b)
00085 {
00086     Assert(a.Elts() == b.Elts(), "(Vec::*=) Vec sizes don't match");
00087 
00088     Int     i;
00089     
00090     for (i = 0; i < a.Elts(); i++) 
00091         a[i] *= b[i];
00092     
00093     return(a);
00094 }
00095 
00096 TSubVec &operator *= (TSubVec &v, TVReal s)
00097 {
00098     Int     i;
00099     
00100     for (i = 0; i < v.Elts(); i++) 
00101         v[i] *= s;
00102     
00103     return(v);
00104 }
00105 
00106 TSubVec &operator /= (TSubVec &a, const TSubVec &b)
00107 {
00108     Assert(a.Elts() == b.Elts(), "(Vec::/=) Vec sizes don't match");
00109 
00110     Int     i;
00111     
00112     for (i = 0; i < a.Elts(); i++) 
00113         a[i] /= b[i];
00114     
00115     return(a);
00116 }
00117 
00118 TSubVec &operator /= (TSubVec &v, TVReal s)
00119 {
00120     Int     i;
00121     
00122     for (i = 0; i < v.Elts(); i++) 
00123         v[i] /= s;
00124     
00125     return(v);
00126 }

Generated at Sat Aug 5 00:16:48 2000 for Class Library by doxygen 1.1.0 written by Dimitri van Heesch, © 1997-2000