⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpform.cxx

📁 mgcp协议源代码。支持多种编码:g711
💻 CXX
📖 第 1 页 / 共 5 页
字号:
    return 0;  return 2;}void PHTTPField::LoadFromConfig(PConfig & cfg){  PString section, key;  switch (SplitConfigKey(fullName, section, key)) {    case 1 :      SetValue(cfg.GetString(key, GetValue(TRUE)));      break;    case 2 :      SetValue(cfg.GetString(section, key, GetValue(TRUE)));  }}void PHTTPField::SaveToConfig(PConfig & cfg) const{  PString section, key;  switch (SplitConfigKey(fullName, section, key)) {    case 1 :      cfg.SetString(key, GetValue());      break;    case 2 :      cfg.SetString(section, key, GetValue());  }}BOOL PHTTPField::Validated(const PString &, PStringStream &) const{  return TRUE;}PStringList PHTTPField::GetAllNames() const{  PStringList list;  list.DisallowDeleteObjects();  list.AppendString(fullName);  return list;}void PHTTPField::SetAllValues(const PStringToString & data){  if (!baseName && data.Contains(fullName))    SetValue(data[fullName]);}BOOL PHTTPField::ValidateAll(const PStringToString & data, PStringStream & msg) const{  if (data.Contains(fullName))    return Validated(data[fullName], msg);  return TRUE;}//////////////////////////////////////////////////////////////////////////////// PHTTPCompositeFieldPHTTPCompositeField::PHTTPCompositeField(const char * nam,                                         const char * titl,                                         const char * hlp)  : PHTTPField(nam, titl, hlp){}void PHTTPCompositeField::SetName(const PString & newName){  for (PINDEX i = 0; i < fields.GetSize(); i++) {    PHTTPField & field = fields[i];    PString firstPartOfName = psprintf(fullName, i+1);    PString subFieldName;    if (field.GetName().Find(firstPartOfName) == 0)      subFieldName = field.GetName().Mid(firstPartOfName.GetLength());    else      subFieldName = field.GetName();    firstPartOfName = psprintf(newName, i+1);    if (subFieldName[0] == '\\' || firstPartOfName[firstPartOfName.GetLength()-1] == '\\')      field.SetName(firstPartOfName + subFieldName);    else      field.SetName(firstPartOfName & subFieldName);  }  PHTTPField::SetName(newName);}const PHTTPField * PHTTPCompositeField::LocateName(const PString & name) const{  if (fullName == name)    return this;  for (PINDEX i = 0; i < fields.GetSize(); i++) {    const PHTTPField * field = fields[i].LocateName(name);    if (field != NULL)      return field;  }  return NULL;}PHTTPField * PHTTPCompositeField::NewField() const{  PHTTPCompositeField * fld = new PHTTPCompositeField(baseName, title, help);  for (PINDEX i = 0; i < fields.GetSize(); i++)    fld->Append(fields[i].NewField());  return fld;}void PHTTPCompositeField::GetHTMLTag(PHTML & html) const{  for (PINDEX i = 0; i < fields.GetSize(); i++) {    if (i != 0)      html << PHTML::TableData("NOWRAP");    fields[i].GetHTMLTag(html);  }}PString PHTTPCompositeField::GetHTMLInput(const PString & input) const{  return input;}void PHTTPCompositeField::ExpandFieldNames(PString & text, PINDEX start, PINDEX & finish) const{  static PRegularExpression FieldName( "!--#form[ \t\r\n]+[^-]*[ \t\r\n]+[^-]*[ \t\r\n]*)?--"                                       "|"                                       "<[a-z]*[ \t\r\n][^>]*name[ \t\r\n]*=[ \t\r\n]*\"[^\"]*\"[^>]*>",                                       PRegularExpression::IgnoreCase);  PString name;  PINDEX pos, len;  while (start < finish && FindSpliceFieldName(text, start, pos, len, name)) {    if (pos > finish)      break;    for (PINDEX fld = 0; fld < fields.GetSize(); fld++) {      if (fields[fld].GetBaseName() == name) {        SpliceAdjust(fields[fld].GetName(), text, pos, len, finish);        break;      }    }    start = pos + len;  }}void PHTTPCompositeField::GetHTMLHeading(PHTML & html) const{  html << PHTML::TableRow();  for (PINDEX i = 0; i < fields.GetSize(); i++)    html << PHTML::TableData() << fields[i].GetTitle();}PString PHTTPCompositeField::GetValue(BOOL dflt) const{  PStringStream value;  for (PINDEX i = 0; i < fields.GetSize(); i++)    value << fields[i].GetValue(dflt) << '\n';  return value;}void PHTTPCompositeField::SetValue(const PString &){  PAssertAlways(PLogicError);}void PHTTPCompositeField::LoadFromConfig(PConfig & cfg){  for (PINDEX i = 0; i < GetSize(); i++)    fields[i].LoadFromConfig(cfg);}void PHTTPCompositeField::SaveToConfig(PConfig & cfg) const{  for (PINDEX i = 0; i < GetSize(); i++)    fields[i].SaveToConfig(cfg);}PStringList PHTTPCompositeField::GetAllNames() const{  PStringList list;  list.DisallowDeleteObjects();  for (PINDEX i = 0; i < GetSize(); i++) {    PStringList sublist = fields[i].GetAllNames();    for (PINDEX j = 0; j < sublist.GetSize(); j++)      list.AppendString(sublist[j]);  }  return list;}void PHTTPCompositeField::SetAllValues(const PStringToString & data){  for (PINDEX i = 0; i < fields.GetSize(); i++)    fields[i].SetAllValues(data);}BOOL PHTTPCompositeField::ValidateAll(const PStringToString & data,                                      PStringStream & msg) const{  for (PINDEX i = 0; i < fields.GetSize(); i++)    if (!fields[i].ValidateAll(data, msg))      return FALSE;  return TRUE;}PINDEX PHTTPCompositeField::GetSize() const{  return fields.GetSize();}void PHTTPCompositeField::Append(PHTTPField * fld){  fields.Append(fld);}//////////////////////////////////////////////////////////////////////////////// PHTTPSubFormPHTTPSubForm::PHTTPSubForm(const PString & subForm,                           const char * name,                           const char * title,                           PINDEX prim,                           PINDEX sec)  : PHTTPCompositeField(name, title, NULL),    subFormName(subForm){  primary = prim;  secondary = sec;}PHTTPField * PHTTPSubForm::NewField() const{  PHTTPCompositeField * fld = new PHTTPSubForm(subFormName, baseName, title, primary, secondary);  for (PINDEX i = 0; i < fields.GetSize(); i++)    fld->Append(fields[i].NewField());  return fld;}void PHTTPSubForm::GetHTMLTag(PHTML & html) const{  PString value = fields[primary].GetValue();  if (value.IsEmpty())    value = "New";  html << PHTML::HotLink(subFormName +            "?subformprefix=" + PURL::TranslateString(fullName, PURL::QueryTranslation))       << value << PHTML::HotLink();  if (secondary != P_MAX_INDEX)    html << PHTML::TableData("NOWRAP") << fields[secondary].GetValue();}void PHTTPSubForm::GetHTMLHeading(PHTML &) const{}//////////////////////////////////////////////////////////////////////////////// PHTTPFieldArrayPHTTPFieldArray::PHTTPFieldArray(PHTTPField * fld, BOOL ordered)  : PHTTPCompositeField(fld->GetName(), fld->GetTitle(), fld->GetHelp()),    baseField(fld){  orderedArray = ordered;  AddBlankField();}PHTTPFieldArray::~PHTTPFieldArray(){  delete baseField;}void PHTTPFieldArray::SetSize(PINDEX newSize){  while (fields.GetSize() > newSize)    fields.RemoveAt(fields.GetSize()-1);  while (fields.GetSize() <= newSize)    AddBlankField();}PHTTPField * PHTTPFieldArray::NewField() const{  return new PHTTPFieldArray(baseField->NewField(), orderedArray);}static const char ArrayControlBox[] = " Array Control";static const char ArrayControlKeep[] = "Keep";static const char ArrayControlRemove[] = "Remove";static const char ArrayControlMoveUp[] = "Move Up";static const char ArrayControlMoveDown[] = "Move Down";static const char ArrayControlToTop[] = "To Top";static const char ArrayControlToBottom[] = "To Bottom";static const char ArrayControlIgnore[] = "Ignore";static const char ArrayControlAddTop[] = "Add Top";static const char ArrayControlAddBottom[] = "Add Bottom";static const char ArrayControlAdd[] = "Add";static PStringList GetArrayControlOptions(PINDEX fld, PINDEX size, BOOL orderedArray){  PStringList options;  if (fld >= size) {    options.AppendString(ArrayControlIgnore);    if (size == 0 || !orderedArray)      options.AppendString(ArrayControlAdd);    else {      options.AppendString(ArrayControlAddTop);      options.AppendString(ArrayControlAddBottom);    }  }  else {    options.AppendString(ArrayControlKeep);    options.AppendString(ArrayControlRemove);    if (orderedArray) {      if (fld > 0)        options.AppendString(ArrayControlMoveUp);      if (fld < size-1)        options.AppendString(ArrayControlMoveDown);      if (fld > 0)        options.AppendString(ArrayControlToTop);      if (fld < size-1)        options.AppendString(ArrayControlToBottom);    }  }  return options;}void PHTTPFieldArray::AddArrayControlBox(PHTML & html, PINDEX fld) const{  PStringList options = GetArrayControlOptions(fld, fields.GetSize()-1, orderedArray);  html << PHTML::Select(fields[fld].GetName() + ArrayControlBox);  for (PINDEX i = 0; i < options.GetSize(); i++)    html << PHTML::Option(i == 0 ? PHTML::Selected : PHTML::NotSelected) << options[i];  html << PHTML::Select();}void PHTTPFieldArray::GetHTMLTag(PHTML & html) const{  html << PHTML::TableStart();  baseField->GetHTMLHeading(html);  for (PINDEX i = 0; i < fields.GetSize(); i++) {    html << PHTML::TableRow() << PHTML::TableData("NOWRAP");    fields[i].GetHTMLTag(html);    html << PHTML::TableData("NOWRAP");    AddArrayControlBox(html, i);  }  html << PHTML::TableEnd();}void PHTTPFieldArray::ExpandFieldNames(PString & text, PINDEX start, PINDEX & finish) const{  PString original = text(start, finish);  PINDEX origFinish = finish;  PINDEX finalFinish = finish;  PINDEX fld = fields.GetSize();  while (fld > 0) {    fields[--fld].ExpandFieldNames(text, start, finish);    PINDEX pos,len;    static PRegularExpression RowNum("<?!--#form[ \t\r\n]+rownum[ \t\r\n]*-->?",                                     PRegularExpression::Extended|PRegularExpression::IgnoreCase);    while (text.FindRegEx(RowNum, pos, len, start, finish))      SpliceAdjust(psprintf("%u", fld+1), text, pos, len, finish);    static PRegularExpression SubForm("<?!--#form[ \t\r\n]+subform[ \t\r\n]*-->?",                                      PRegularExpression::Extended|PRegularExpression::IgnoreCase);    while (text.FindRegEx(SubForm, pos, len, start, finish)) {      PString fmt = fullName;      if (fmt.Find("%u") == P_MAX_INDEX)        fmt += " %u";      SpliceAdjust("subformprefix=" + PURL::TranslateString(psprintf(fmt, fld+1), PURL::QueryTranslation),                   text, pos, len, finish);    }    static PRegularExpression RowControl("<?!--#form[ \t\r\n]+rowcontrol[ \t\r\n]*-->?",                                         PRegularExpression::Extended|PRegularExpression::IgnoreCase);    while (text.FindRegEx(RowControl, pos, len, start, finish)) {      PHTML html(PHTML::InForm);      AddArrayControlBox(html, fld);      SpliceAdjust(html, text, pos, len, finish);    }    static PRegularExpression SelectRow("<select[ \t\r\n][^>]*name[ \t\r\n]*=[ \t\r\n]*\"!--#form[ \t\r\n]+rowselect[ \t\r\n]*--\"[^>]*>",                                        PRegularExpression::Extended|PRegularExpression::IgnoreCase);    static PRegularExpression SelEndRegEx("</select[^>]*>",                                          PRegularExpression::Extended|PRegularExpression::IgnoreCase);    PINDEX begin, end;    while (FindSpliceBlock(SelectRow, SelEndRegEx, text, 0, pos, len, begin, end)) {      PStringList options = GetArrayControlOptions(fld, fields.GetSize()-1, orderedArray);      AdjustSelectOptions(text, begin, end, options[0], options, finish);      static PRegularExpression RowSelect("!--#form[ \t\r\n]+rowselect[ \t\r\n]*--",                                          PRegularExpression::Extended|PRegularExpression::IgnoreCase);      if (text.FindRegEx(RowSelect, pos, len, pos, begin))        SpliceAdjust(fields[fld].GetName() + ArrayControlBox, text, pos, len, finish);    }    finalFinish += finish - origFinish;    if (fld > 0) {      text.Splice(original, start, 0);      finish = origFinish;      finalFinish += finish - start;    }  }  finish = finalFinish;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -