59 lines
1013 B
C++
Executable File
59 lines
1013 B
C++
Executable File
/*
|
|
* This file is a part of CMSLU -- Content Management System like Unix
|
|
* and is not publicly distributed
|
|
*
|
|
* Copyright (c) 2008-2009, Tomasz Sowa
|
|
* All rights reserved.
|
|
*
|
|
*/
|
|
|
|
#include "functioncodeparser.h"
|
|
#include "function.h"
|
|
#include "log.h"
|
|
|
|
|
|
|
|
bool FunctionCodeParser::ContentHasOneRow(const Item & item)
|
|
{
|
|
for(size_t i=0 ; i<item.content.size() ; ++i)
|
|
if( item.content[i] == '\n' )
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
int FunctionCodeParser::ParseValue(const char * s)
|
|
{
|
|
if( strncmp(s, "[fun:", 5) != 0 )
|
|
return FUN_NONE;
|
|
|
|
const char * send;
|
|
int result = strtol(s+5, (char**)&send, 10);
|
|
|
|
if( send==s+5 || strcmp(send, "]") != 0 )
|
|
return FUN_NONE;
|
|
|
|
log << log2 << "FCP: function code: " << result << logend;
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int FunctionCodeParser::Parse(const Item & item)
|
|
{
|
|
// format: [fun:1]
|
|
// minimum size: 7 characters
|
|
if( item.content.size() < 7 )
|
|
return FUN_NONE;
|
|
|
|
if( !ContentHasOneRow(item) )
|
|
return FUN_NONE;
|
|
|
|
return ParseValue(item.content.c_str());
|
|
}
|