source: issm/trunk/src/c/objects/IntInput.cpp@ 3612

Last change on this file since 3612 was 3612, checked in by Eric.Larour, 15 years ago

First new interface with new inputs

File size: 3.1 KB
RevLine 
[3612]1/*!\file IntInput.c
2 * \brief: implementation of the IntInput object
3 */
4
5#ifdef HAVE_CONFIG_H
6 #include "config.h"
7#else
8#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
9#endif
10
11#include "stdio.h"
12#include "./IntInput.h"
13#include <string.h>
14#include "../EnumDefinitions/EnumDefinitions.h"
15#include "../shared/shared.h"
16#include "../DataSet/DataSet.h"
17#include "../include/typedefs.h"
18#include "../include/types.h"
19#include "../include/macros.h"
20
21/*Object constructors and destructor*/
22/*FUNCTION IntInput::IntInput(){{{1*/
23IntInput::IntInput(){
24 return;
25}
26/*}}}*/
27/*FUNCTION IntInput::IntInput(double* values){{{1*/
28IntInput::IntInput(int in_enum_type,IssmInt in_value){
29
30 enum_type=in_enum_type;
31 value=in_value;
32}
33/*}}}*/
34/*FUNCTION IntInput::~IntInput(){{{1*/
35IntInput::~IntInput(){
36 return;
37}
38/*}}}*/
39
40/*Object management*/
41/*FUNCTION IntInput::copy{{{1*/
42Object* IntInput::copy() {
43
44 return new IntInput(this->enum_type,this->value);
45
46}
47/*}}}*/
48/*FUNCTION IntInput::DeepEcho{{{1*/
49void IntInput::DeepEcho(void){
50
51 printf("IntInput:\n");
52 printf(" enum: %i\n",this->enum_type);
53 printf(" %i\n",this->value);
54}
55/*}}}*/
56/*FUNCTION IntInput::Demarshall{{{1*/
57void IntInput::Demarshall(char** pmarshalled_dataset){
58
59 char* marshalled_dataset=NULL;
60 int i;
61
62 /*recover marshalled_dataset: */
63 marshalled_dataset=*pmarshalled_dataset;
64
65 /*this time, no need to get enum type, the pointer directly points to the beginning of the
66 *object data (thanks to DataSet::Demarshall):*/
67 memcpy(&enum_type,marshalled_dataset,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);
68 memcpy(&value,marshalled_dataset,sizeof(value));marshalled_dataset+=sizeof(value);
69
70 /*return: */
71 *pmarshalled_dataset=marshalled_dataset;
72 return;
73}
74/*}}}*/
75/*FUNCTION IntInput::Echo {{{1*/
76void IntInput::Echo(void){
77 this->DeepEcho();
78}
79/*}}}*/
80/*FUNCTION IntInput::Enum{{{1*/
81int IntInput::Enum(void){
82
83 return IntInputEnum;
84
85}
86/*}}}*/
87/*FUNCTION IntInput::EnumType{{{1*/
88int IntInput::EnumType(void){
89
90 return this->enum_type;
91
92}
93/*}}}*/
94/*FUNCTION IntInput::GetId{{{1*/
95int IntInput::GetId(void){ return -1; }
96/*}}}*/
97/*FUNCTION IntInput::GetName{{{1*/
98char* IntInput::GetName(void){
99 return "intinput";
100}
101/*}}}*/
102/*FUNCTION IntInput::Marshall{{{1*/
103void IntInput::Marshall(char** pmarshalled_dataset){
104
105 char* marshalled_dataset=NULL;
106 int enum_type=0;
107
108 /*recover marshalled_dataset: */
109 marshalled_dataset=*pmarshalled_dataset;
110
111 /*get enum type of IntInput: */
112 enum_type=IntInputEnum;
113
114 /*marshall enum: */
115 memcpy(marshalled_dataset,&enum_type,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);
116
117 /*marshall IntInput data: */
118 memcpy(marshalled_dataset,&enum_type,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);
119 memcpy(marshalled_dataset,&value,sizeof(value));marshalled_dataset+=sizeof(value);
120
121 *pmarshalled_dataset=marshalled_dataset;
122}
123/*}}}*/
124/*FUNCTION IntInput::MarshallSize{{{1*/
125int IntInput::MarshallSize(){
126
127 return sizeof(value)+
128 sizeof(enum_type)+
129 +sizeof(int); //sizeof(int) for enum type
130}
131/*}}}*/
132/*FUNCTION IntInput::MyRank{{{1*/
133int IntInput::MyRank(void){
134 extern int my_rank;
135 return my_rank;
136}
137/*}}}*/
138
139/*Object functions*/
140
Note: See TracBrowser for help on using the repository browser.