From 9bfa7c1467189f2b8eab1c8b588aeab130e7314b Mon Sep 17 00:00:00 2001
From: Sven Gestegard Robertz <sven.robertz@cs.lth.se>
Date: Sat, 25 Oct 2014 15:15:09 +0200
Subject: [PATCH] c encoding, java skipping pragma

---
 examples/user_types/example_encoder.c               | 12 ++++++------
 lib/c/labcomm.h                                     |  4 ++++
 lib/c/labcomm_encoder.c                             |  3 ++-
 lib/java/se/lth/control/labcomm/DecoderChannel.java |  6 ++++++
 4 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/examples/user_types/example_encoder.c b/examples/user_types/example_encoder.c
index fb8f97a..cc70bbb 100644
--- a/examples/user_types/example_encoder.c
+++ b/examples/user_types/example_encoder.c
@@ -23,15 +23,15 @@ int main(int argc, char *argv[]) {
 				labcomm_default_scheduler);
   labcomm_encoder_register_test_twoLines(encoder);
 
-#ifdef OLD_METADATA
-  struct labcomm_encoder *mdt = labcomm_metadata_begin(encoder,
-		  &labcomm_signature_test_twoLines);
-  labcomm_encoder_register_test_Comment(mdt);
+#ifndef WITHOUT_PRAGMA
+  struct labcomm_encoder *pb = labcomm_pragma_builder_new(encoder,
+		  "se.lth.cs.sven.pragma");
+  labcomm_encoder_register_test_Comment(pb);
   test_Comment comment;
   comment.id = 17;
   comment.comment = "This is a metadata comment...";
-  labcomm_encode_test_Comment(mdt, &comment);
-  labcomm_metadata_end(mdt);
+  labcomm_encode_test_Comment(pb, &comment);
+  labcomm_pragma_send(pb);
 #endif
   test_twoLines tl;
 
diff --git a/lib/c/labcomm.h b/lib/c/labcomm.h
index 07ff12d..b543e98 100644
--- a/lib/c/labcomm.h
+++ b/lib/c/labcomm.h
@@ -126,6 +126,10 @@ int labcomm_decoder_ioctl(struct labcomm_decoder *decoder,
 			  ...);
 
 /* pragma */
+struct labcomm_encoder *labcomm_pragma_builder_new(
+                                   struct labcomm_encoder *e,
+				   char * pragma_type) ;
+int labcomm_pragma_send(struct labcomm_encoder* e);
 struct labcomm_pragma_handler {
   //struct labcomm_decoder_registry *registry;
   //TODO: implement  map (char * pragma_type) --> decoder_registry *
diff --git a/lib/c/labcomm_encoder.c b/lib/c/labcomm_encoder.c
index c7246be..ff38dfe 100644
--- a/lib/c/labcomm_encoder.c
+++ b/lib/c/labcomm_encoder.c
@@ -97,7 +97,8 @@ struct pragma_packet_builder {
 
 struct labcomm_encoder *labcomm_pragma_builder_new(
                                    struct labcomm_encoder *e,
-				   char * pragma_type) {
+				   char * pragma_type) 
+{
         struct labcomm_writer *dyn_writer = labcomm_dynamic_buffer_writer_new(
                                                  e->memory);
 	struct labcomm_encoder *pb = labcomm_encoder_new(dyn_writer,
diff --git a/lib/java/se/lth/control/labcomm/DecoderChannel.java b/lib/java/se/lth/control/labcomm/DecoderChannel.java
index 9c5b94d..bd2b0dd 100644
--- a/lib/java/se/lth/control/labcomm/DecoderChannel.java
+++ b/lib/java/se/lth/control/labcomm/DecoderChannel.java
@@ -37,6 +37,12 @@ public class DecoderChannel implements Decoder {
           ReadBytes(signature, signature_length);
 	  registry.add(index, name, signature);
 	} break;
+	case Constant.PRAGMA: {
+          System.out.println("Pragma: skipping "+length+" bytes"); 
+	  for(int i=0; i<length; i++) {
+            decodeByte();		  
+	  }
+	} break;
 	default: {
 	  DecoderRegistry.Entry e = registry.get(tag);
 	  if (e == null) {
-- 
GitLab