if (bac != null)
return bac.val;
+ var ms = new MemoryStream ();
+ // Version info
+ ms.WriteByte (1);
+ ms.WriteByte (0);
+
var sc = c as StringConst;
if (sc != null) {
string value = sc.val;
if (value == null)
throw new NotImplementedException ();
- var ms = new MemoryStream ();
- // Version info
- ms.WriteByte (1);
- ms.WriteByte (0);
-
var buf = Encoding.UTF8.GetBytes (value);
MetaData.CompressNum ((uint) buf.Length, ms);
var byteVal = ms.ToArray ();
return byteVal;
}
+ var ac = c as ArrayConstant;
+ if (ac != null) {
+ var bw = new BinaryWriter (ms);
+ bw.Write (ac.ExplicitSize.Value);
+ ac.Write (bw);
+ bw.Write ((short)0);
+ return ms.ToArray ();
+ }
+
throw new NotImplementedException (c.GetType ().ToString ());
}
/// <summary>
/// Boolean constant
/// </summary>
- public class BoolConst : Constant {
+ public class BoolConst : DataConstant {
bool val;
/// <summary>
}
}
+ public int? ExplicitSize { get; set; }
+
internal sealed override void Write(BinaryWriter bw)
{
for (int i=0; i < dataVals.Length; i++) {
{\r
$$ = new StringConst ((string) $3);\r
}\r
- ;\r
+ | K_BOOL OPEN_BRACKET int32 CLOSE_BRACKET OPEN_PARENS opt_truefalse_list CLOSE_PARENS\r
+ {\r
+ var l = (List<BoolConst>) $6;\r
+ $$ = new ArrayConstant (l?.ToArray ()) {\r
+ ExplicitSize = (int) $3\r
+ };\r
+ }\r
+ ;\r
+\r
+opt_truefalse_list\r
+ : truefalse_list\r
+ ;\r
+\r
+truefalse_list\r
+ : truefalse\r
+ {\r
+ $$ = new List<BoolConst> () { new BoolConst ((bool) $1) };\r
+ }\r
+ | truefalse_list truefalse\r
+ {\r
+ var l = (List<BoolConst>) $1;\r
+ l.Add (new BoolConst ((bool) $2));\r
+ $$ = l;\r
+ }\r
+ ;\r
\r
data_decl : data_head data_body\r
{\r