//!;;Rpy::+
//!;;Rpy::ModelElement: iddtypes::idd_base_types
//!;;Rpy::
//!;;Rpy::Component: IDDComponent 
//!;;Rpy::Configuration: IDDConfig
//!;;Rpy::Project: IDD
//!;;Rpy::
//!;;Rpy::FilePath: idd_base_types.h
//!;;Rpy::Tag: $Tag
//!;;Rpy::
//!;;Rpy::Copyright: Leonardocompany - COMPANY RESTRICTED
//!;;Rpy::
//!;;Rpy::Generated by Rhapsody: 7.5.3 
//!;;Rpy::-


#ifndef idd_base_types_H
#define idd_base_types_H

//## auto_generated
#include "iddtypes.h"
namespace iddtypes
{
    //## package iddtypes::idd_base_types
    
    
    //## type boolean
    typedef unsigned int boolean;
    
    //#[ type low_high_t
    enum low_high_t CPP_ENUM_BASE(int) { low, high }  ;
    //#]
    
    //## type metres_t
    typedef float metres_t;
    
    //## type metres_per_sec_t
    typedef float metres_per_sec_t;
    
    //#[ type validity_t
    enum validity_t CPP_ENUM_BASE(int) { not_valid, valid }  ;
    //#]
    
    //## type timetag_t
    typedef int timetag_t;
    
    //## type _vector_t_
    struct _vector_t_
    {
        float x;		//## attribute x
        float y;		//## attribute y
        float z;		//## attribute z
    };
    
    // The following are cartesian vectors which are structually
    // equivalent to allow generic functions for them 
    //## type vector_t
    typedef _vector_t_ vector_t;
    
    //## type radians_t
    typedef float radians_t;
    
    //## type radians_per_sec_t
    typedef float radians_per_sec_t;
    
    //## type radians_per_sec2_t
    typedef float radians_per_sec2_t;
    
    //## type radians2_t
    typedef float radians2_t;
    
    //## type metres_per_sec2_t
    typedef float metres_per_sec2_t;
    
    //## type pure_number_t
    typedef float pure_number_t;
    
    //## type range_bin_t
    typedef unsigned int range_bin_t;
    
    //## type hertz_t
    typedef float hertz_t;
    
    //## type seconds_t
    typedef float seconds_t;
    
    //#[ type az_el_t
    typedef struct {
      radians_t azimuth;
      radians_t elevation;
    } az_el_t;
    //#]
    
    //## type decibel_t
    typedef float decibel_t;
    
    //## type metres2_t
    typedef float metres2_t;
    
    //#[ type active_t
    enum active_t CPP_ENUM_BASE(int) { not_active, active };
    //#]
    
    //#[ type band_indicator_t
    enum band_indicator_t CPP_ENUM_BASE(int) { fixed_freq, narrow_band, wide_band };
    //#]
    
    //## type mach_no_t
    typedef float mach_no_t;
    
    //#[ type monopulse_validity_enum_t
    enum monopulse_validity_enum_t {mp_invalid=0, mp_az_valid=1, mp_el_valid=2};
    //#]
    
    //#[ type monopulse_validity_t
    struct monopulse_validity_t
    {
        uint32_t validity;
    
        bool azValid() const {return (validity & mp_az_valid)!=0;}
        bool elValid() const {return (validity & mp_el_valid)!=0;}
        bool isValid() const {return validity!=0;}
        
        void operator=(unsigned int v) { validity=v;}
        operator int() const { return validity;}
        
        void operator=(monopulse_validity_t v) { validity=v.validity;}
        
    };
    
    //#]
}

#endif
//;;Rpy:: end


