source: flair-src/trunk/lib/FlairCore/src/Vector3Ddata.cpp @ 2

Last change on this file since 2 was 2, checked in by Sanahuja Guillaume, 6 years ago

flaircore

File size: 2.5 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5//  created:    2014/11/26
6//  filename:   Vector3Ddata.cpp
7//
8//  author:     Guillaume Sanahuja
9//              Copyright Heudiasyc UMR UTC/CNRS 7253
10//
11//  version:    $Id: $
12//
13//  purpose:    Class defining a 3D vector and a io_data
14//
15//
16/*********************************************************************/
17
18#include "Vector3Ddata.h"
19#include <string.h>
20
21#define X 0
22#define Y 1
23#define Z 2
24
25using std::string;
26
27namespace flair { namespace core {
28
29   /*! \class Vector3DdataElement
30    */
31    class Vector3DdataElement: public IODataElement {
32    public:
33        Vector3DdataElement(const Vector3Ddata *data,string name,uint32_t elem):IODataElement(data,name) {
34            this->data=data;
35            this->elem=elem;
36            size=4;
37        }
38
39        ~Vector3DdataElement() {
40        }
41
42        void CopyData(char* dst) const {
43            float value;
44            data->GetMutex();
45            switch(elem) {
46                case X:
47                    value=data->x;
48                    break;
49                case Y:
50                    value=data->y;
51                    break;
52                case Z:
53                    value=data->z;
54                    break;
55                default:
56                    data->Err("type not handled\n");
57                    value=0;
58                    break;
59            }
60            data->ReleaseMutex();
61
62            memcpy(dst,&value,sizeof(float));
63        }
64
65        ScalarType const &GetDataType() const {
66            return dataType;
67        }
68
69    private:
70        const Vector3Ddata *data;
71        uint32_t elem;
72        FloatType dataType;
73    };
74
75Vector3Ddata::Vector3Ddata(const Object* parent, string name,float x,float y,float z,uint32_t n): io_data(parent,name,n), Vector3D(x,y,z) {
76
77}
78
79Vector3Ddata::~Vector3Ddata() {
80
81}
82
83void Vector3Ddata::CopyDatas(char* dst) const {
84    GetMutex();
85    memcpy(dst,&x,sizeof(float));
86    memcpy(dst+sizeof(float),&y,sizeof(float));
87    memcpy(dst+2*sizeof(float),&z,sizeof(float));
88    ReleaseMutex();
89}
90
91IODataElement* Vector3Ddata::XElement(void) const {
92    return new Vector3DdataElement(this,"x",X);
93}
94
95IODataElement* Vector3Ddata::YElement(void) const {
96    return new Vector3DdataElement(this,"y",Y);
97}
98
99IODataElement* Vector3Ddata::ZElement(void) const {
100    return new Vector3DdataElement(this,"z",Z);
101}
102
103} // end namespace core
104} // end namespace flair
Note: See TracBrowser for help on using the repository browser.