diff -r 4eebab50993e -r 6d139c21e22c mash/beerxml.h --- a/mash/beerxml.h Sun Jul 15 14:08:19 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,262 +0,0 @@ -#ifndef _BEERXML_H -#define _BEERXML_H - - -/* - * See http://www.beerxml.com/beerxml.htm for more information. - * This standard isn't perfect, but it works. Note that some - * fields are not well defined. Some precentages are safe if you - * declare them as float instead of intergers. - * - * The function parseBeerXML() reads the file and puts the - * contents in the following tree: - * - * recipes recipe hops hop - * hop - * fermentables fermentable - * fermentable - * yeasts yeast - * yeast - * miscs misc - * misc - * waters water - * water - * style - * mash mash_step - * mash_step - * equipment - * recipe hops hop - * and so on. - */ - -typedef struct _hop_rec { - struct _hop_rec *next; - char *name; /* Name of the hops */ - int version; /* Should be 1 for this version of the standard */ - float alpha; /* Percent alpha of hops */ - float amount; /* Weight in Kilograms of the hops used. */ - char *use; /* "Boil", "Dry Hop", "Mash", "First Wort" or "Aroma" */ - float time; /* The time as measured in minutes. */ - char *notes; /* Textual notes about the hops. */ - char *type; /* "Bittering", "Aroma" or "Both" */ - char *form; /* "Pellet", "Plug" or "Leaf" */ - float beta; /* Hop beta percentage. */ - float hsi; /* Hop Stability Index */ - char *origin; /* Place of origin for the hops */ - char *substitutes; /* Substitutes that can be used for this hops */ - float humulene; /* Humulene level in percent. */ - float caryophyllene; /* Caryophyllene level in percent. */ - float cohumulone; /* Cohumulone level in percent */ - float myrcene; /* Myrcene level in percent */ -} hop_rec; - -typedef struct _fermentable_rec { - struct _fermentable_rec *next; - char *name; /* Name */ - int version; /* Record version */ - char *type; /* "Grain", "Sugar", "Extract", "Dry Extract" or "Adjunct" */ - char *notes; /* Notes */ - float amount; /* Weight in KG */ - float yield; /* Percent dry yield (fine grain) */ - float color; /* The color of the item in Lovibond */ - int add_after_boil; /* May be TRUE. */ - char *origin; /* Country or place of origin */ - char *supplier; /* Supplier of the grain/extract/sugar */ - float coarse_fine_diff; /* Percent difference between the coarse grain yield and fine grain yield. */ - float moisture; /* Percent moisture in the grain. */ - float diastatic_power; /* The diastatic power of the grain */ - float protein; /* The percent protein in the grain. */ - float max_in_batch; /* The recommended maximum percentage */ - int recommend_mash; /* TRUE if it is recommended to mash */ -} fermentable_rec; - -typedef struct _equipment_rec { - char *name; /* Name of the equipment profile */ - int version; /* Version of the equipment record. */ - float boil_size; /* The pre-boil volume used. */ - float batch_size; /* The target volume of the batch. */ - float tun_volume; /* Volume of the mash tun in liters. */ - float tun_weight; /* Weight of the mash tun in kilograms. */ - float tun_specific_heat; /* The specific heat of the mash tun. */ - float top_up_water; /* The amount of top up water normally added. */ - float trub_chiller_loss; /* The amount of wort normally lost. */ - float evap_rate; /* Perc of wort lost to evaporation per hour. */ - float boil_time; /* The normal amount of time one boils */ - int calc_boil_volume; /* Flag denoting to calculate the boil size. */ - float lauter_deadspace; /* Amount lost to the lauter tun. */ - float top_up_kettle; /* Amount normally added to the boil */ - float hop_utilization; /* Large batch hop utilization. */ - char *notes; /* Notes associated with the equipment. */ -} equipment_rec; - -typedef struct _yeast_rec { - struct _yeast_rec *next; - char *name; /* Name of the yeast. */ - int version; /* Version of the standard. */ - char *type; /* “Ale”, “Lager”, “Wheat”, “Wine”, “Champagne” */ - char *form; /* “Liquid”, “Dry”, “Slant” or “Culture” */ - float amount; /* The amount of yeast, measured in liters. */ - int amount_is_weight; /* TRUE if the amount measurement is a weight */ - char *laboratory; /* The laboratory that produced the yeast. */ - char *product_id; /* The manufacturer’s product ID label */ - float min_temperature; /* The minimum recommended temperature */ - float max_temperature; /* The maximum recommended temperature */ - char *flocculation; /* “Low”, “Medium”, “High” or “Very High” */ - float attenuation; /* Average attenuation for this yeast strain. */ - char *notes; /* Notes on this yeast strain. */ - char *best_for; /* Beerstyle this yeast is best suited for. */ - int times_cultured; /* Number of times this yeast has been reused */ - int max_reuse; /* Recommended maximum reuse times */ - int add_to_secondary; /* Flag this yeast was added for a secondary */ -} yeast_rec; - -typedef struct _misc_rec { - struct _misc_rec *next; - char *name; /* Name of the misc item. */ - int version; /* Version number of this element. */ - char *type; /* “Spice”, “Fining”, “Water Agent”, “Herb”, “Flavor”, “Other” */ - char *use; /* “Boil”, “Mash”, “Primary”, “Secondary”, “Bottling” */ - float time; /* Time the misc was boiled, steeped, mashed, etc in minutes. */ - float amount; /* Amount of item used. Liters or Weight */ - int amount_is_weight; /* TRUE if amount is weight */ - char *use_for; /* Desc. of what the ingredient is used for */ - char *notes; /* Detailed notes on the item including usage. */ -} misc_rec; - -typedef struct _water_rec { - struct _water_rec *next; - char *name; /* Name of the water profile */ - int version; /* Version of the water record. */ - float amount; /* Volume of water to use in a recipe in liters */ - float calcium; /* The amount of calcium (Ca) in ppm */ - float bicarbonate; /* The amount of bicarbonate (HCO3) in ppm. */ - float sulfate; /* The amount of Sulfate (SO4) in ppm. */ - float chloride; /* The amount of Chloride (Cl) in ppm. */ - float sodium; /* The amount of Sodium (Na) in ppm. */ - float magnesium; /* The amount of Magnesium (Mg) in ppm. */ - float ph; /* The PH of the water. */ - char *notes; /* Notes about the water profile. */ -} water_rec; - -typedef struct _style_rec { - char *name; /* Name of the style profile */ - char *category; /* Category that this style belongs to */ - int version; /* Version of the style record. */ - char *category_number; /* Number or identifier for this style category */ - char *style_letter; /* The specific style number or subcategory */ - char *style_guide; /* The name of the style guide */ - char *type; /* “Lager”, “Ale”, “Mead”, “Wheat”, “Mixed” or “Cider” */ - float og_min; /* Original gracity */ - float og_max; - float fg_min; /* Final gravity */ - float fg_max; - float ibu_min; /* Bitterness for this style as measured */ - float ibu_max; /* in International Bitterness Units (IBUs) */ - float color_min; /* The recommended color in SRM */ - float color_max; - float carb_min; /* The recommended carbonation for this style */ - float carb_max; /* in volumes of CO2 */ - float abv_min; /* Alcohol by volume as a percentage. */ - float abv_max; - char *notes; /* Description of the style, history */ - char *profile; /* Flavor and aroma profile for this style */ - char *ingredients; /* Suggested ingredients for this style */ - char *examples; /* Example beers of this style. */ -} style_rec; - -typedef struct _mash_step { - struct _mash_step *next; - char *name; /* Name of this step */ - int version; /* Record version */ - char *type; /* “Infusion”, “Temperature” or “Decoction” */ - float infuse_amount; /* Wateri vol. in liters to infuse in this step */ - float infuse_temp; /* niet officieel - berekenen */ - float step_temp; /* The target temperature for this step */ - float end_temp; /* The final temperature you can expect */ - float step_time; /* The number of minutes to spend */ - float ramp_time; /* Time to achieve the desired step temperature */ - float water_grain_ratio; /* niet officieel - berekenen */ - float decotion_amt; /* niet officieel */ -} mash_step; - -typedef struct _mash_profile { - char *name; /* Name of mash method */ - int version; /* Record version */ - char *notes; /* Additional notes */ - float grain_temp; /* The temperature of the grain */ - mash_step *mash_steps; /* List of mash steps */ - float tun_temp; /* Grain tun temperature */ - float sparge_temp; /* Temperature of the sparge water */ - float ph; /* PH of the sparge. */ - float tun_weight; /* Weight of the mash tun in kilograms */ - float tun_specific_heat; /* Specific heat of the tun material */ - int equip_adjust; /* Adjust for tun heat loss */ -} mash_profile; - -typedef struct _brew_equipment { - char *name; /* Name of the equipment profile */ - float boil_size; /* The pre-boil volume for this equipment setup */ - float batch_size; /* The target volume of the batch */ - float tun_volume; /* Volume of the mash tun in liters. */ - float tun_weight; /* Weight of the mash tun in kilograms. */ - float tun_specific_heat; /* The specific heat of the mash tun. */ - float top_up_water; /* The amount of top up water b4 fermenting */ - float trub_chiller_loss; /* Amount of wort lost during cooling */ - float evap_rate; /* Perc of wort lost to evaporation per hour. */ - float boil_time; /* The normal amount of boil time for this eq. */ - int calc_boil_volume; /* Should the program calculate the boil size. */ - float lauter_dead_space; /* Amount lost to the lauter tun. */ - float top_up_kettle; /* Amount added to the boil kettle b4 the boil. */ - float hop_utilization; /* Large batch hop utilization. */ - char *notes; /* Notes for this equipment. */ -} brew_equipment; - -typedef struct _recipe_rec { - struct _recipe_rec *next; - int version; /* Current version is 1 */ - char *name; /* Name of the recipe */ - char *type; /* “Extract”, “Partial Mash” or “All Grain” */ - style_rec *style; /* style record */ - equipment_rec *equipment; /* equipemnt record */ - char *brewer; /* Name of the brewer */ - char *asst_brewer; /* Name of the assistent brewer */ - float batch_size; /* Target size of the finished batch in liters. */ - float boil_size; /* Starting size for the main boil in liters */ - float boil_time; /* The total time to boil the wort in minutes. */ - float efficiency; /* The percent brewhouse efficiency */ - hop_rec *hops; /* hops */ - fermentable_rec *fermentables; /* Fermentables list */ - misc_rec *miscs; /* Misc ingredients */ - yeast_rec *yeasts; /* Yeasts */ - water_rec *waters; /* Water profiles */ - mash_profile *mash; /* Mash profile */ - char *notes; /* Notes associated with this recipe */ - char *taste_notes; /* Tasting notes – may be multiline. */ - float taste_rating; /* Number between zero and 50.0 (BJCP system) */ - float og; /* The measured original specific gravity. */ - float fg; /* The measured final gravity of the beer. */ - int fermentation_stages; /* The number of fermentation stages used */ - int primary_age; /* Time spent in the primary in days */ - float primary_temp; /* Temp in Celsius for the primary fermentation */ - int secondary_age; /* Time spent in the secondary in days. */ - float secondary_temp; /* Temp in C for the secondary fermentation. */ - int tertiary_age; /* Time spent in the third fermenter in days. */ - float tertiary_temp; /* Temperature in the tertiary fermenter. */ - int age; /* Time to age the beer in days after bottling. */ - float age_temp; /* Temperature for aging after bottling. */ - char *date; /* Date brewed in a easily recognizable format. */ - float carbonation; /* Volume of CO2 used to carbonate this beer. */ - int forced_carbonation; /* TRUE if forced carbonated using CO2 pressure */ - char *priming_sugar_name; /* Text describing the priming agent. */ - float carbonation_temp; /* Temp for either bottling/forced carbonation. */ - float priming_sugar_equiv; /* Factor used to convert this priming agent */ - float keg_priming_factor; /* Used 2 factor amount of sugar for containers */ -} recipe_rec; - - -int parseBeerXML(char *); -void printBeerXML(void); - - -#endif -