Browse Source

*** empty log message ***

David Rose 25 years ago
parent
commit
8e2aa51d68

+ 6 - 20
direct/src/dcparse/dcAtomicField.cxx

@@ -144,25 +144,14 @@ is_clrecv() const {
 }
 
 ////////////////////////////////////////////////////////////////////
-//     Function: DCAtomicField::is_aisend
+//     Function: DCAtomicField::is_ownsend
 //       Access: Public
-//  Description: Returns true if the "aisend" flag is set for this
+//  Description: Returns true if the "ownsend" flag is set for this
 //               field, false otherwise.
 ////////////////////////////////////////////////////////////////////
 bool DCAtomicField::
-is_aisend() const {
-  return (_flags & F_aisend) != 0;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: DCAtomicField::is_airecv
-//       Access: Public
-//  Description: Returns true if the "airecv" flag is set for this
-//               field, false otherwise.
-////////////////////////////////////////////////////////////////////
-bool DCAtomicField::
-is_airecv() const {
-  return (_flags & F_airecv) != 0;
+is_ownsend() const {
+  return (_flags & F_ownsend) != 0;
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -219,11 +208,8 @@ write(ostream &out, int indent_level) const {
   if ((_flags & F_clrecv) != 0) {
     out << " clrecv";
   }
-  if ((_flags & F_aisend) != 0) {
-    out << " aisend";
-  }
-  if ((_flags & F_airecv) != 0) {
-    out << " airecv";
+  if ((_flags & F_ownsend) != 0) {
+    out << " ownsend";
   }
 
   out << ";  // field " << _number << "\n";

+ 2 - 4
direct/src/dcparse/dcAtomicField.h

@@ -34,8 +34,7 @@ PUBLISHED:
   bool is_db() const;
   bool is_clsend() const;
   bool is_clrecv() const;
-  bool is_aisend() const;
-  bool is_airecv() const;
+  bool is_ownsend() const;
 
 public:
   DCAtomicField();
@@ -61,8 +60,7 @@ public:
     F_db              = 0x0010,
     F_clsend          = 0x0020,
     F_clrecv          = 0x0040,
-    F_aisend          = 0x0080,
-    F_airecv          = 0x0100
+    F_ownsend         = 0x0080,
   };
 
   int _flags;  // A bitmask union of any of the above values.

+ 27 - 7
direct/src/dcparse/dcLexer.lxx

@@ -323,6 +323,31 @@ REALNUM          ([+-]?(([0-9]+[.])|([0-9]*[.][0-9]+))([eE][+-]?[0-9]+)?)
   return KW_STRING;
 }
 
+"blob" {
+  accept();
+  return KW_BLOB;
+}
+
+"int16array" {
+  accept();
+  return KW_INT16ARRAY;
+}
+
+"int32array" {
+  accept();
+  return KW_INT32ARRAY;
+}
+
+"uint16array" {
+  accept();
+  return KW_UINT16ARRAY;
+}
+
+"uint32array" {
+  accept();
+  return KW_UINT32ARRAY;
+}
+
 mol[0-9]+ {
   // A molecular keyword.
   accept();
@@ -366,14 +391,9 @@ mol[0-9]+ {
   return KW_CLRECV;
 }
 
-"aisend" {
-  accept();
-  return KW_AISEND;
-}
-
-"airecv" {
+"ownsend" {
   accept();
-  return KW_AIRECV;
+  return KW_OWNSEND;
 }
 
 {INTEGERNUM} { 

+ 28 - 8
direct/src/dcparse/dcParser.yxx

@@ -57,6 +57,11 @@ dc_cleanup_parser() {
 %token KW_UINT64
 %token KW_FLOAT64
 %token KW_STRING
+%token KW_BLOB
+%token KW_INT16ARRAY
+%token KW_INT32ARRAY
+%token KW_UINT16ARRAY
+%token KW_UINT32ARRAY
 
 %token KW_MOL
 
@@ -67,8 +72,7 @@ dc_cleanup_parser() {
 %token KW_DB
 %token KW_CLSEND
 %token KW_CLRECV
-%token KW_AISEND
-%token KW_AIRECV
+%token KW_OWNSEND
 
 %type <u.dclass> dclass_name
 %type <u.atomic> atomic_name
@@ -228,6 +232,26 @@ type_token:
 	| KW_STRING
 {
   $$ = ST_string;
+}
+	| KW_BLOB
+{
+  $$ = ST_blob;
+}
+	| KW_INT16ARRAY
+{
+  $$ = ST_int16array;
+}
+	| KW_INT32ARRAY
+{
+  $$ = ST_int32array;
+}
+	| KW_UINT16ARRAY
+{
+  $$ = ST_uint16array;
+}
+	| KW_UINT32ARRAY
+{
+  $$ = ST_uint32array;
 }
 	;
 
@@ -261,13 +285,9 @@ atomic_flags:
 {
   current_atomic->_flags |= DCAtomicField::F_clrecv;
 }
-	| atomic_flags KW_AISEND
-{
-  current_atomic->_flags |= DCAtomicField::F_aisend;
-}
-	| atomic_flags KW_AIRECV
+	| atomic_flags KW_OWNSEND
 {
-  current_atomic->_flags |= DCAtomicField::F_airecv;
+  current_atomic->_flags |= DCAtomicField::F_ownsend;
 }
 	;
 

+ 15 - 0
direct/src/dcparse/dcSubatomicType.cxx

@@ -37,6 +37,21 @@ operator << (ostream &out, DCSubatomicType type) {
 
   case ST_string:
     return out << "string";
+
+  case ST_blob:
+    return out << "blob";
+
+  case ST_int16array:
+    return out << "int16array";
+
+  case ST_int32array:
+    return out << "int32array";
+
+  case ST_uint16array:
+    return out << "uint16array";
+
+  case ST_uint32array:
+    return out << "uint32array";
   }
 
   return out << "invalid type: " << (int)type;

+ 6 - 1
direct/src/dcparse/dcSubatomicType.h

@@ -29,7 +29,12 @@ enum DCSubatomicType {
 
   ST_float64,
 
-  ST_string,
+  ST_string,      // a human-printable string
+  ST_blob,        // any variable length message, stored as a string
+  ST_int16array,
+  ST_int32array,
+  ST_uint16array,
+  ST_uint32array,
 };
 END_PUBLISH