Skip to content
This repository has been archived by the owner on Mar 8, 2021. It is now read-only.

Commit

Permalink
[ixlib @ Arch-1:inform@tiker.net--2005-public%ixlib--mainline--1.0--p…
Browse files Browse the repository at this point in the history
…atch-1]

Fixups.
Fixed compile error in javascript interpreter.
Fixed warnings in ixlib_{array,matrix}.hpp
  • Loading branch information
Andreas Kloeckner committed Jun 5, 2005
1 parent a6e2cba commit 89bf5d0
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 48 deletions.
1 change: 1 addition & 0 deletions autogen.sh
Expand Up @@ -4,6 +4,7 @@ set -e

aclocal -I m4
autoheader
libtoolize
autoconf
automake -a
rm -f config.cache || true
Expand Down
42 changes: 24 additions & 18 deletions src/ixlib_array.hpp
Expand Up @@ -116,15 +116,14 @@ namespace ixion {
*/
template<class T,class Allocator = std::allocator<T> >
class tracking_array: public array<T,Allocator> {
pointer FirstValid,LastValid;

typedef array<T,Allocator> super;

typename super::pointer FirstValid,LastValid;

public:
tracking_array(Allocator const &alloc = Allocator())
: super(alloc),FirstValid(NULL),LastValid(NULL)
{ }
tracking_array(size_type cap,Allocator const &alloc = Allocator())
tracking_array(typename super::size_type cap,Allocator const &alloc = Allocator())
: super(cap,alloc),FirstValid(NULL),LastValid(NULL)
{ }
tracking_array(tracking_array const &source)
Expand All @@ -133,11 +132,11 @@ namespace ixion {
virtual ~tracking_array()
{ }

pointer begin() const
typename super::pointer begin() const
{ return FirstValid; }
pointer end() const
typename super::pointer end() const
{ return LastValid; }
size_type size() const {
typename super::size_type size() const {
if (!FirstValid)
return 0;
else
Expand All @@ -151,7 +150,7 @@ namespace ixion {
return *this;
}

virtual void allocate(size_type cap) {
virtual void allocate(typename super::size_type cap) {
FirstValid = NULL;
LastValid = NULL;
super::allocate(cap);
Expand All @@ -162,28 +161,33 @@ namespace ixion {
super::deallocate();
}

virtual void construct(pointer first,pointer last,
const_reference value = typename tracking_array::value_type()) {
virtual void construct(typename super::pointer first,
typename super::pointer last,
typename super::const_reference value = typename tracking_array::value_type()) {
if (!FirstValid || first<FirstValid) FirstValid = first;
if (!LastValid || last>LastValid) LastValid = last;
super::construct(first,last,value);
}
virtual void construct(pointer first,pointer last,const_pointer source) {
virtual void construct(typename super::pointer first,
typename super::pointer last,
typename super::const_pointer source) {
if (!FirstValid || first<FirstValid) FirstValid = first;
if (!LastValid || last>LastValid) LastValid = last;
super::construct(first,last,source);
}
virtual void construct(pointer item,const_reference source = T()) {
virtual void construct(typename super::pointer item,
typename super::const_reference source = T()) {
if (!FirstValid || item<FirstValid) FirstValid = item;
if (!LastValid || item+1>LastValid) LastValid = item+1;
super::construct(item,source);
}
virtual void destroy(pointer first,pointer last) {
virtual void destroy(typename super::pointer first,
typename super::pointer last) {
if (first == FirstValid) FirstValid = last;
else if (last == LastValid) LastValid = first;
super::destroy(first,last);
}
virtual void destroy(pointer item) {
virtual void destroy(typename super::pointer item) {
if (item+1 == LastValid) LastValid = item;
else // this is vital if item is the last remaining item
if (item == FirstValid) FirstValid = item+1;
Expand Down Expand Up @@ -219,7 +223,8 @@ namespace ixion {
auto_array(Allocator const &alloc = Allocator())
: super(alloc)
{ }
auto_array(size_type cap,Allocator const &alloc = Allocator())
auto_array(typename super::size_type cap,
Allocator const &alloc = Allocator())
: super(cap,alloc)
{ }
auto_array(auto_array &source)
Expand All @@ -235,7 +240,7 @@ namespace ixion {
return *this;
}

virtual void allocate(size_type cap) {
virtual void allocate(typename super::size_type cap) {
internal_deallocate();
super::allocate(cap);
}
Expand All @@ -256,7 +261,8 @@ namespace ixion {
auto_destroy_array(Allocator const &alloc = Allocator())
: super(alloc)
{ }
auto_destroy_array(size_type cap,Allocator const &alloc = Allocator())
auto_destroy_array(typename super::size_type cap,
Allocator const &alloc = Allocator())
: super(cap,alloc)
{ }
auto_destroy_array(auto_destroy_array &source)
Expand All @@ -275,7 +281,7 @@ namespace ixion {
return *this;
}

virtual void allocate(size_type cap) {
virtual void allocate(typename super::size_type cap) {
internal_destroy();
internal_deallocate();
super::allocate(cap);
Expand Down
12 changes: 8 additions & 4 deletions src/ixlib_matrix.hpp
Expand Up @@ -257,7 +257,8 @@ inline ixion::matrix<T,Traits>::matrix(TSize width,TSize height,InputIterator fi

// matrix operators -----------------------------------------------------------
template <class T,class Traits>
inline ixion::matrix<T,Traits> operator*(ixion::matrix<T,Traits>::scalar_type scalar,ixion::matrix<T,Traits> const &mat) {
inline ixion::matrix<T,Traits> operator*(typename ixion::matrix<T,Traits>::scalar_type scalar,
typename ixion::matrix<T,Traits> const &mat) {
ixion::matrix<T,Traits> copy(mat);
copy *= scalar;
return copy;
Expand All @@ -267,7 +268,8 @@ inline ixion::matrix<T,Traits> operator*(ixion::matrix<T,Traits>::scalar_type sc


template <class T,class Traits>
inline ixion::matrix<T,Traits> operator*(ixion::matrix<T,Traits> const &mat,ixion::matrix<T,Traits>::scalar_type scalar) {
inline ixion::matrix<T,Traits> operator*(ixion::matrix<T,Traits> const &mat,
typename ixion::matrix<T,Traits>::scalar_type scalar) {
ixion::matrix<T,Traits> copy(mat);
copy *= scalar;
return copy;
Expand All @@ -277,7 +279,8 @@ inline ixion::matrix<T,Traits> operator*(ixion::matrix<T,Traits> const &mat,ixio


template <class T,class Traits>
inline std::istream &operator>>(std::istream &istr,ixion::matrix<T,Traits> &mat) {
inline std::istream &operator>>(std::istream &istr,
ixion::matrix<T,Traits> &mat) {
ixion::TSize height,width;
char c;
istr >> height >> c >> width;
Expand All @@ -292,7 +295,8 @@ inline std::istream &operator>>(std::istream &istr,ixion::matrix<T,Traits> &mat)


template <class T,class Traits>
inline std::ostream &operator<<(std::ostream &ostr,ixion::matrix<T,Traits> const &mat) {
inline std::ostream &operator<<(std::ostream &ostr,
ixion::matrix<T,Traits> const &mat) {
mat.outMatrix(ostr);
return ostr;
}
Expand Down
12 changes: 8 additions & 4 deletions src/ixlib_matrix_impl.hpp
Expand Up @@ -228,7 +228,8 @@ ixion::matrix<T,Traits> &ixion::matrix<T,Traits>::swapColumnSelf(TIndex col1,TIn


template <class T,class Traits>
ixion::matrix<T,Traits>::entry_type ixion::matrix<T,Traits>::det() const {
typename ixion::matrix<T,Traits>::entry_type
ixion::matrix<T,Traits>::det() const {
if (Width != Height) EX_DIMEN
try {
TSize swaps;
Expand All @@ -246,7 +247,8 @@ ixion::matrix<T,Traits>::entry_type ixion::matrix<T,Traits>::det() const {


template <class T,class Traits>
ixion::matrix<T,Traits>::entry_type ixion::matrix<T,Traits>::norm(TMatrixNorm norm) const {
typename ixion::matrix<T,Traits>::entry_type
ixion::matrix<T,Traits>::norm(TMatrixNorm norm) const {
entry_type result,sum,entry;
switch (norm) {
case NORM_TOTAL:
Expand Down Expand Up @@ -293,7 +295,8 @@ ixion::matrix<T,Traits>::entry_type ixion::matrix<T,Traits>::norm(TMatrixNorm no


template <class T,class Traits>
ixion::matrix<T,Traits>::entry_type ixion::matrix<T,Traits>::trace() const {
typename ixion::matrix<T,Traits>::entry_type
ixion::matrix<T,Traits>::trace() const {
if (Width != Height) EX_DIMEN
entry_type result = 0;
for (TIndex i = 0;i<Width;i++)
Expand All @@ -305,7 +308,8 @@ ixion::matrix<T,Traits>::entry_type ixion::matrix<T,Traits>::trace() const {


template <class T,class Traits>
ixion::matrix<T,Traits>::entry_type ixion::matrix<T,Traits>::diagonalProduct() const {
typename ixion::matrix<T,Traits>::entry_type
ixion::matrix<T,Traits>::diagonalProduct() const {
if (Width != Height) EX_DIMEN
entry_type result = 1;
for (TIndex i = 0;i<Width;i++)
Expand Down
52 changes: 30 additions & 22 deletions test/javascript.cpp
Expand Up @@ -34,53 +34,61 @@ class callIn : public value {



ref<value> callIn::call(parameter_list const &parameters) {
if (parameters.size() != 1) {
cout << "callIn needs exactly one parameter" << endl;
return makeNull();
ref<value> callIn::call(parameter_list const &parameters)
{
if (parameters.size() != 1)
{
cout << "callIn needs exactly one parameter" << endl;
return makeNull();
}
if (parameters[0]->getType() == VT_NULL) {
cout << "got null" << endl;
return makeNull();
if (parameters[0]->getType() == VT_NULL)
{
cout << "got null" << endl;
return makeNull();
}
else if (parameters[0]->getType() == VT_INTEGER) {
cout << "got an int:" << parameters[0]->toInt() << endl;
return makeNull();
else if (parameters[0]->getType() == VT_INTEGER)
{
cout << "got an int:" << parameters[0]->toInt() << endl;
return makeNull();
}
else if (parameters[0]->getType() == VT_FLOATING_POINT) {
cout << "got a float:" << parameters[0]->toFloat() << endl;
return makeNull();
else if (parameters[0]->getType() == VT_FLOATING_POINT)
{
cout << "got a float:" << parameters[0]->toFloat() << endl;
return makeNull();
}
else if (parameters[0]->getType() == VT_STRING) {
cout << "got a string:" << parameters[0]->toString() << endl;
return makeConstant(17);
else if (parameters[0]->getType() == VT_STRING)
{
cout << "got a string:" << parameters[0]->toString() << endl;
return makeConstant(17);
}
cout << "got something else" << endl;
return makeNull();
}
}
// end complex call-in example ------------------------------------------------




// simple call-in example -----------------------------------------------------
IXLIB_JS_DECLARE_FUNCTION(write) {
IXLIB_JS_DECLARE_FUNCTION(writeStr)
{
FOREACH_CONST(first,parameters,parameter_list)
cout << (*first)->toString();
return makeNull();
}
}
// end simple call-in example -------------------------------------------------




// simple call-in example -----------------------------------------------------
IXLIB_JS_DECLARE_FUNCTION(writeLn) {
IXLIB_JS_DECLARE_FUNCTION(writeLn)
{
FOREACH_CONST(first,parameters,parameter_list)
cout << (*first)->toString();
cout << endl;
return makeNull();
}
}
// end simple call-in example -------------------------------------------------


Expand All @@ -99,7 +107,7 @@ int main(int argc,char **argv) {
// end complex call-in example --------------------------------------------

// simple call-in example -------------------------------------------------
ev = new write;
ev = new writeStr;
ip.RootScope->addMember("write",ev);
// end simple call-in example ---------------------------------------------

Expand Down

0 comments on commit 89bf5d0

Please sign in to comment.