#ifndef VECTOR_TO_VALARRAY_08_23_2006__
#define VECTOR_TO_VALARRAY_08_23_2006__
/**

    @file Vec2Val.hpp
    @author Brian Magill
    @creationdate 8/23/2006

    $Date:$
    $Revision:$

    @copyright
     (©) Copyright 2006 by GATS Inc.
     11864 Canon Blvd., Suite 101, Newport News, VA 23606

     All Rights Reserved. No part of this software or publication may be
     reproduced, stored in a retrieval system, or transmitted, in any form
     or by any means, electronic, mechanical, photocopying, recording, or
     otherwise without the prior written permission of GATS Inc.
    
    @brief template functions for converting between valarrays and vectors  
    
*/

#include <valarray>
#include <vector>

template <typename T>
inline std::valarray<T> Vec2Val (std::vector<T> const & input)
    {
    unsigned long i;
    unsigned long N = input.size();
    std::valarray<T> output(N);
    
    for(i = 0; i < N; i++)
        {
        output[i] = input[i];
        }

    return output;
    
    };

template <typename T>
inline void Vec2Val (std::vector<T> const & input, std::valarray<T> &output)
    {
    unsigned long i;
    unsigned long N = input.size();
    output.resize(N);
    
    for(i = 0; i < N; i++)
        {
        output[i] = input[i];
        }

    };

template <typename T>
inline std::vector<T> Val2Vec (std::valarray<T> const & input)
    {
    unsigned long i;
    unsigned long N = input.size();
    std::vector <T> output(N);
    
    for(i = 0; i < N; i++)
        {
        output[i] = input[i];
        }

    return output;
    
    };

    
#endif