protected override IEnumerable <KeyValuePair <string, ColumnType> > GetMetadataTypesCore(int col)
            {
                Ectx.Assert(0 <= col && col < ColumnCount);
                yield return(new KeyValuePair <string, ColumnType>(OpType, TextType.Instance));

                if (_inputOpsGetters[col] != null)
                {
                    yield return(new KeyValuePair <string, ColumnType>(InputOps, new VectorType(TextType.Instance, _inputOpsLengths[col])));
                }
            }
 protected override ColumnType GetMetadataTypeOrNullCore(string kind, int col)
 {
     Ectx.Assert(0 <= col && col < ColumnCount);
     if (kind == MetadataUtils.Kinds.KeyValues && _keyValueGetters[col] != null)
     {
         Ectx.Assert(Types[col].ItemType.IsKey);
         return(new VectorType(TextType.Instance, Types[col].ItemType.KeyCount));
     }
     return(null);
 }
 protected override IEnumerable <KeyValuePair <string, ColumnType> > GetMetadataTypesCore(int col)
 {
     Ectx.Assert(0 <= col && col < ColumnCount);
     if (_keyValueGetters[col] != null)
     {
         Ectx.Assert(Types[col].ItemType.IsKey);
         yield return(new KeyValuePair <string, ColumnType>(MetadataUtils.Kinds.KeyValues,
                                                            new VectorType(TextType.Instance, Types[col].ItemType.KeyCount)));
     }
 }
 protected override void GetMetadataCore <TValue>(string kind, int col, ref TValue value)
 {
     Ectx.Assert(0 <= col && col < ColumnCount);
     if (kind == MetadataUtils.Kinds.KeyValues && _keyValueGetters[col] != null)
     {
         _keyValueGetters[col].Marshal(col, ref value);
     }
     else
     {
         throw Ectx.ExceptGetMetadata();
     }
 }
 protected override ColumnType GetMetadataTypeOrNullCore(string kind, int col)
 {
     Ectx.Assert(0 <= col && col < ColumnCount);
     if (kind == OpType)
     {
         return(TextType.Instance);
     }
     if (kind == InputOps && _inputOpsGetters[col] != null)
     {
         return(new VectorType(TextType.Instance, _inputOpsLengths[col]));
     }
     return(null);
 }
 protected override void GetMetadataCore <TValue>(string kind, int col, ref TValue value)
 {
     Ectx.Assert(0 <= col && col < ColumnCount);
     if (kind == OpType)
     {
         _opTypeGetters[col].Marshal(col, ref value);
     }
     else if (kind == InputOps && _inputOpsGetters[col] != null)
     {
         _inputOpsGetters[col].Marshal(col, ref value);
     }
     else
     {
         throw Ectx.ExceptGetMetadata();
     }
 }