#ifndef SHORTCODES_H #define SHORTCODES_H // A chunk is a reference to a piece of string // from "start" relative to its start // and goes on for len characters. struct chunk { int start, len; }; typedef struct chunk chunk; // An error struct sc_error { int position; int code; }; typedef struct sc_error sc_error; // Describes a parsed shortcode struct shortcode { chunk whole; chunk name; chunk data; char matching; chunk argnames[100]; chunk argvals[100]; int argcount; }; typedef struct shortcode shortcode; struct sc_result { shortcode sc[100]; sc_error errors[10]; int errcount; }; typedef struct sc_result sc_result; // Error codes /* You are closing the wrong shortcode. Example: {{% foo %}} {{% /bar %}} */ #define ERR_MISMATCHED_CLOSING_TAG 1; sc_result parse(char *); #endif