nmedit > NmEdit

libPPF - Programmable Property Files


Property files are used to associate keys with values. A value can be looked up using the key.

Programmable Property Files are useful when there is a high correlation between the values of the properties that needs to be defined.

PPF uses regular expressions and TCL expressions.

PPF Description

Each line in a property file defines one or more properties using regular expressions and TCL expressions.

<regexp1> <regexp2> ... <regexpN> = <TCL expression>

First, one or more regular expressions defines the property key that must match when the property is looked up. After the '=' sign is a TCL expression that is used to calculate the value of the property.

The variables $1, $2 to $N are bound to the strings that matches each regular expression.


weight 0 = weightless
weight [1-3] = [expr $2 / 2.0]g

will represent the properties:

weight 0 = weightless
weight 1 = 0.5g
weight 2 = 1g
weight 3 = 1.5g

libPPF - PPF C++ API

libPPF is an implementation of a PPF API in C++. It consists of three classes, ppf::Parser, ppf::BoundBundle and ppf::Bundle. The latter is not part of the public API.

The API organizes the properties in a tree hierarchy, where BoundBundle represents a node, and which may have properties as leafs.


#include "ppf/parser.h"

using namespace ppf;

Parser parser;
BoundBundle root = parser.parse("properties.ppf");
BoundBundle weight = root.getBoundBundle("weight");
string value = weight.getProperty("2");

The parser object must be kept in memory during the time the root bundle and its children are used, because it manages the memory for the parsed data.

libPPF Architecture