MCPcopy Index your code
hub / github.com/google/mangle / readHeader

Function readHeader

factstore/simplecolumn.go:371–412  ·  view source on GitHub ↗
(scanner *bufio.Scanner)

Source from the content-addressed store, hash-verified

369}
370
371func readHeader(scanner *bufio.Scanner) ([]ast.PredicateSym, []int, error) {
372 if ok := scanner.Scan(); !ok {
373 return nil, nil, ErrCouldNotRead
374 }
375 numPreds, err := strconv.Atoi(scanner.Text())
376 if err != nil {
377 return nil, nil, ErrCouldNotRead
378 }
379 if numPreds < 0 {
380 return nil, nil, fmt.Errorf("invalid number of predicates %d: %w", numPreds, ErrWrongArgument)
381 }
382 if numPreds > maxNumPreds {
383 return nil, nil, ErrTooManyPreds
384 }
385 preds := make([]ast.PredicateSym, numPreds)
386 predNumFacts := make([]int, numPreds)
387 for i := 0; i < numPreds; i++ {
388 if ok := scanner.Scan(); !ok {
389 return nil, nil, ErrCouldNotRead
390 }
391 var (
392 name string
393 arity int
394 numFacts int
395 )
396 if _, err = fmt.Sscanf(scanner.Text(), "%s %d %d", &name, &arity, &numFacts); err != nil {
397 return nil, nil, ErrCouldNotRead
398 }
399 if _, err := parse.PredicateName(name); err != nil {
400 return nil, nil, fmt.Errorf("invalid name %q predicate %d: %w", name, i, ErrWrongArgument)
401 }
402 if arity < 0 || arity > maxArity {
403 return nil, nil, fmt.Errorf("for predicate %v: %w", name, ErrUnsupportedArity)
404 }
405 if numFacts > maxFactsPerPredicate {
406 return nil, nil, fmt.Errorf("for predicate %v: %w", name, ErrTooManyFacts)
407 }
408 preds[i] = ast.PredicateSym{name, arity}
409 predNumFacts[i] = numFacts
410 }
411 return preds, predNumFacts, nil
412}
413
414// ReadInto reads contents in simplecolumn format into a fact store.
415func (sc SimpleColumn) ReadInto(r io.Reader, store FactStore) error {

Callers 2

NewSimpleColumnStoreFunction · 0.85
ReadIntoMethod · 0.85

Calls 1

PredicateNameFunction · 0.92

Tested by

no test coverage detected