Index: /issm/trunk-jpl/src/c/classes/Inputs/DatasetInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/DatasetInput.cpp	(revision 26171)
+++ /issm/trunk-jpl/src/c/classes/Inputs/DatasetInput.cpp	(revision 26172)
@@ -90,7 +90,45 @@
 	marshallhandle->call(this->numberofvertices_local);
 	marshallhandle->call(this->ids,numids);
-	//if (marshallhandle->OperationNumber() == MARSHALLING_LOAD) inputs = new Inputs();
-	//inputs->Marshall(marshallhandle);
-	_error_("not implemented");
+
+	/*Allocate memory if need be*/
+	int N = this->numids; _assert_(N>=0 && N<1e6);
+	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+		if(N){
+			this->inputs = xNew<Input*>(N);
+			for(int i=0;i<N;i++) this->inputs[i] = NULL;
+		}
+		else{
+			this->inputs = NULL;
+		}
+	}
+
+	/*Marshall!*/
+	if(marshallhandle->OperationNumber()!=MARSHALLING_LOAD){
+		for(int i=0;i<N;i++){
+			_assert_(this->inputs[i]);
+			object_enum = this->inputs[i]->ObjectEnum();
+			marshallhandle->call(object_enum);
+			this->inputs[i]->Marshall(marshallhandle);
+		}
+	}
+	else{
+		for(int i=0;i<N;i++){
+			marshallhandle->call(object_enum);
+
+			if(object_enum==TriaInputEnum){
+				TriaInput* triainput2=new TriaInput();
+				triainput2->Marshall(marshallhandle);
+				this->inputs[i]=triainput2;
+			}
+			else if(object_enum==PentaInputEnum){
+				PentaInput* pentainput2=new PentaInput();
+				pentainput2->Marshall(marshallhandle);
+				this->inputs[i]=pentainput2;
+			}
+			else{
+				_error_("input "<<EnumToStringx(object_enum)<<" not supported");
+			}
+		}
+	}
 
 }
