view anagram/agcore/bpu.h @ 7:57b2cc9b87f7

Use memcpy instead of strncpy when we know the length anyway. Modern gcc seems to think it knows how to detect misuse of strncpy, but it's wrong (in fact: very, very wrong) and the path of least resistance is to not try to fight with it.
author David A. Holland
date Mon, 30 May 2022 23:47:52 -0400
parents 13d2b8934445
children
line wrap: on
line source

/*
 * AnaGram, A System for Syntax Directed Programming
 * Copyright 1993-1999 Parsifal Software. All Rights Reserved.
 * See the file COPYING for license and usage terms.
 *
 * bpu.h - Utility routines for bpe3
 */

#ifndef BPU_H
#define BPU_H

#include "port.h"  // for PRINTFFY

class AgString;// from agstring.h
class Rule;    // from rule.h
class Token;   // from token.h


void           count_pe_line(const char *s, int k);
void     define_macro(const char *, const char *, ...) PRINTFFY(2,3);
void     define_macro_default(const char *, const char *, ...) PRINTFFY(2,3);
int            find_completions(int s, const unsigned **q);
void           find_key_tokens(const int *, int, int/* , int*/);
unsigned       find_token_number(const char *);
unsigned char *key_string(int tn);
Rule           ruleReducedBy(Token, unsigned sn);
void           select_actions(int);
void           select_write_fragment(const char *, const char *, const char *);
int            shift_token(unsigned, unsigned);
AgString       subs_template(const char *, const char *, const char);
void           template_string(const char *, const char *, const char);
int            wpe(const char *fs, ...) PRINTFFY(1,2);
int            wps(const char *s);
int            wss(void);

void           write_code_segment(const char *name);
AgString       code_segment(const char *name);

#endif /* BPU_H */